* callback.h: Include "bfd.h".
[deliverable/binutils-gdb.git] / sim / frv / sem.c
CommitLineData
b34f6357
DB
1/* Simulator instruction semantics for frvbf.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
45aa12b4 5Copyright 1996-2004 Free Software Foundation, Inc.
b34f6357
DB
6
7This file is part of the GNU simulators.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License along
20with this program; if not, write to the Free Software Foundation, Inc.,
2159 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#define WANT_CPU frvbf
26#define WANT_CPU_FRVBF
27
28#include "sim-main.h"
29#include "cgen-mem.h"
30#include "cgen-ops.h"
31
32#undef GET_ATTR
33#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
34#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
35#else
36#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_/**/attr)
37#endif
38
39/* This is used so that we can compile two copies of the semantic code,
40 one with full feature support and one without that runs fast(er).
41 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
42#if FAST_P
43#define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
44#undef TRACE_RESULT
45#define TRACE_RESULT(cpu, abuf, name, type, val)
46#else
47#define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
48#endif
49
50/* x-invalid: --invalid-- */
51
52static SEM_PC
53SEM_FN_NAME (frvbf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
54{
55#define FLD(f) abuf->fields.fmt_empty.f
56 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
57 int UNUSED written = 0;
58 IADDR UNUSED pc = abuf->addr;
59 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
60
61 {
62 /* Update the recorded pc in the cpu state struct.
63 Only necessary for WITH_SCACHE case, but to avoid the
64 conditional compilation .... */
65 SET_H_PC (pc);
66 /* Virtual insns have zero size. Overwrite vpc with address of next insn
67 using the default-insn-bitsize spec. When executing insns in parallel
68 we may want to queue the fault and continue execution. */
69 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
70 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
71 }
72
73 return vpc;
74#undef FLD
75}
76
77/* x-after: --after-- */
78
79static SEM_PC
80SEM_FN_NAME (frvbf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
81{
82#define FLD(f) abuf->fields.fmt_empty.f
83 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
84 int UNUSED written = 0;
85 IADDR UNUSED pc = abuf->addr;
86 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
87
88 {
89#if WITH_SCACHE_PBB_FRVBF
90 frvbf_pbb_after (current_cpu, sem_arg);
91#endif
92 }
93
94 return vpc;
95#undef FLD
96}
97
98/* x-before: --before-- */
99
100static SEM_PC
101SEM_FN_NAME (frvbf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
102{
103#define FLD(f) abuf->fields.fmt_empty.f
104 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
105 int UNUSED written = 0;
106 IADDR UNUSED pc = abuf->addr;
107 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
108
109 {
110#if WITH_SCACHE_PBB_FRVBF
111 frvbf_pbb_before (current_cpu, sem_arg);
112#endif
113 }
114
115 return vpc;
116#undef FLD
117}
118
119/* x-cti-chain: --cti-chain-- */
120
121static SEM_PC
122SEM_FN_NAME (frvbf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
123{
124#define FLD(f) abuf->fields.fmt_empty.f
125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
126 int UNUSED written = 0;
127 IADDR UNUSED pc = abuf->addr;
128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
129
130 {
131#if WITH_SCACHE_PBB_FRVBF
132#ifdef DEFINE_SWITCH
133 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
134 pbb_br_type, pbb_br_npc);
135 BREAK (sem);
136#else
137 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
138 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
139 CPU_PBB_BR_TYPE (current_cpu),
140 CPU_PBB_BR_NPC (current_cpu));
141#endif
142#endif
143 }
144
145 return vpc;
146#undef FLD
147}
148
149/* x-chain: --chain-- */
150
151static SEM_PC
152SEM_FN_NAME (frvbf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
153{
154#define FLD(f) abuf->fields.fmt_empty.f
155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
156 int UNUSED written = 0;
157 IADDR UNUSED pc = abuf->addr;
158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
159
160 {
161#if WITH_SCACHE_PBB_FRVBF
162 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
163#ifdef DEFINE_SWITCH
164 BREAK (sem);
165#endif
166#endif
167 }
168
169 return vpc;
170#undef FLD
171}
172
173/* x-begin: --begin-- */
174
175static SEM_PC
176SEM_FN_NAME (frvbf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
177{
178#define FLD(f) abuf->fields.fmt_empty.f
179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
180 int UNUSED written = 0;
181 IADDR UNUSED pc = abuf->addr;
182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
183
184 {
185#if WITH_SCACHE_PBB_FRVBF
186#if defined DEFINE_SWITCH || defined FAST_P
187 /* In the switch case FAST_P is a constant, allowing several optimizations
188 in any called inline functions. */
189 vpc = frvbf_pbb_begin (current_cpu, FAST_P);
190#else
191#if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
192 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
193#else
194 vpc = frvbf_pbb_begin (current_cpu, 0);
195#endif
196#endif
197#endif
198 }
199
200 return vpc;
201#undef FLD
202}
203
204/* add: add$pack $GRi,$GRj,$GRk */
205
206static SEM_PC
207SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
208{
209#define FLD(f) abuf->fields.sfmt_addcc.f
210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
211 int UNUSED written = 0;
212 IADDR UNUSED pc = abuf->addr;
213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
214
215 {
216 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
217 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
218 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
219 }
220
221 return vpc;
222#undef FLD
223}
224
225/* sub: sub$pack $GRi,$GRj,$GRk */
226
227static SEM_PC
228SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
229{
230#define FLD(f) abuf->fields.sfmt_addcc.f
231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
232 int UNUSED written = 0;
233 IADDR UNUSED pc = abuf->addr;
234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
235
236 {
237 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
238 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
239 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
240 }
241
242 return vpc;
243#undef FLD
244}
245
246/* and: and$pack $GRi,$GRj,$GRk */
247
248static SEM_PC
249SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
250{
251#define FLD(f) abuf->fields.sfmt_addcc.f
252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
253 int UNUSED written = 0;
254 IADDR UNUSED pc = abuf->addr;
255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
256
257 {
258 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
259 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
260 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
261 }
262
263 return vpc;
264#undef FLD
265}
266
267/* or: or$pack $GRi,$GRj,$GRk */
268
269static SEM_PC
270SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
271{
272#define FLD(f) abuf->fields.sfmt_addcc.f
273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
274 int UNUSED written = 0;
275 IADDR UNUSED pc = abuf->addr;
276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
277
278 {
279 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
280 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
281 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
282 }
283
284 return vpc;
285#undef FLD
286}
287
288/* xor: xor$pack $GRi,$GRj,$GRk */
289
290static SEM_PC
291SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
292{
293#define FLD(f) abuf->fields.sfmt_addcc.f
294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
295 int UNUSED written = 0;
296 IADDR UNUSED pc = abuf->addr;
297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
298
299 {
300 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
301 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
302 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
303 }
304
305 return vpc;
306#undef FLD
307}
308
309/* not: not$pack $GRj,$GRk */
310
311static SEM_PC
312SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
313{
e930b1f5 314#define FLD(f) abuf->fields.sfmt_scutss.f
b34f6357
DB
315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
316 int UNUSED written = 0;
317 IADDR UNUSED pc = abuf->addr;
318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
319
320 {
321 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
322 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
323 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
324 }
325
326 return vpc;
327#undef FLD
328}
329
330/* sdiv: sdiv$pack $GRi,$GRj,$GRk */
331
332static SEM_PC
333SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
334{
335#define FLD(f) abuf->fields.sfmt_addcc.f
336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
337 int UNUSED written = 0;
338 IADDR UNUSED pc = abuf->addr;
339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
340
341{
342frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
343; /*clobber*/
344}
345
346 return vpc;
347#undef FLD
348}
349
350/* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
351
352static SEM_PC
353SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
354{
355#define FLD(f) abuf->fields.sfmt_addcc.f
356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
357 int UNUSED written = 0;
358 IADDR UNUSED pc = abuf->addr;
359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
360
361{
362frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
363; /*clobber*/
364}
365
366 return vpc;
367#undef FLD
368}
369
370/* udiv: udiv$pack $GRi,$GRj,$GRk */
371
372static SEM_PC
373SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
374{
375#define FLD(f) abuf->fields.sfmt_addcc.f
376 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
377 int UNUSED written = 0;
378 IADDR UNUSED pc = abuf->addr;
379 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
380
381{
382frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
383; /*clobber*/
384}
385
386 return vpc;
387#undef FLD
388}
389
390/* nudiv: nudiv$pack $GRi,$GRj,$GRk */
391
392static SEM_PC
393SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
394{
395#define FLD(f) abuf->fields.sfmt_addcc.f
396 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
397 int UNUSED written = 0;
398 IADDR UNUSED pc = abuf->addr;
399 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
400
401{
402frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
403; /*clobber*/
404}
405
406 return vpc;
407#undef FLD
408}
409
410/* smul: smul$pack $GRi,$GRj,$GRdoublek */
411
412static SEM_PC
413SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
414{
415#define FLD(f) abuf->fields.sfmt_smulcc.f
416 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
417 int UNUSED written = 0;
418 IADDR UNUSED pc = abuf->addr;
419 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
420
421 {
422 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
423 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
424 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
425 }
426
427 return vpc;
428#undef FLD
429}
430
431/* umul: umul$pack $GRi,$GRj,$GRdoublek */
432
433static SEM_PC
434SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
435{
436#define FLD(f) abuf->fields.sfmt_smulcc.f
437 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
438 int UNUSED written = 0;
439 IADDR UNUSED pc = abuf->addr;
440 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
441
442 {
443 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
444 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
445 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
446 }
447
448 return vpc;
449#undef FLD
450}
451
e930b1f5
DB
452/* smu: smu$pack $GRi,$GRj */
453
454static SEM_PC
455SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
456{
457#define FLD(f) abuf->fields.sfmt_smass.f
458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
459 int UNUSED written = 0;
460 IADDR UNUSED pc = abuf->addr;
461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
462
463 {
464 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
465 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
466 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
467 }
468
469 return vpc;
470#undef FLD
471}
472
473/* smass: smass$pack $GRi,$GRj */
474
475static SEM_PC
476SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
477{
478#define FLD(f) abuf->fields.sfmt_smass.f
479 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
480 int UNUSED written = 0;
481 IADDR UNUSED pc = abuf->addr;
482 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
483
484 {
485 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 (9223372036854775807, 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 (9223372036854775808, 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))))));
486 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
487 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
488 }
489
490 return vpc;
491#undef FLD
492}
493
494/* smsss: smsss$pack $GRi,$GRj */
495
496static SEM_PC
497SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
498{
499#define FLD(f) abuf->fields.sfmt_smass.f
500 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
501 int UNUSED written = 0;
502 IADDR UNUSED pc = abuf->addr;
503 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
504
505 {
506 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 (9223372036854775807, 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 (9223372036854775808, 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))))));
507 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
508 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
509 }
510
511 return vpc;
512#undef FLD
513}
514
b34f6357
DB
515/* sll: sll$pack $GRi,$GRj,$GRk */
516
517static SEM_PC
518SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
519{
520#define FLD(f) abuf->fields.sfmt_addcc.f
521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
522 int UNUSED written = 0;
523 IADDR UNUSED pc = abuf->addr;
524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
525
526 {
527 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
528 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
529 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
530 }
531
532 return vpc;
533#undef FLD
534}
535
536/* srl: srl$pack $GRi,$GRj,$GRk */
537
538static SEM_PC
539SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
540{
541#define FLD(f) abuf->fields.sfmt_addcc.f
542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
543 int UNUSED written = 0;
544 IADDR UNUSED pc = abuf->addr;
545 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
546
547 {
548 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
549 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
550 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
551 }
552
553 return vpc;
554#undef FLD
555}
556
557/* sra: sra$pack $GRi,$GRj,$GRk */
558
559static SEM_PC
560SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
561{
562#define FLD(f) abuf->fields.sfmt_addcc.f
563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
564 int UNUSED written = 0;
565 IADDR UNUSED pc = abuf->addr;
566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
567
568 {
569 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
570 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
571 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
572 }
573
574 return vpc;
575#undef FLD
576}
577
e930b1f5
DB
578/* slass: slass$pack $GRi,$GRj,$GRk */
579
580static SEM_PC
581SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
582{
583#define FLD(f) abuf->fields.sfmt_addcc.f
584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
585 int UNUSED written = 0;
586 IADDR UNUSED pc = abuf->addr;
587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
588
589 {
590 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
591 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
592 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
593 }
594
595 return vpc;
596#undef FLD
597}
598
599/* scutss: scutss$pack $GRj,$GRk */
600
601static SEM_PC
602SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
603{
604#define FLD(f) abuf->fields.sfmt_scutss.f
605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
606 int UNUSED written = 0;
607 IADDR UNUSED pc = abuf->addr;
608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
609
610 {
611 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
612 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
613 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
614 }
615
616 return vpc;
617#undef FLD
618}
619
b34f6357
DB
620/* scan: scan$pack $GRi,$GRj,$GRk */
621
622static SEM_PC
623SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
624{
625#define FLD(f) abuf->fields.sfmt_addcc.f
626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
627 int UNUSED written = 0;
628 IADDR UNUSED pc = abuf->addr;
629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
630
631{
632 SI tmp_tmp1;
633 SI tmp_tmp2;
634 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
635 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
636 {
637 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
638 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
639 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
640 }
641}
642
643 return vpc;
644#undef FLD
645}
646
647/* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
648
649static SEM_PC
650SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
651{
652#define FLD(f) abuf->fields.sfmt_cswap.f
653 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
654 int UNUSED written = 0;
655 IADDR UNUSED pc = abuf->addr;
656 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
657
658if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
659 {
660 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
661 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
662 written |= (1 << 4);
663 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
664 }
665}
666
667 abuf->written = written;
668 return vpc;
669#undef FLD
670}
671
672/* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
673
674static SEM_PC
675SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
676{
677#define FLD(f) abuf->fields.sfmt_cswap.f
678 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
679 int UNUSED written = 0;
680 IADDR UNUSED pc = abuf->addr;
681 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
682
683if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
684 {
685 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
686 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
687 written |= (1 << 4);
688 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
689 }
690}
691
692 abuf->written = written;
693 return vpc;
694#undef FLD
695}
696
697/* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
698
699static SEM_PC
700SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
701{
702#define FLD(f) abuf->fields.sfmt_cswap.f
703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
704 int UNUSED written = 0;
705 IADDR UNUSED pc = abuf->addr;
706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
707
708if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
709 {
710 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
711 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
712 written |= (1 << 4);
713 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
714 }
715}
716
717 abuf->written = written;
718 return vpc;
719#undef FLD
720}
721
722/* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
723
724static SEM_PC
725SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
726{
727#define FLD(f) abuf->fields.sfmt_cswap.f
728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
729 int UNUSED written = 0;
730 IADDR UNUSED pc = abuf->addr;
731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
732
733if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
734 {
735 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
736 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
737 written |= (1 << 4);
738 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
739 }
740}
741
742 abuf->written = written;
743 return vpc;
744#undef FLD
745}
746
747/* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
748
749static SEM_PC
750SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
751{
752#define FLD(f) abuf->fields.sfmt_cswap.f
753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
754 int UNUSED written = 0;
755 IADDR UNUSED pc = abuf->addr;
756 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
757
758if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
759 {
760 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
761 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
762 written |= (1 << 4);
763 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
764 }
765}
766
767 abuf->written = written;
768 return vpc;
769#undef FLD
770}
771
772/* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
773
774static SEM_PC
775SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
776{
777#define FLD(f) abuf->fields.sfmt_cswap.f
778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
779 int UNUSED written = 0;
780 IADDR UNUSED pc = abuf->addr;
781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
782
783if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
784 {
785 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
786 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
787 written |= (1 << 3);
788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
789 }
790}
791
792 abuf->written = written;
793 return vpc;
794#undef FLD
795}
796
797/* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
798
799static SEM_PC
800SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
801{
802#define FLD(f) abuf->fields.sfmt_clddu.f
803 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
804 int UNUSED written = 0;
805 IADDR UNUSED pc = abuf->addr;
806 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
807
808if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
809 {
810 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
811 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
812 written |= (1 << 4);
813 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
814 }
815}
816
817 abuf->written = written;
818 return vpc;
819#undef FLD
820}
821
822/* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
823
824static SEM_PC
825SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
826{
827#define FLD(f) abuf->fields.sfmt_cswap.f
828 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
829 int UNUSED written = 0;
830 IADDR UNUSED pc = abuf->addr;
831 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
832
833if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
834{
835frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
836; /*clobber*/
837}
838}
839
840 abuf->written = written;
841 return vpc;
842#undef FLD
843}
844
845/* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
846
847static SEM_PC
848SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
849{
850#define FLD(f) abuf->fields.sfmt_cswap.f
851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
852 int UNUSED written = 0;
853 IADDR UNUSED pc = abuf->addr;
854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
855
856if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
857{
858frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
859; /*clobber*/
860}
861}
862
863 abuf->written = written;
864 return vpc;
865#undef FLD
866}
867
868/* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
869
870static SEM_PC
871SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
872{
873#define FLD(f) abuf->fields.sfmt_cswap.f
874 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
875 int UNUSED written = 0;
876 IADDR UNUSED pc = abuf->addr;
877 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
878
879if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
880 {
881 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
882 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
883 written |= (1 << 4);
884 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
885 }
886}
887
888 abuf->written = written;
889 return vpc;
890#undef FLD
891}
892
893/* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
894
895static SEM_PC
896SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
897{
898#define FLD(f) abuf->fields.sfmt_cswap.f
899 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
900 int UNUSED written = 0;
901 IADDR UNUSED pc = abuf->addr;
902 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
903
904if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
905 {
906 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
907 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
908 written |= (1 << 4);
909 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
910 }
911}
912
913 abuf->written = written;
914 return vpc;
915#undef FLD
916}
917
918/* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
919
920static SEM_PC
921SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
922{
923#define FLD(f) abuf->fields.sfmt_cswap.f
924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
925 int UNUSED written = 0;
926 IADDR UNUSED pc = abuf->addr;
927 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
928
929if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
930 {
931 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
932 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
933 written |= (1 << 4);
934 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
935 }
936}
937
938 abuf->written = written;
939 return vpc;
940#undef FLD
941}
942
943/* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
944
945static SEM_PC
946SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
947{
948#define FLD(f) abuf->fields.sfmt_cswap.f
949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
950 int UNUSED written = 0;
951 IADDR UNUSED pc = abuf->addr;
952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
953
954if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
955{
956 SI tmp_tmp1;
957 SI tmp_tmp2;
958 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
959 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
960 {
961 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
962 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
963 written |= (1 << 4);
964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
965 }
966}
967}
968
969 abuf->written = written;
970 return vpc;
971#undef FLD
972}
973
974/* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
975
976static SEM_PC
977SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
978{
979#define FLD(f) abuf->fields.sfmt_addcc.f
980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
981 int UNUSED written = 0;
982 IADDR UNUSED pc = abuf->addr;
983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
984
985{
986 BI tmp_tmp;
987 QI tmp_cc;
988 SI tmp_result;
989 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
990 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
991if (EQBI (tmp_tmp, 0)) {
992 tmp_cc = ANDQI (tmp_cc, 13);
993} else {
994 tmp_cc = ORQI (tmp_cc, 2);
995}
996 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
997if (EQBI (tmp_tmp, 0)) {
998 tmp_cc = ANDQI (tmp_cc, 14);
999} else {
1000 tmp_cc = ORQI (tmp_cc, 1);
1001}
1002 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1003if (EQSI (tmp_result, 0)) {
1004 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1005} else {
1006if (LTSI (tmp_result, 0)) {
1007 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1008} else {
1009 tmp_cc = ANDQI (tmp_cc, 3);
1010}
1011}
1012 {
1013 SI opval = tmp_result;
1014 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1015 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1016 }
1017 {
1018 UQI opval = tmp_cc;
1019 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1020 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1021 }
1022}
1023
1024 return vpc;
1025#undef FLD
1026}
1027
1028/* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1029
1030static SEM_PC
1031SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1032{
1033#define FLD(f) abuf->fields.sfmt_addcc.f
1034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1035 int UNUSED written = 0;
1036 IADDR UNUSED pc = abuf->addr;
1037 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1038
1039{
1040 BI tmp_tmp;
1041 QI tmp_cc;
1042 SI tmp_result;
1043 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1044 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1045if (EQBI (tmp_tmp, 0)) {
1046 tmp_cc = ANDQI (tmp_cc, 13);
1047} else {
1048 tmp_cc = ORQI (tmp_cc, 2);
1049}
1050 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1051if (EQBI (tmp_tmp, 0)) {
1052 tmp_cc = ANDQI (tmp_cc, 14);
1053} else {
1054 tmp_cc = ORQI (tmp_cc, 1);
1055}
1056 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1057if (EQSI (tmp_result, 0)) {
1058 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1059} else {
1060if (LTSI (tmp_result, 0)) {
1061 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1062} else {
1063 tmp_cc = ANDQI (tmp_cc, 3);
1064}
1065}
1066 {
1067 SI opval = tmp_result;
1068 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1069 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1070 }
1071 {
1072 UQI opval = tmp_cc;
1073 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1074 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1075 }
1076}
1077
1078 return vpc;
1079#undef FLD
1080}
1081
1082/* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1083
1084static SEM_PC
1085SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1086{
1087#define FLD(f) abuf->fields.sfmt_addcc.f
1088 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1089 int UNUSED written = 0;
1090 IADDR UNUSED pc = abuf->addr;
1091 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1092
1093{
1094 SI tmp_tmp;
1095 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1096 {
1097 SI opval = tmp_tmp;
1098 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1099 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1100 }
1101if (EQSI (tmp_tmp, 0)) {
1102 {
1103 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1104 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1105 written |= (1 << 4);
1106 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1107 }
1108} else {
1109if (LTSI (tmp_tmp, 0)) {
1110 {
1111 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1112 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1113 written |= (1 << 4);
1114 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1115 }
1116} else {
1117 {
1118 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1119 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1120 written |= (1 << 4);
1121 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1122 }
1123}
1124}
1125}
1126
1127 abuf->written = written;
1128 return vpc;
1129#undef FLD
1130}
1131
1132/* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1133
1134static SEM_PC
1135SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1136{
1137#define FLD(f) abuf->fields.sfmt_addcc.f
1138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1139 int UNUSED written = 0;
1140 IADDR UNUSED pc = abuf->addr;
1141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1142
1143{
1144 SI tmp_tmp;
1145 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1146 {
1147 SI opval = tmp_tmp;
1148 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1149 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1150 }
1151if (EQSI (tmp_tmp, 0)) {
1152 {
1153 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1154 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1155 written |= (1 << 4);
1156 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1157 }
1158} else {
1159if (LTSI (tmp_tmp, 0)) {
1160 {
1161 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1162 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1163 written |= (1 << 4);
1164 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1165 }
1166} else {
1167 {
1168 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1169 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1170 written |= (1 << 4);
1171 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1172 }
1173}
1174}
1175}
1176
1177 abuf->written = written;
1178 return vpc;
1179#undef FLD
1180}
1181
1182/* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1183
1184static SEM_PC
1185SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1186{
1187#define FLD(f) abuf->fields.sfmt_addcc.f
1188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1189 int UNUSED written = 0;
1190 IADDR UNUSED pc = abuf->addr;
1191 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1192
1193{
1194 SI tmp_tmp;
1195 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1196 {
1197 SI opval = tmp_tmp;
1198 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1199 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1200 }
1201if (EQSI (tmp_tmp, 0)) {
1202 {
1203 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1204 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1205 written |= (1 << 4);
1206 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1207 }
1208} else {
1209if (LTSI (tmp_tmp, 0)) {
1210 {
1211 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1212 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1213 written |= (1 << 4);
1214 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1215 }
1216} else {
1217 {
1218 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1219 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1220 written |= (1 << 4);
1221 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1222 }
1223}
1224}
1225}
1226
1227 abuf->written = written;
1228 return vpc;
1229#undef FLD
1230}
1231
1232/* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1233
1234static SEM_PC
1235SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1236{
1237#define FLD(f) abuf->fields.sfmt_addcc.f
1238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1239 int UNUSED written = 0;
1240 IADDR UNUSED pc = abuf->addr;
1241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1242
1243{
1244 SI tmp_shift;
1245 SI tmp_tmp;
1246 QI tmp_cc;
1247 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1248 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)]));
1249 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1250 {
1251 SI opval = tmp_tmp;
1252 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1253 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1254 }
1255if (EQSI (tmp_tmp, 0)) {
1256 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1257} else {
1258if (LTSI (tmp_tmp, 0)) {
1259 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1260} else {
1261 tmp_cc = ANDQI (tmp_cc, 3);
1262}
1263}
1264 {
1265 UQI opval = tmp_cc;
1266 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1267 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1268 }
1269}
1270
1271 return vpc;
1272#undef FLD
1273}
1274
1275/* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1276
1277static SEM_PC
1278SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1279{
1280#define FLD(f) abuf->fields.sfmt_addcc.f
1281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1282 int UNUSED written = 0;
1283 IADDR UNUSED pc = abuf->addr;
1284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1285
1286{
1287 SI tmp_shift;
1288 SI tmp_tmp;
1289 QI tmp_cc;
1290 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1291 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)]));
1292 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1293 {
1294 SI opval = tmp_tmp;
1295 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1296 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1297 }
1298if (EQSI (tmp_tmp, 0)) {
1299 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1300} else {
1301if (LTSI (tmp_tmp, 0)) {
1302 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1303} else {
1304 tmp_cc = ANDQI (tmp_cc, 3);
1305}
1306}
1307 {
1308 UQI opval = tmp_cc;
1309 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1310 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1311 }
1312}
1313
1314 return vpc;
1315#undef FLD
1316}
1317
1318/* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1319
1320static SEM_PC
1321SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1322{
1323#define FLD(f) abuf->fields.sfmt_addcc.f
1324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1325 int UNUSED written = 0;
1326 IADDR UNUSED pc = abuf->addr;
1327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1328
1329{
1330 SI tmp_shift;
1331 SI tmp_tmp;
1332 QI tmp_cc;
1333 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1334 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)]));
1335 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1336 {
1337 SI opval = tmp_tmp;
1338 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1339 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1340 }
1341if (EQSI (tmp_tmp, 0)) {
1342 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1343} else {
1344if (LTSI (tmp_tmp, 0)) {
1345 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1346} else {
1347 tmp_cc = ANDQI (tmp_cc, 3);
1348}
1349}
1350 {
1351 UQI opval = tmp_cc;
1352 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1353 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1354 }
1355}
1356
1357 return vpc;
1358#undef FLD
1359}
1360
1361/* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1362
1363static SEM_PC
1364SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1365{
1366#define FLD(f) abuf->fields.sfmt_smulcc.f
1367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1368 int UNUSED written = 0;
1369 IADDR UNUSED pc = abuf->addr;
1370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1371
1372{
1373 DI tmp_tmp;
1374 QI tmp_cc;
1375 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1376 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1377if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1378 tmp_cc = ANDQI (tmp_cc, 7);
1379} else {
1380 tmp_cc = ORQI (tmp_cc, 8);
1381}
1382if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1383 tmp_cc = ANDQI (tmp_cc, 11);
1384} else {
1385 tmp_cc = ORQI (tmp_cc, 4);
1386}
1387 {
1388 DI opval = tmp_tmp;
1389 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1390 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1391 }
1392 {
1393 UQI opval = tmp_cc;
1394 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1395 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1396 }
1397}
1398
1399 return vpc;
1400#undef FLD
1401}
1402
1403/* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1404
1405static SEM_PC
1406SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1407{
1408#define FLD(f) abuf->fields.sfmt_smulcc.f
1409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1410 int UNUSED written = 0;
1411 IADDR UNUSED pc = abuf->addr;
1412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1413
1414{
1415 DI tmp_tmp;
1416 QI tmp_cc;
1417 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1418 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1419if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1420 tmp_cc = ANDQI (tmp_cc, 7);
1421} else {
1422 tmp_cc = ORQI (tmp_cc, 8);
1423}
1424if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1425 tmp_cc = ANDQI (tmp_cc, 11);
1426} else {
1427 tmp_cc = ORQI (tmp_cc, 4);
1428}
1429 {
1430 DI opval = tmp_tmp;
1431 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1432 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1433 }
1434 {
1435 UQI opval = tmp_cc;
1436 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1437 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1438 }
1439}
1440
1441 return vpc;
1442#undef FLD
1443}
1444
1445/* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1446
1447static SEM_PC
1448SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1449{
1450#define FLD(f) abuf->fields.sfmt_caddcc.f
1451 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1452 int UNUSED written = 0;
1453 IADDR UNUSED pc = abuf->addr;
1454 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1455
1456if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1457{
1458 BI tmp_tmp;
1459 QI tmp_cc;
1460 SI tmp_result;
1461 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1462 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1463if (EQBI (tmp_tmp, 0)) {
1464 tmp_cc = ANDQI (tmp_cc, 13);
1465} else {
1466 tmp_cc = ORQI (tmp_cc, 2);
1467}
1468 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1469if (EQBI (tmp_tmp, 0)) {
1470 tmp_cc = ANDQI (tmp_cc, 14);
1471} else {
1472 tmp_cc = ORQI (tmp_cc, 1);
1473}
1474 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1475if (EQSI (tmp_result, 0)) {
1476 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1477} else {
1478if (LTSI (tmp_result, 0)) {
1479 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1480} else {
1481 tmp_cc = ANDQI (tmp_cc, 3);
1482}
1483}
1484 {
1485 SI opval = tmp_result;
1486 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1487 written |= (1 << 6);
1488 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1489 }
1490 {
1491 UQI opval = tmp_cc;
1492 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1493 written |= (1 << 7);
1494 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1495 }
1496}
1497}
1498
1499 abuf->written = written;
1500 return vpc;
1501#undef FLD
1502}
1503
1504/* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1505
1506static SEM_PC
1507SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1508{
1509#define FLD(f) abuf->fields.sfmt_caddcc.f
1510 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1511 int UNUSED written = 0;
1512 IADDR UNUSED pc = abuf->addr;
1513 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1514
1515if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1516{
1517 BI tmp_tmp;
1518 QI tmp_cc;
1519 SI tmp_result;
1520 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1521 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1522if (EQBI (tmp_tmp, 0)) {
1523 tmp_cc = ANDQI (tmp_cc, 13);
1524} else {
1525 tmp_cc = ORQI (tmp_cc, 2);
1526}
1527 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1528if (EQBI (tmp_tmp, 0)) {
1529 tmp_cc = ANDQI (tmp_cc, 14);
1530} else {
1531 tmp_cc = ORQI (tmp_cc, 1);
1532}
1533 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1534if (EQSI (tmp_result, 0)) {
1535 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1536} else {
1537if (LTSI (tmp_result, 0)) {
1538 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1539} else {
1540 tmp_cc = ANDQI (tmp_cc, 3);
1541}
1542}
1543 {
1544 SI opval = tmp_result;
1545 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1546 written |= (1 << 6);
1547 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1548 }
1549 {
1550 UQI opval = tmp_cc;
1551 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1552 written |= (1 << 7);
1553 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1554 }
1555}
1556}
1557
1558 abuf->written = written;
1559 return vpc;
1560#undef FLD
1561}
1562
1563/* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1564
1565static SEM_PC
1566SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1567{
1568#define FLD(f) abuf->fields.sfmt_csmulcc.f
1569 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1570 int UNUSED written = 0;
1571 IADDR UNUSED pc = abuf->addr;
1572 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1573
1574if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1575{
1576 DI tmp_tmp;
1577 QI tmp_cc;
1578 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1579 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1580if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1581 tmp_cc = ANDQI (tmp_cc, 7);
1582} else {
1583 tmp_cc = ORQI (tmp_cc, 8);
1584}
1585if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1586 tmp_cc = ANDQI (tmp_cc, 11);
1587} else {
1588 tmp_cc = ORQI (tmp_cc, 4);
1589}
1590 {
1591 DI opval = tmp_tmp;
1592 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1593 written |= (1 << 6);
1594 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1595 }
1596 {
1597 UQI opval = tmp_cc;
1598 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1599 written |= (1 << 7);
1600 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1601 }
1602}
1603}
1604
1605 abuf->written = written;
1606 return vpc;
1607#undef FLD
1608}
1609
1610/* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1611
1612static SEM_PC
1613SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1614{
1615#define FLD(f) abuf->fields.sfmt_caddcc.f
1616 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1617 int UNUSED written = 0;
1618 IADDR UNUSED pc = abuf->addr;
1619 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1620
1621if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1622{
1623 SI tmp_tmp;
1624 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1625 {
1626 SI opval = tmp_tmp;
1627 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1628 written |= (1 << 6);
1629 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1630 }
1631if (EQSI (tmp_tmp, 0)) {
1632 {
1633 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1634 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1635 written |= (1 << 7);
1636 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1637 }
1638} else {
1639if (LTSI (tmp_tmp, 0)) {
1640 {
1641 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1642 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1643 written |= (1 << 7);
1644 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1645 }
1646} else {
1647 {
1648 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1649 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1650 written |= (1 << 7);
1651 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1652 }
1653}
1654}
1655}
1656}
1657
1658 abuf->written = written;
1659 return vpc;
1660#undef FLD
1661}
1662
1663/* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1664
1665static SEM_PC
1666SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1667{
1668#define FLD(f) abuf->fields.sfmt_caddcc.f
1669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1670 int UNUSED written = 0;
1671 IADDR UNUSED pc = abuf->addr;
1672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1673
1674if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1675{
1676 SI tmp_tmp;
1677 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1678 {
1679 SI opval = tmp_tmp;
1680 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1681 written |= (1 << 6);
1682 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1683 }
1684if (EQSI (tmp_tmp, 0)) {
1685 {
1686 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1687 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1688 written |= (1 << 7);
1689 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1690 }
1691} else {
1692if (LTSI (tmp_tmp, 0)) {
1693 {
1694 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1695 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1696 written |= (1 << 7);
1697 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1698 }
1699} else {
1700 {
1701 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1702 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1703 written |= (1 << 7);
1704 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1705 }
1706}
1707}
1708}
1709}
1710
1711 abuf->written = written;
1712 return vpc;
1713#undef FLD
1714}
1715
1716/* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1717
1718static SEM_PC
1719SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1720{
1721#define FLD(f) abuf->fields.sfmt_caddcc.f
1722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1723 int UNUSED written = 0;
1724 IADDR UNUSED pc = abuf->addr;
1725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1726
1727if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1728{
1729 SI tmp_tmp;
1730 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1731 {
1732 SI opval = tmp_tmp;
1733 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1734 written |= (1 << 6);
1735 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1736 }
1737if (EQSI (tmp_tmp, 0)) {
1738 {
1739 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1740 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1741 written |= (1 << 7);
1742 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1743 }
1744} else {
1745if (LTSI (tmp_tmp, 0)) {
1746 {
1747 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1748 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1749 written |= (1 << 7);
1750 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1751 }
1752} else {
1753 {
1754 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1755 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1756 written |= (1 << 7);
1757 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1758 }
1759}
1760}
1761}
1762}
1763
1764 abuf->written = written;
1765 return vpc;
1766#undef FLD
1767}
1768
1769/* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1770
1771static SEM_PC
1772SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1773{
1774#define FLD(f) abuf->fields.sfmt_caddcc.f
1775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1776 int UNUSED written = 0;
1777 IADDR UNUSED pc = abuf->addr;
1778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1779
1780if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1781{
1782 SI tmp_shift;
1783 SI tmp_tmp;
1784 QI tmp_cc;
1785 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1786 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1787 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1788 {
1789 SI opval = tmp_tmp;
1790 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1791 written |= (1 << 6);
1792 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1793 }
1794if (EQSI (tmp_tmp, 0)) {
1795 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1796} else {
1797if (LTSI (tmp_tmp, 0)) {
1798 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1799} else {
1800 tmp_cc = ANDQI (tmp_cc, 3);
1801}
1802}
1803 {
1804 UQI opval = tmp_cc;
1805 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1806 written |= (1 << 7);
1807 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1808 }
1809}
1810}
1811
1812 abuf->written = written;
1813 return vpc;
1814#undef FLD
1815}
1816
1817/* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1818
1819static SEM_PC
1820SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1821{
1822#define FLD(f) abuf->fields.sfmt_caddcc.f
1823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1824 int UNUSED written = 0;
1825 IADDR UNUSED pc = abuf->addr;
1826 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1827
1828if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1829{
1830 SI tmp_shift;
1831 SI tmp_tmp;
1832 QI tmp_cc;
1833 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1834 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1835 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1836 {
1837 SI opval = tmp_tmp;
1838 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1839 written |= (1 << 6);
1840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1841 }
1842if (EQSI (tmp_tmp, 0)) {
1843 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1844} else {
1845if (LTSI (tmp_tmp, 0)) {
1846 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1847} else {
1848 tmp_cc = ANDQI (tmp_cc, 3);
1849}
1850}
1851 {
1852 UQI opval = tmp_cc;
1853 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1854 written |= (1 << 7);
1855 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1856 }
1857}
1858}
1859
1860 abuf->written = written;
1861 return vpc;
1862#undef FLD
1863}
1864
1865/* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1866
1867static SEM_PC
1868SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1869{
1870#define FLD(f) abuf->fields.sfmt_caddcc.f
1871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1872 int UNUSED written = 0;
1873 IADDR UNUSED pc = abuf->addr;
1874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1875
1876if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1877{
1878 SI tmp_shift;
1879 SI tmp_tmp;
1880 QI tmp_cc;
1881 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1882 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1883 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1884 {
1885 SI opval = tmp_tmp;
1886 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1887 written |= (1 << 6);
1888 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1889 }
1890if (EQSI (tmp_tmp, 0)) {
1891 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1892} else {
1893if (LTSI (tmp_tmp, 0)) {
1894 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1895} else {
1896 tmp_cc = ANDQI (tmp_cc, 3);
1897}
1898}
1899 {
1900 UQI opval = tmp_cc;
1901 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1902 written |= (1 << 7);
1903 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1904 }
1905}
1906}
1907
1908 abuf->written = written;
1909 return vpc;
1910#undef FLD
1911}
1912
1913/* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1914
1915static SEM_PC
1916SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1917{
1918#define FLD(f) abuf->fields.sfmt_addcc.f
1919 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1920 int UNUSED written = 0;
1921 IADDR UNUSED pc = abuf->addr;
1922 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1923
1924 {
1925 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)));
1926 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1927 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1928 }
1929
1930 return vpc;
1931#undef FLD
1932}
1933
1934/* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1935
1936static SEM_PC
1937SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1938{
1939#define FLD(f) abuf->fields.sfmt_addcc.f
1940 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1941 int UNUSED written = 0;
1942 IADDR UNUSED pc = abuf->addr;
1943 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1944
1945 {
1946 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)));
1947 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1948 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1949 }
1950
1951 return vpc;
1952#undef FLD
1953}
1954
1955/* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1956
1957static SEM_PC
1958SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1959{
1960#define FLD(f) abuf->fields.sfmt_addcc.f
1961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1962 int UNUSED written = 0;
1963 IADDR UNUSED pc = abuf->addr;
1964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1965
1966{
1967 SI tmp_tmp;
1968 QI tmp_cc;
1969 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1970 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1971if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1972 tmp_cc = ANDQI (tmp_cc, 13);
1973} else {
1974 tmp_cc = ORQI (tmp_cc, 2);
1975}
1976if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1977 tmp_cc = ANDQI (tmp_cc, 14);
1978} else {
1979 tmp_cc = ORQI (tmp_cc, 1);
1980}
1981if (EQSI (tmp_tmp, 0)) {
1982 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1983} else {
1984if (LTSI (tmp_tmp, 0)) {
1985 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1986} else {
1987 tmp_cc = ANDQI (tmp_cc, 3);
1988}
1989}
1990 {
1991 SI opval = tmp_tmp;
1992 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1993 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1994 }
1995 {
1996 UQI opval = tmp_cc;
1997 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1998 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1999 }
2000}
2001
2002 return vpc;
2003#undef FLD
2004}
2005
2006/* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2007
2008static SEM_PC
2009SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2010{
2011#define FLD(f) abuf->fields.sfmt_addcc.f
2012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2013 int UNUSED written = 0;
2014 IADDR UNUSED pc = abuf->addr;
2015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2016
2017{
2018 SI tmp_tmp;
2019 QI tmp_cc;
2020 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2021 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2022if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2023 tmp_cc = ANDQI (tmp_cc, 13);
2024} else {
2025 tmp_cc = ORQI (tmp_cc, 2);
2026}
2027if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2028 tmp_cc = ANDQI (tmp_cc, 14);
2029} else {
2030 tmp_cc = ORQI (tmp_cc, 1);
2031}
2032if (EQSI (tmp_tmp, 0)) {
2033 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2034} else {
2035if (LTSI (tmp_tmp, 0)) {
2036 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2037} else {
2038 tmp_cc = ANDQI (tmp_cc, 3);
2039}
2040}
2041 {
2042 SI opval = tmp_tmp;
2043 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2044 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2045 }
2046 {
2047 UQI opval = tmp_cc;
2048 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2049 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2050 }
2051}
2052
2053 return vpc;
2054#undef FLD
2055}
2056
e930b1f5
DB
2057/* addss: addss$pack $GRi,$GRj,$GRk */
2058
2059static SEM_PC
2060SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2061{
2062#define FLD(f) abuf->fields.sfmt_addcc.f
2063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2064 int UNUSED written = 0;
2065 IADDR UNUSED pc = abuf->addr;
2066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2067
2068{
2069 {
2070 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2071 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2072 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2073 }
2074if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2075 {
2076 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2077 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2078 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2079 }
2080}
2081}
2082
2083 return vpc;
2084#undef FLD
2085}
2086
2087/* subss: subss$pack $GRi,$GRj,$GRk */
2088
2089static SEM_PC
2090SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2091{
2092#define FLD(f) abuf->fields.sfmt_addcc.f
2093 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2094 int UNUSED written = 0;
2095 IADDR UNUSED pc = abuf->addr;
2096 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2097
2098{
2099 {
2100 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2101 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2102 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2103 }
2104if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2105 {
2106 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2107 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2108 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2109 }
2110}
2111}
2112
2113 return vpc;
2114#undef FLD
2115}
2116
b34f6357
DB
2117/* addi: addi$pack $GRi,$s12,$GRk */
2118
2119static SEM_PC
2120SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2121{
2122#define FLD(f) abuf->fields.sfmt_swapi.f
2123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2124 int UNUSED written = 0;
2125 IADDR UNUSED pc = abuf->addr;
2126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2127
2128 {
2129 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2130 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2131 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2132 }
2133
2134 return vpc;
2135#undef FLD
2136}
2137
2138/* subi: subi$pack $GRi,$s12,$GRk */
2139
2140static SEM_PC
2141SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2142{
2143#define FLD(f) abuf->fields.sfmt_swapi.f
2144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2145 int UNUSED written = 0;
2146 IADDR UNUSED pc = abuf->addr;
2147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2148
2149 {
2150 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2151 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2152 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2153 }
2154
2155 return vpc;
2156#undef FLD
2157}
2158
2159/* andi: andi$pack $GRi,$s12,$GRk */
2160
2161static SEM_PC
2162SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2163{
2164#define FLD(f) abuf->fields.sfmt_swapi.f
2165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2166 int UNUSED written = 0;
2167 IADDR UNUSED pc = abuf->addr;
2168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2169
2170 {
2171 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2172 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2173 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2174 }
2175
2176 return vpc;
2177#undef FLD
2178}
2179
2180/* ori: ori$pack $GRi,$s12,$GRk */
2181
2182static SEM_PC
2183SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2184{
2185#define FLD(f) abuf->fields.sfmt_swapi.f
2186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2187 int UNUSED written = 0;
2188 IADDR UNUSED pc = abuf->addr;
2189 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2190
2191 {
2192 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2193 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2194 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2195 }
2196
2197 return vpc;
2198#undef FLD
2199}
2200
2201/* xori: xori$pack $GRi,$s12,$GRk */
2202
2203static SEM_PC
2204SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2205{
2206#define FLD(f) abuf->fields.sfmt_swapi.f
2207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2208 int UNUSED written = 0;
2209 IADDR UNUSED pc = abuf->addr;
2210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2211
2212 {
2213 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2214 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2215 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2216 }
2217
2218 return vpc;
2219#undef FLD
2220}
2221
2222/* sdivi: sdivi$pack $GRi,$s12,$GRk */
2223
2224static SEM_PC
2225SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2226{
2227#define FLD(f) abuf->fields.sfmt_swapi.f
2228 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2229 int UNUSED written = 0;
2230 IADDR UNUSED pc = abuf->addr;
2231 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2232
2233{
2234frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2235; /*clobber*/
2236}
2237
2238 return vpc;
2239#undef FLD
2240}
2241
2242/* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2243
2244static SEM_PC
2245SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2246{
2247#define FLD(f) abuf->fields.sfmt_swapi.f
2248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2249 int UNUSED written = 0;
2250 IADDR UNUSED pc = abuf->addr;
2251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2252
2253{
2254frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2255; /*clobber*/
2256}
2257
2258 return vpc;
2259#undef FLD
2260}
2261
2262/* udivi: udivi$pack $GRi,$s12,$GRk */
2263
2264static SEM_PC
2265SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2266{
2267#define FLD(f) abuf->fields.sfmt_swapi.f
2268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2269 int UNUSED written = 0;
2270 IADDR UNUSED pc = abuf->addr;
2271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2272
2273{
2274frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2275; /*clobber*/
2276}
2277
2278 return vpc;
2279#undef FLD
2280}
2281
2282/* nudivi: nudivi$pack $GRi,$s12,$GRk */
2283
2284static SEM_PC
2285SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2286{
2287#define FLD(f) abuf->fields.sfmt_swapi.f
2288 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2289 int UNUSED written = 0;
2290 IADDR UNUSED pc = abuf->addr;
2291 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2292
2293{
2294frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2295; /*clobber*/
2296}
2297
2298 return vpc;
2299#undef FLD
2300}
2301
2302/* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2303
2304static SEM_PC
2305SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2306{
2307#define FLD(f) abuf->fields.sfmt_smuli.f
2308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2309 int UNUSED written = 0;
2310 IADDR UNUSED pc = abuf->addr;
2311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2312
2313 {
2314 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2315 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2316 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2317 }
2318
2319 return vpc;
2320#undef FLD
2321}
2322
2323/* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2324
2325static SEM_PC
2326SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2327{
2328#define FLD(f) abuf->fields.sfmt_smuli.f
2329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2330 int UNUSED written = 0;
2331 IADDR UNUSED pc = abuf->addr;
2332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2333
2334 {
2335 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2336 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2337 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2338 }
2339
2340 return vpc;
2341#undef FLD
2342}
2343
2344/* slli: slli$pack $GRi,$s12,$GRk */
2345
2346static SEM_PC
2347SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2348{
2349#define FLD(f) abuf->fields.sfmt_swapi.f
2350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2351 int UNUSED written = 0;
2352 IADDR UNUSED pc = abuf->addr;
2353 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2354
2355 {
2356 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2357 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2358 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2359 }
2360
2361 return vpc;
2362#undef FLD
2363}
2364
2365/* srli: srli$pack $GRi,$s12,$GRk */
2366
2367static SEM_PC
2368SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2369{
2370#define FLD(f) abuf->fields.sfmt_swapi.f
2371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2372 int UNUSED written = 0;
2373 IADDR UNUSED pc = abuf->addr;
2374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2375
2376 {
2377 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2378 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2379 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2380 }
2381
2382 return vpc;
2383#undef FLD
2384}
2385
2386/* srai: srai$pack $GRi,$s12,$GRk */
2387
2388static SEM_PC
2389SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2390{
2391#define FLD(f) abuf->fields.sfmt_swapi.f
2392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2393 int UNUSED written = 0;
2394 IADDR UNUSED pc = abuf->addr;
2395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2396
2397 {
2398 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2399 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2400 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2401 }
2402
2403 return vpc;
2404#undef FLD
2405}
2406
2407/* scani: scani$pack $GRi,$s12,$GRk */
2408
2409static SEM_PC
2410SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2411{
2412#define FLD(f) abuf->fields.sfmt_swapi.f
2413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2414 int UNUSED written = 0;
2415 IADDR UNUSED pc = abuf->addr;
2416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2417
2418{
2419 SI tmp_tmp1;
2420 SI tmp_tmp2;
2421 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2422 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2423 {
2424 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2425 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2426 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2427 }
2428}
2429
2430 return vpc;
2431#undef FLD
2432}
2433
2434/* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2435
2436static SEM_PC
2437SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2438{
2439#define FLD(f) abuf->fields.sfmt_addicc.f
2440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2441 int UNUSED written = 0;
2442 IADDR UNUSED pc = abuf->addr;
2443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2444
2445{
2446 BI tmp_tmp;
2447 QI tmp_cc;
2448 SI tmp_result;
2449 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2450 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2451if (EQBI (tmp_tmp, 0)) {
2452 tmp_cc = ANDQI (tmp_cc, 13);
2453} else {
2454 tmp_cc = ORQI (tmp_cc, 2);
2455}
2456 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2457if (EQBI (tmp_tmp, 0)) {
2458 tmp_cc = ANDQI (tmp_cc, 14);
2459} else {
2460 tmp_cc = ORQI (tmp_cc, 1);
2461}
2462 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2463if (EQSI (tmp_result, 0)) {
2464 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2465} else {
2466if (LTSI (tmp_result, 0)) {
2467 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2468} else {
2469 tmp_cc = ANDQI (tmp_cc, 3);
2470}
2471}
2472 {
2473 SI opval = tmp_result;
2474 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2475 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2476 }
2477 {
2478 UQI opval = tmp_cc;
2479 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2480 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2481 }
2482}
2483
2484 return vpc;
2485#undef FLD
2486}
2487
2488/* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2489
2490static SEM_PC
2491SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2492{
2493#define FLD(f) abuf->fields.sfmt_addicc.f
2494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2495 int UNUSED written = 0;
2496 IADDR UNUSED pc = abuf->addr;
2497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2498
2499{
2500 BI tmp_tmp;
2501 QI tmp_cc;
2502 SI tmp_result;
2503 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2504 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2505if (EQBI (tmp_tmp, 0)) {
2506 tmp_cc = ANDQI (tmp_cc, 13);
2507} else {
2508 tmp_cc = ORQI (tmp_cc, 2);
2509}
2510 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2511if (EQBI (tmp_tmp, 0)) {
2512 tmp_cc = ANDQI (tmp_cc, 14);
2513} else {
2514 tmp_cc = ORQI (tmp_cc, 1);
2515}
2516 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2517if (EQSI (tmp_result, 0)) {
2518 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2519} else {
2520if (LTSI (tmp_result, 0)) {
2521 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2522} else {
2523 tmp_cc = ANDQI (tmp_cc, 3);
2524}
2525}
2526 {
2527 SI opval = tmp_result;
2528 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2529 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2530 }
2531 {
2532 UQI opval = tmp_cc;
2533 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2534 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2535 }
2536}
2537
2538 return vpc;
2539#undef FLD
2540}
2541
2542/* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2543
2544static SEM_PC
2545SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2546{
2547#define FLD(f) abuf->fields.sfmt_addicc.f
2548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2549 int UNUSED written = 0;
2550 IADDR UNUSED pc = abuf->addr;
2551 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2552
2553{
2554 SI tmp_tmp;
2555 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2556 {
2557 SI opval = tmp_tmp;
2558 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2559 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2560 }
2561if (EQSI (tmp_tmp, 0)) {
2562 {
2563 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2564 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2565 written |= (1 << 4);
2566 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2567 }
2568} else {
2569if (LTSI (tmp_tmp, 0)) {
2570 {
2571 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2572 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2573 written |= (1 << 4);
2574 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2575 }
2576} else {
2577 {
2578 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2579 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2580 written |= (1 << 4);
2581 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2582 }
2583}
2584}
2585}
2586
2587 abuf->written = written;
2588 return vpc;
2589#undef FLD
2590}
2591
2592/* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2593
2594static SEM_PC
2595SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2596{
2597#define FLD(f) abuf->fields.sfmt_addicc.f
2598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2599 int UNUSED written = 0;
2600 IADDR UNUSED pc = abuf->addr;
2601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2602
2603{
2604 SI tmp_tmp;
2605 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2606 {
2607 SI opval = tmp_tmp;
2608 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2609 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2610 }
2611if (EQSI (tmp_tmp, 0)) {
2612 {
2613 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2614 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2615 written |= (1 << 4);
2616 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2617 }
2618} else {
2619if (LTSI (tmp_tmp, 0)) {
2620 {
2621 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2622 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2623 written |= (1 << 4);
2624 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2625 }
2626} else {
2627 {
2628 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2629 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2630 written |= (1 << 4);
2631 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2632 }
2633}
2634}
2635}
2636
2637 abuf->written = written;
2638 return vpc;
2639#undef FLD
2640}
2641
2642/* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2643
2644static SEM_PC
2645SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2646{
2647#define FLD(f) abuf->fields.sfmt_addicc.f
2648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2649 int UNUSED written = 0;
2650 IADDR UNUSED pc = abuf->addr;
2651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2652
2653{
2654 SI tmp_tmp;
2655 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2656 {
2657 SI opval = tmp_tmp;
2658 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2659 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2660 }
2661if (EQSI (tmp_tmp, 0)) {
2662 {
2663 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2664 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2665 written |= (1 << 4);
2666 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2667 }
2668} else {
2669if (LTSI (tmp_tmp, 0)) {
2670 {
2671 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2672 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2673 written |= (1 << 4);
2674 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2675 }
2676} else {
2677 {
2678 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2679 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2680 written |= (1 << 4);
2681 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2682 }
2683}
2684}
2685}
2686
2687 abuf->written = written;
2688 return vpc;
2689#undef FLD
2690}
2691
2692/* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2693
2694static SEM_PC
2695SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2696{
2697#define FLD(f) abuf->fields.sfmt_smulicc.f
2698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2699 int UNUSED written = 0;
2700 IADDR UNUSED pc = abuf->addr;
2701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2702
2703{
2704 DI tmp_tmp;
2705 QI tmp_cc;
2706 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2707 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2708if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2709 tmp_cc = ANDQI (tmp_cc, 7);
2710} else {
2711 tmp_cc = ORQI (tmp_cc, 8);
2712}
2713if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2714 tmp_cc = ANDQI (tmp_cc, 11);
2715} else {
2716 tmp_cc = ORQI (tmp_cc, 4);
2717}
2718 {
2719 DI opval = tmp_tmp;
2720 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2721 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2722 }
2723 {
2724 UQI opval = tmp_cc;
2725 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2726 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2727 }
2728}
2729
2730 return vpc;
2731#undef FLD
2732}
2733
2734/* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2735
2736static SEM_PC
2737SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2738{
2739#define FLD(f) abuf->fields.sfmt_smulicc.f
2740 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2741 int UNUSED written = 0;
2742 IADDR UNUSED pc = abuf->addr;
2743 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2744
2745{
2746 DI tmp_tmp;
2747 QI tmp_cc;
2748 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2749 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2750if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2751 tmp_cc = ANDQI (tmp_cc, 7);
2752} else {
2753 tmp_cc = ORQI (tmp_cc, 8);
2754}
2755if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2756 tmp_cc = ANDQI (tmp_cc, 11);
2757} else {
2758 tmp_cc = ORQI (tmp_cc, 4);
2759}
2760 {
2761 DI opval = tmp_tmp;
2762 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2763 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2764 }
2765 {
2766 UQI opval = tmp_cc;
2767 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2768 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2769 }
2770}
2771
2772 return vpc;
2773#undef FLD
2774}
2775
2776/* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2777
2778static SEM_PC
2779SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2780{
2781#define FLD(f) abuf->fields.sfmt_addicc.f
2782 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2783 int UNUSED written = 0;
2784 IADDR UNUSED pc = abuf->addr;
2785 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2786
2787{
2788 SI tmp_shift;
2789 SI tmp_tmp;
2790 QI tmp_cc;
2791 tmp_shift = ANDSI (FLD (f_s10), 31);
2792 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)]));
2793 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2794 {
2795 SI opval = tmp_tmp;
2796 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2797 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2798 }
2799if (EQSI (tmp_tmp, 0)) {
2800 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2801} else {
2802if (LTSI (tmp_tmp, 0)) {
2803 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2804} else {
2805 tmp_cc = ANDQI (tmp_cc, 3);
2806}
2807}
2808 {
2809 UQI opval = tmp_cc;
2810 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2811 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2812 }
2813}
2814
2815 return vpc;
2816#undef FLD
2817}
2818
2819/* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2820
2821static SEM_PC
2822SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2823{
2824#define FLD(f) abuf->fields.sfmt_addicc.f
2825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2826 int UNUSED written = 0;
2827 IADDR UNUSED pc = abuf->addr;
2828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2829
2830{
2831 SI tmp_shift;
2832 SI tmp_tmp;
2833 QI tmp_cc;
2834 tmp_shift = ANDSI (FLD (f_s10), 31);
2835 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)]));
2836 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2837 {
2838 SI opval = tmp_tmp;
2839 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2841 }
2842if (EQSI (tmp_tmp, 0)) {
2843 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2844} else {
2845if (LTSI (tmp_tmp, 0)) {
2846 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2847} else {
2848 tmp_cc = ANDQI (tmp_cc, 3);
2849}
2850}
2851 {
2852 UQI opval = tmp_cc;
2853 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2854 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2855 }
2856}
2857
2858 return vpc;
2859#undef FLD
2860}
2861
2862/* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2863
2864static SEM_PC
2865SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2866{
2867#define FLD(f) abuf->fields.sfmt_addicc.f
2868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2869 int UNUSED written = 0;
2870 IADDR UNUSED pc = abuf->addr;
2871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2872
2873{
2874 SI tmp_shift;
2875 SI tmp_tmp;
2876 QI tmp_cc;
2877 tmp_shift = ANDSI (FLD (f_s10), 31);
2878 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)]));
2879 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2880 {
2881 SI opval = tmp_tmp;
2882 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2883 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2884 }
2885if (EQSI (tmp_tmp, 0)) {
2886 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2887} else {
2888if (LTSI (tmp_tmp, 0)) {
2889 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2890} else {
2891 tmp_cc = ANDQI (tmp_cc, 3);
2892}
2893}
2894 {
2895 UQI opval = tmp_cc;
2896 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2897 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2898 }
2899}
2900
2901 return vpc;
2902#undef FLD
2903}
2904
2905/* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2906
2907static SEM_PC
2908SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2909{
2910#define FLD(f) abuf->fields.sfmt_addicc.f
2911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2912 int UNUSED written = 0;
2913 IADDR UNUSED pc = abuf->addr;
2914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2915
2916 {
2917 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2918 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2919 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2920 }
2921
2922 return vpc;
2923#undef FLD
2924}
2925
2926/* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2927
2928static SEM_PC
2929SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2930{
2931#define FLD(f) abuf->fields.sfmt_addicc.f
2932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2933 int UNUSED written = 0;
2934 IADDR UNUSED pc = abuf->addr;
2935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2936
2937 {
2938 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2940 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2941 }
2942
2943 return vpc;
2944#undef FLD
2945}
2946
2947/* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2948
2949static SEM_PC
2950SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2951{
2952#define FLD(f) abuf->fields.sfmt_addicc.f
2953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2954 int UNUSED written = 0;
2955 IADDR UNUSED pc = abuf->addr;
2956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2957
2958{
2959 SI tmp_tmp;
2960 QI tmp_cc;
2961 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2962 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2963if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2964 tmp_cc = ANDQI (tmp_cc, 13);
2965} else {
2966 tmp_cc = ORQI (tmp_cc, 2);
2967}
2968if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2969 tmp_cc = ANDQI (tmp_cc, 14);
2970} else {
2971 tmp_cc = ORQI (tmp_cc, 1);
2972}
2973if (EQSI (tmp_tmp, 0)) {
2974 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2975} else {
2976if (LTSI (tmp_tmp, 0)) {
2977 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2978} else {
2979 tmp_cc = ANDQI (tmp_cc, 3);
2980}
2981}
2982 {
2983 SI opval = tmp_tmp;
2984 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2986 }
2987 {
2988 UQI opval = tmp_cc;
2989 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2990 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2991 }
2992}
2993
2994 return vpc;
2995#undef FLD
2996}
2997
2998/* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2999
3000static SEM_PC
3001SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3002{
3003#define FLD(f) abuf->fields.sfmt_addicc.f
3004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3005 int UNUSED written = 0;
3006 IADDR UNUSED pc = abuf->addr;
3007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3008
3009{
3010 SI tmp_tmp;
3011 QI tmp_cc;
3012 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3013 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
3014if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3015 tmp_cc = ANDQI (tmp_cc, 13);
3016} else {
3017 tmp_cc = ORQI (tmp_cc, 2);
3018}
3019if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3020 tmp_cc = ANDQI (tmp_cc, 14);
3021} else {
3022 tmp_cc = ORQI (tmp_cc, 1);
3023}
3024if (EQSI (tmp_tmp, 0)) {
3025 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3026} else {
3027if (LTSI (tmp_tmp, 0)) {
3028 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3029} else {
3030 tmp_cc = ANDQI (tmp_cc, 3);
3031}
3032}
3033 {
3034 SI opval = tmp_tmp;
3035 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3036 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3037 }
3038 {
3039 UQI opval = tmp_cc;
3040 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3041 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3042 }
3043}
3044
3045 return vpc;
3046#undef FLD
3047}
3048
3049/* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3050
3051static SEM_PC
3052SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3053{
3054#define FLD(f) abuf->fields.sfmt_smulcc.f
3055 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3056 int UNUSED written = 0;
3057 IADDR UNUSED pc = abuf->addr;
3058 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3059
3060{
3061 QI tmp_cc;
3062if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3063 tmp_cc = ANDQI (tmp_cc, 7);
3064} else {
3065 tmp_cc = ORQI (tmp_cc, 8);
3066}
3067if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3068 tmp_cc = ANDQI (tmp_cc, 11);
3069} else {
3070 tmp_cc = ORQI (tmp_cc, 4);
3071}
3072if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3073 tmp_cc = ANDQI (tmp_cc, 13);
3074} else {
3075 tmp_cc = ORQI (tmp_cc, 2);
3076}
3077if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3078 tmp_cc = ANDQI (tmp_cc, 14);
3079} else {
3080 tmp_cc = ORQI (tmp_cc, 1);
3081}
3082 {
3083 UQI opval = tmp_cc;
3084 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3085 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3086 }
3087}
3088
3089 return vpc;
3090#undef FLD
3091}
3092
3093/* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3094
3095static SEM_PC
3096SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3097{
3098#define FLD(f) abuf->fields.sfmt_smulcc.f
3099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3100 int UNUSED written = 0;
3101 IADDR UNUSED pc = abuf->addr;
3102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3103
3104{
3105 QI tmp_cc;
3106 tmp_cc = 0;
3107if (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)) {
3108 tmp_cc = ANDQI (tmp_cc, 14);
3109} else {
3110 tmp_cc = ORQI (tmp_cc, 1);
3111}
3112 {
3113 UQI opval = tmp_cc;
3114 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3115 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3116 }
3117}
3118
3119 return vpc;
3120#undef FLD
3121}
3122
3123/* setlo: setlo$pack $ulo16,$GRklo */
3124
3125static SEM_PC
3126SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3127{
3128#define FLD(f) abuf->fields.sfmt_setlo.f
3129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3130 int UNUSED written = 0;
3131 IADDR UNUSED pc = abuf->addr;
3132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3133
3134 {
3135 UHI opval = FLD (f_u16);
3136 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3137 TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3138 }
3139
3140 return vpc;
3141#undef FLD
3142}
3143
3144/* sethi: sethi$pack $uhi16,$GRkhi */
3145
3146static SEM_PC
3147SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3148{
3149#define FLD(f) abuf->fields.sfmt_sethi.f
3150 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3151 int UNUSED written = 0;
3152 IADDR UNUSED pc = abuf->addr;
3153 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3154
3155 {
3156 UHI opval = FLD (f_u16);
3157 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3158 TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3159 }
3160
3161 return vpc;
3162#undef FLD
3163}
3164
3165/* setlos: setlos$pack $slo16,$GRk */
3166
3167static SEM_PC
3168SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3169{
3170#define FLD(f) abuf->fields.sfmt_setlos.f
3171 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3172 int UNUSED written = 0;
3173 IADDR UNUSED pc = abuf->addr;
3174 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3175
3176 {
3177 SI opval = FLD (f_s16);
3178 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3179 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3180 }
3181
3182 return vpc;
3183#undef FLD
3184}
3185
3186/* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3187
3188static SEM_PC
3189SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3190{
3191#define FLD(f) abuf->fields.sfmt_addcc.f
3192 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3193 int UNUSED written = 0;
3194 IADDR UNUSED pc = abuf->addr;
3195 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3196
3197 {
3198 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3199 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3200 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3201 }
3202
3203 return vpc;
3204#undef FLD
3205}
3206
3207/* ldub: ldub$pack @($GRi,$GRj),$GRk */
3208
3209static SEM_PC
3210SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3211{
3212#define FLD(f) abuf->fields.sfmt_addcc.f
3213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3214 int UNUSED written = 0;
3215 IADDR UNUSED pc = abuf->addr;
3216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3217
3218 {
3219 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3220 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3221 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3222 }
3223
3224 return vpc;
3225#undef FLD
3226}
3227
3228/* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3229
3230static SEM_PC
3231SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3232{
3233#define FLD(f) abuf->fields.sfmt_addcc.f
3234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3235 int UNUSED written = 0;
3236 IADDR UNUSED pc = abuf->addr;
3237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3238
3239 {
3240 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3241 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3242 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3243 }
3244
3245 return vpc;
3246#undef FLD
3247}
3248
3249/* lduh: lduh$pack @($GRi,$GRj),$GRk */
3250
3251static SEM_PC
3252SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3253{
3254#define FLD(f) abuf->fields.sfmt_addcc.f
3255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3256 int UNUSED written = 0;
3257 IADDR UNUSED pc = abuf->addr;
3258 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3259
3260 {
3261 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3262 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3263 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3264 }
3265
3266 return vpc;
3267#undef FLD
3268}
3269
3270/* ld: ld$pack @($GRi,$GRj),$GRk */
3271
3272static SEM_PC
3273SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3274{
3275#define FLD(f) abuf->fields.sfmt_addcc.f
3276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3277 int UNUSED written = 0;
3278 IADDR UNUSED pc = abuf->addr;
3279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3280
3281 {
3282 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3283 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3284 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3285 }
3286
3287 return vpc;
3288#undef FLD
3289}
3290
3291/* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3292
3293static SEM_PC
3294SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3295{
3296#define FLD(f) abuf->fields.sfmt_cldbfu.f
3297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3298 int UNUSED written = 0;
3299 IADDR UNUSED pc = abuf->addr;
3300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3301
3302 {
3303 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3304 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3305 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3306 }
3307
3308 return vpc;
3309#undef FLD
3310}
3311
3312/* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3313
3314static SEM_PC
3315SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3316{
3317#define FLD(f) abuf->fields.sfmt_cldbfu.f
3318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3319 int UNUSED written = 0;
3320 IADDR UNUSED pc = abuf->addr;
3321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3322
3323 {
3324 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3325 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3326 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3327 }
3328
3329 return vpc;
3330#undef FLD
3331}
3332
3333/* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3334
3335static SEM_PC
3336SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3337{
3338#define FLD(f) abuf->fields.sfmt_cldbfu.f
3339 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3340 int UNUSED written = 0;
3341 IADDR UNUSED pc = abuf->addr;
3342 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3343
3344 {
3345 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3346 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3347 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3348 }
3349
3350 return vpc;
3351#undef FLD
3352}
3353
3354/* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3355
3356static SEM_PC
3357SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3358{
3359#define FLD(f) abuf->fields.sfmt_ldcu.f
3360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3361 int UNUSED written = 0;
3362 IADDR UNUSED pc = abuf->addr;
3363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3364
3365 {
3366 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3367 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3368 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3369 }
3370
3371 return vpc;
3372#undef FLD
3373}
3374
3375/* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3376
3377static SEM_PC
3378SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3379{
3380#define FLD(f) abuf->fields.sfmt_addcc.f
3381 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3382 int UNUSED written = 0;
3383 IADDR UNUSED pc = abuf->addr;
3384 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3385
3386{
3387 BI tmp_do_op;
3388 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3389if (tmp_do_op) {
3390 {
3391 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3392 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3393 written |= (1 << 6);
3394 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3395 }
3396}
3397}
3398
3399 abuf->written = written;
3400 return vpc;
3401#undef FLD
3402}
3403
3404/* nldub: nldub$pack @($GRi,$GRj),$GRk */
3405
3406static SEM_PC
3407SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3408{
3409#define FLD(f) abuf->fields.sfmt_addcc.f
3410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3411 int UNUSED written = 0;
3412 IADDR UNUSED pc = abuf->addr;
3413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3414
3415{
3416 BI tmp_do_op;
3417 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3418if (tmp_do_op) {
3419 {
3420 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3421 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3422 written |= (1 << 6);
3423 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3424 }
3425}
3426}
3427
3428 abuf->written = written;
3429 return vpc;
3430#undef FLD
3431}
3432
3433/* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3434
3435static SEM_PC
3436SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3437{
3438#define FLD(f) abuf->fields.sfmt_addcc.f
3439 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3440 int UNUSED written = 0;
3441 IADDR UNUSED pc = abuf->addr;
3442 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3443
3444{
3445 BI tmp_do_op;
3446 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3447if (tmp_do_op) {
3448 {
3449 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3450 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3451 written |= (1 << 6);
3452 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3453 }
3454}
3455}
3456
3457 abuf->written = written;
3458 return vpc;
3459#undef FLD
3460}
3461
3462/* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3463
3464static SEM_PC
3465SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3466{
3467#define FLD(f) abuf->fields.sfmt_addcc.f
3468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3469 int UNUSED written = 0;
3470 IADDR UNUSED pc = abuf->addr;
3471 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3472
3473{
3474 BI tmp_do_op;
3475 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3476if (tmp_do_op) {
3477 {
3478 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3479 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3480 written |= (1 << 6);
3481 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3482 }
3483}
3484}
3485
3486 abuf->written = written;
3487 return vpc;
3488#undef FLD
3489}
3490
3491/* nld: nld$pack @($GRi,$GRj),$GRk */
3492
3493static SEM_PC
3494SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3495{
3496#define FLD(f) abuf->fields.sfmt_addcc.f
3497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3498 int UNUSED written = 0;
3499 IADDR UNUSED pc = abuf->addr;
3500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3501
3502{
3503 BI tmp_do_op;
3504 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3505if (tmp_do_op) {
3506 {
3507 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3508 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3509 written |= (1 << 6);
3510 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3511 }
3512}
3513}
3514
3515 abuf->written = written;
3516 return vpc;
3517#undef FLD
3518}
3519
3520/* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3521
3522static SEM_PC
3523SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3524{
3525#define FLD(f) abuf->fields.sfmt_cldbfu.f
3526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3527 int UNUSED written = 0;
3528 IADDR UNUSED pc = abuf->addr;
3529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3530
3531{
3532 BI tmp_do_op;
3533 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3534if (tmp_do_op) {
3535 {
3536 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3537 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3538 written |= (1 << 6);
3539 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3540 }
3541}
3542}
3543
3544 abuf->written = written;
3545 return vpc;
3546#undef FLD
3547}
3548
3549/* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3550
3551static SEM_PC
3552SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3553{
3554#define FLD(f) abuf->fields.sfmt_cldbfu.f
3555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3556 int UNUSED written = 0;
3557 IADDR UNUSED pc = abuf->addr;
3558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3559
3560{
3561 BI tmp_do_op;
3562 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3563if (tmp_do_op) {
3564 {
3565 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3566 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3567 written |= (1 << 6);
3568 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3569 }
3570}
3571}
3572
3573 abuf->written = written;
3574 return vpc;
3575#undef FLD
3576}
3577
3578/* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3579
3580static SEM_PC
3581SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3582{
3583#define FLD(f) abuf->fields.sfmt_cldbfu.f
3584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3585 int UNUSED written = 0;
3586 IADDR UNUSED pc = abuf->addr;
3587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3588
3589{
3590 BI tmp_do_op;
3591 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3592if (tmp_do_op) {
3593 {
3594 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3595 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3596 written |= (1 << 6);
3597 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3598 }
3599}
3600}
3601
3602 abuf->written = written;
3603 return vpc;
3604#undef FLD
3605}
3606
3607/* ldd: ldd$pack @($GRi,$GRj),$GRdoublek */
3608
3609static SEM_PC
3610SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3611{
3612#define FLD(f) abuf->fields.sfmt_smulcc.f
3613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3614 int UNUSED written = 0;
3615 IADDR UNUSED pc = abuf->addr;
3616 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3617
3618{
3619 SI tmp_address;
3620if (NESI (FLD (f_GRk), 0)) {
3621{
3622 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3623 {
3624 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3625 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3626 written |= (1 << 4);
3627 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3628 }
3629}
3630}
3631}
3632
3633 abuf->written = written;
3634 return vpc;
3635#undef FLD
3636}
3637
3638/* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3639
3640static SEM_PC
3641SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3642{
3643#define FLD(f) abuf->fields.sfmt_clddfu.f
3644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3645 int UNUSED written = 0;
3646 IADDR UNUSED pc = abuf->addr;
3647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3648
3649{
3650 SI tmp_address;
3651{
3652 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3653 {
3654 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3655 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3656 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3657 }
3658}
3659}
3660
3661 return vpc;
3662#undef FLD
3663}
3664
3665/* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3666
3667static SEM_PC
3668SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3669{
3670#define FLD(f) abuf->fields.sfmt_lddcu.f
3671 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3672 int UNUSED written = 0;
3673 IADDR UNUSED pc = abuf->addr;
3674 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3675
3676{
3677 SI tmp_address;
3678{
3679 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3680 {
3681 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3682 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3683 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3684 }
3685}
3686}
3687
3688 return vpc;
3689#undef FLD
3690}
3691
3692/* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3693
3694static SEM_PC
3695SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3696{
3697#define FLD(f) abuf->fields.sfmt_smulcc.f
3698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3699 int UNUSED written = 0;
3700 IADDR UNUSED pc = abuf->addr;
3701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3702
3703{
3704 SI tmp_address;
3705{
3706 BI tmp_do_op;
3707 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3708if (tmp_do_op) {
3709if (NESI (FLD (f_GRk), 0)) {
3710{
3711 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3712 {
3713 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3714 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3715 written |= (1 << 6);
3716 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3717 }
3718}
3719}
3720}
3721}
3722}
3723
3724 abuf->written = written;
3725 return vpc;
3726#undef FLD
3727}
3728
3729/* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3730
3731static SEM_PC
3732SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3733{
3734#define FLD(f) abuf->fields.sfmt_clddfu.f
3735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3736 int UNUSED written = 0;
3737 IADDR UNUSED pc = abuf->addr;
3738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3739
3740{
3741 SI tmp_address;
3742{
3743 BI tmp_do_op;
3744 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3745if (tmp_do_op) {
3746{
3747 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3748 {
3749 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3750 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3751 written |= (1 << 6);
3752 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3753 }
3754}
3755}
3756}
3757}
3758
3759 abuf->written = written;
3760 return vpc;
3761#undef FLD
3762}
3763
3764/* ldq: ldq$pack @($GRi,$GRj),$GRk */
3765
3766static SEM_PC
3767SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3768{
3769#define FLD(f) abuf->fields.sfmt_smulcc.f
3770 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3771 int UNUSED written = 0;
3772 IADDR UNUSED pc = abuf->addr;
3773 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3774
3775{
3776 SI tmp_address;
3777{
3778 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3779frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3780}
3781}
3782
3783 return vpc;
3784#undef FLD
3785}
3786
3787/* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3788
3789static SEM_PC
3790SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3791{
3792#define FLD(f) abuf->fields.sfmt_cstdfu.f
3793 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3794 int UNUSED written = 0;
3795 IADDR UNUSED pc = abuf->addr;
3796 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3797
3798{
3799 SI tmp_address;
3800{
3801 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3802frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3803}
3804}
3805
3806 return vpc;
3807#undef FLD
3808}
3809
3810/* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3811
3812static SEM_PC
3813SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3814{
3815#define FLD(f) abuf->fields.sfmt_stdcu.f
3816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3817 int UNUSED written = 0;
3818 IADDR UNUSED pc = abuf->addr;
3819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3820
3821{
3822 SI tmp_address;
3823{
3824 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3825frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3826}
3827}
3828
3829 return vpc;
3830#undef FLD
3831}
3832
3833/* nldq: nldq$pack @($GRi,$GRj),$GRk */
3834
3835static SEM_PC
3836SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3837{
3838#define FLD(f) abuf->fields.sfmt_smulcc.f
3839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3840 int UNUSED written = 0;
3841 IADDR UNUSED pc = abuf->addr;
3842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3843
3844{
3845 SI tmp_address;
3846{
3847 BI tmp_do_op;
3848 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3849if (tmp_do_op) {
3850{
3851 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3852frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3853}
3854}
3855}
3856}
3857
3858 return vpc;
3859#undef FLD
3860}
3861
3862/* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3863
3864static SEM_PC
3865SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3866{
3867#define FLD(f) abuf->fields.sfmt_cstdfu.f
3868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3869 int UNUSED written = 0;
3870 IADDR UNUSED pc = abuf->addr;
3871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3872
3873{
3874 SI tmp_address;
3875{
3876 BI tmp_do_op;
3877 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3878if (tmp_do_op) {
3879{
3880 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3881frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3882}
3883}
3884}
3885}
3886
3887 return vpc;
3888#undef FLD
3889}
3890
3891/* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3892
3893static SEM_PC
3894SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3895{
3896#define FLD(f) abuf->fields.sfmt_cldsbu.f
3897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3898 int UNUSED written = 0;
3899 IADDR UNUSED pc = abuf->addr;
3900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3901
3902{
3903 USI tmp_address;
3904 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3905 {
3906 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3907 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3908 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3909 }
3910if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3911{
3912 {
3913 SI opval = tmp_address;
3914 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3915 written |= (1 << 5);
3916 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3917 }
3918frvbf_force_update (current_cpu);
3919}
3920}
3921}
3922
3923 abuf->written = written;
3924 return vpc;
3925#undef FLD
3926}
3927
3928/* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3929
3930static SEM_PC
3931SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3932{
3933#define FLD(f) abuf->fields.sfmt_cldsbu.f
3934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3935 int UNUSED written = 0;
3936 IADDR UNUSED pc = abuf->addr;
3937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3938
3939{
3940 USI tmp_address;
3941 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3942 {
3943 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3944 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3945 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3946 }
3947if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3948{
3949 {
3950 SI opval = tmp_address;
3951 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3952 written |= (1 << 5);
3953 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3954 }
3955frvbf_force_update (current_cpu);
3956}
3957}
3958}
3959
3960 abuf->written = written;
3961 return vpc;
3962#undef FLD
3963}
3964
3965/* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3966
3967static SEM_PC
3968SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3969{
3970#define FLD(f) abuf->fields.sfmt_cldsbu.f
3971 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3972 int UNUSED written = 0;
3973 IADDR UNUSED pc = abuf->addr;
3974 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3975
3976{
3977 USI tmp_address;
3978 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3979 {
3980 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3981 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3982 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3983 }
3984if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3985{
3986 {
3987 SI opval = tmp_address;
3988 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3989 written |= (1 << 5);
3990 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3991 }
3992frvbf_force_update (current_cpu);
3993}
3994}
3995}
3996
3997 abuf->written = written;
3998 return vpc;
3999#undef FLD
4000}
4001
4002/* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
4003
4004static SEM_PC
4005SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4006{
4007#define FLD(f) abuf->fields.sfmt_cldsbu.f
4008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4009 int UNUSED written = 0;
4010 IADDR UNUSED pc = abuf->addr;
4011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4012
4013{
4014 USI tmp_address;
4015 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4016 {
4017 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4018 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4019 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4020 }
4021if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4022{
4023 {
4024 SI opval = tmp_address;
4025 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4026 written |= (1 << 5);
4027 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4028 }
4029frvbf_force_update (current_cpu);
4030}
4031}
4032}
4033
4034 abuf->written = written;
4035 return vpc;
4036#undef FLD
4037}
4038
4039/* ldu: ldu$pack @($GRi,$GRj),$GRk */
4040
4041static SEM_PC
4042SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4043{
4044#define FLD(f) abuf->fields.sfmt_cldsbu.f
4045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4046 int UNUSED written = 0;
4047 IADDR UNUSED pc = abuf->addr;
4048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4049
4050{
4051 USI tmp_address;
4052 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4053 {
4054 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4055 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4056 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4057 }
4058if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4059{
4060 {
4061 SI opval = tmp_address;
4062 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4063 written |= (1 << 5);
4064 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4065 }
4066frvbf_force_update (current_cpu);
4067}
4068}
4069}
4070
4071 abuf->written = written;
4072 return vpc;
4073#undef FLD
4074}
4075
4076/* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4077
4078static SEM_PC
4079SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4080{
4081#define FLD(f) abuf->fields.sfmt_cldsbu.f
4082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4083 int UNUSED written = 0;
4084 IADDR UNUSED pc = abuf->addr;
4085 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4086
4087{
4088 BI tmp_do_op;
4089 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4090if (tmp_do_op) {
4091{
4092 USI tmp_address;
4093 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4094 {
4095 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4096 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4097 written |= (1 << 7);
4098 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4099 }
4100if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4101{
4102 {
4103 SI opval = tmp_address;
4104 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4105 written |= (1 << 6);
4106 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4107 }
4108frvbf_force_update (current_cpu);
4109}
4110}
4111}
4112}
4113}
4114
4115 abuf->written = written;
4116 return vpc;
4117#undef FLD
4118}
4119
4120/* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4121
4122static SEM_PC
4123SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4124{
4125#define FLD(f) abuf->fields.sfmt_cldsbu.f
4126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4127 int UNUSED written = 0;
4128 IADDR UNUSED pc = abuf->addr;
4129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4130
4131{
4132 BI tmp_do_op;
4133 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4134if (tmp_do_op) {
4135{
4136 USI tmp_address;
4137 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4138 {
4139 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4140 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4141 written |= (1 << 7);
4142 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4143 }
4144if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4145{
4146 {
4147 SI opval = tmp_address;
4148 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4149 written |= (1 << 6);
4150 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4151 }
4152frvbf_force_update (current_cpu);
4153}
4154}
4155}
4156}
4157}
4158
4159 abuf->written = written;
4160 return vpc;
4161#undef FLD
4162}
4163
4164/* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4165
4166static SEM_PC
4167SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4168{
4169#define FLD(f) abuf->fields.sfmt_cldsbu.f
4170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4171 int UNUSED written = 0;
4172 IADDR UNUSED pc = abuf->addr;
4173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4174
4175{
4176 BI tmp_do_op;
4177 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4178if (tmp_do_op) {
4179{
4180 USI tmp_address;
4181 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4182 {
4183 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4184 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4185 written |= (1 << 7);
4186 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4187 }
4188if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4189{
4190 {
4191 SI opval = tmp_address;
4192 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4193 written |= (1 << 6);
4194 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4195 }
4196frvbf_force_update (current_cpu);
4197}
4198}
4199}
4200}
4201}
4202
4203 abuf->written = written;
4204 return vpc;
4205#undef FLD
4206}
4207
4208/* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4209
4210static SEM_PC
4211SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4212{
4213#define FLD(f) abuf->fields.sfmt_cldsbu.f
4214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4215 int UNUSED written = 0;
4216 IADDR UNUSED pc = abuf->addr;
4217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4218
4219{
4220 BI tmp_do_op;
4221 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4222if (tmp_do_op) {
4223{
4224 USI tmp_address;
4225 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4226 {
4227 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4228 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4229 written |= (1 << 7);
4230 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4231 }
4232if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4233{
4234 {
4235 SI opval = tmp_address;
4236 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4237 written |= (1 << 6);
4238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4239 }
4240frvbf_force_update (current_cpu);
4241}
4242}
4243}
4244}
4245}
4246
4247 abuf->written = written;
4248 return vpc;
4249#undef FLD
4250}
4251
4252/* nldu: nldu$pack @($GRi,$GRj),$GRk */
4253
4254static SEM_PC
4255SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4256{
4257#define FLD(f) abuf->fields.sfmt_cldsbu.f
4258 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4259 int UNUSED written = 0;
4260 IADDR UNUSED pc = abuf->addr;
4261 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4262
4263{
4264 BI tmp_do_op;
4265 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4266if (tmp_do_op) {
4267{
4268 USI tmp_address;
4269 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4270 {
4271 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4272 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4273 written |= (1 << 7);
4274 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4275 }
4276if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4277{
4278 {
4279 SI opval = tmp_address;
4280 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4281 written |= (1 << 6);
4282 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4283 }
4284frvbf_force_update (current_cpu);
4285}
4286}
4287}
4288}
4289}
4290
4291 abuf->written = written;
4292 return vpc;
4293#undef FLD
4294}
4295
4296/* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4297
4298static SEM_PC
4299SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4300{
4301#define FLD(f) abuf->fields.sfmt_cldbfu.f
4302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4303 int UNUSED written = 0;
4304 IADDR UNUSED pc = abuf->addr;
4305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4306
4307{
4308 USI tmp_address;
4309 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4310 {
4311 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4312 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4313 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4314 }
4315 {
4316 SI opval = tmp_address;
4317 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4318 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4319 }
4320frvbf_force_update (current_cpu);
4321}
4322
4323 return vpc;
4324#undef FLD
4325}
4326
4327/* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4328
4329static SEM_PC
4330SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4331{
4332#define FLD(f) abuf->fields.sfmt_cldbfu.f
4333 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4334 int UNUSED written = 0;
4335 IADDR UNUSED pc = abuf->addr;
4336 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4337
4338{
4339 USI tmp_address;
4340 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4341 {
4342 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4343 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4344 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4345 }
4346 {
4347 SI opval = tmp_address;
4348 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4349 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4350 }
4351frvbf_force_update (current_cpu);
4352}
4353
4354 return vpc;
4355#undef FLD
4356}
4357
4358/* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4359
4360static SEM_PC
4361SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4362{
4363#define FLD(f) abuf->fields.sfmt_cldbfu.f
4364 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4365 int UNUSED written = 0;
4366 IADDR UNUSED pc = abuf->addr;
4367 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4368
4369{
4370 USI tmp_address;
4371 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4372 {
4373 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4374 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4375 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4376 }
4377 {
4378 SI opval = tmp_address;
4379 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4380 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4381 }
4382frvbf_force_update (current_cpu);
4383}
4384
4385 return vpc;
4386#undef FLD
4387}
4388
4389/* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4390
4391static SEM_PC
4392SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4393{
4394#define FLD(f) abuf->fields.sfmt_ldcu.f
4395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4396 int UNUSED written = 0;
4397 IADDR UNUSED pc = abuf->addr;
4398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4399
4400{
4401 USI tmp_address;
4402 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4403 {
4404 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4405 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4406 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4407 }
4408 {
4409 SI opval = tmp_address;
4410 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4411 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4412 }
4413frvbf_force_update (current_cpu);
4414}
4415
4416 return vpc;
4417#undef FLD
4418}
4419
4420/* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4421
4422static SEM_PC
4423SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4424{
4425#define FLD(f) abuf->fields.sfmt_cldbfu.f
4426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4427 int UNUSED written = 0;
4428 IADDR UNUSED pc = abuf->addr;
4429 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4430
4431{
4432 BI tmp_do_op;
4433 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4434if (tmp_do_op) {
4435{
4436 USI tmp_address;
4437 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4438 {
4439 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4440 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4441 written |= (1 << 6);
4442 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4443 }
4444 {
4445 SI opval = tmp_address;
4446 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4447 written |= (1 << 7);
4448 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4449 }
4450frvbf_force_update (current_cpu);
4451}
4452}
4453}
4454
4455 abuf->written = written;
4456 return vpc;
4457#undef FLD
4458}
4459
4460/* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4461
4462static SEM_PC
4463SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4464{
4465#define FLD(f) abuf->fields.sfmt_cldbfu.f
4466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4467 int UNUSED written = 0;
4468 IADDR UNUSED pc = abuf->addr;
4469 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4470
4471{
4472 BI tmp_do_op;
4473 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4474if (tmp_do_op) {
4475{
4476 USI tmp_address;
4477 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4478 {
4479 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4480 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4481 written |= (1 << 6);
4482 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4483 }
4484 {
4485 SI opval = tmp_address;
4486 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4487 written |= (1 << 7);
4488 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4489 }
4490frvbf_force_update (current_cpu);
4491}
4492}
4493}
4494
4495 abuf->written = written;
4496 return vpc;
4497#undef FLD
4498}
4499
4500/* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4501
4502static SEM_PC
4503SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4504{
4505#define FLD(f) abuf->fields.sfmt_cldbfu.f
4506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4507 int UNUSED written = 0;
4508 IADDR UNUSED pc = abuf->addr;
4509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4510
4511{
4512 BI tmp_do_op;
4513 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4514if (tmp_do_op) {
4515{
4516 USI tmp_address;
4517 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4518 {
4519 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4520 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4521 written |= (1 << 6);
4522 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4523 }
4524 {
4525 SI opval = tmp_address;
4526 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4527 written |= (1 << 7);
4528 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4529 }
4530frvbf_force_update (current_cpu);
4531}
4532}
4533}
4534
4535 abuf->written = written;
4536 return vpc;
4537#undef FLD
4538}
4539
4540/* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4541
4542static SEM_PC
4543SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4544{
4545#define FLD(f) abuf->fields.sfmt_clddu.f
4546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4547 int UNUSED written = 0;
4548 IADDR UNUSED pc = abuf->addr;
4549 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4550
4551{
4552 SI tmp_address;
4553if (NESI (FLD (f_GRk), 0)) {
4554{
4555 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4556 {
4557 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4558 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4559 written |= (1 << 5);
4560 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4561 }
4562}
4563}
4564if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4565{
4566 {
4567 SI opval = tmp_address;
4568 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4569 written |= (1 << 6);
4570 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4571 }
4572frvbf_force_update (current_cpu);
4573}
4574}
4575}
4576
4577 abuf->written = written;
4578 return vpc;
4579#undef FLD
4580}
4581
4582/* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4583
4584static SEM_PC
4585SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4586{
4587#define FLD(f) abuf->fields.sfmt_clddu.f
4588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4589 int UNUSED written = 0;
4590 IADDR UNUSED pc = abuf->addr;
4591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4592
4593{
4594 BI tmp_do_op;
4595 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4596if (tmp_do_op) {
4597{
4598 SI tmp_address;
4599if (NESI (FLD (f_GRk), 0)) {
4600{
4601 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4602 {
4603 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4604 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4605 written |= (1 << 6);
4606 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4607 }
4608}
4609}
4610if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4611{
4612 {
4613 SI opval = tmp_address;
4614 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4615 written |= (1 << 7);
4616 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4617 }
4618frvbf_force_update (current_cpu);
4619}
4620}
4621}
4622}
4623}
4624
4625 abuf->written = written;
4626 return vpc;
4627#undef FLD
4628}
4629
4630/* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4631
4632static SEM_PC
4633SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4634{
4635#define FLD(f) abuf->fields.sfmt_clddfu.f
4636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4637 int UNUSED written = 0;
4638 IADDR UNUSED pc = abuf->addr;
4639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4640
4641{
4642 SI tmp_address;
4643{
4644 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4645 {
4646 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4647 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4648 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4649 }
4650}
4651 {
4652 SI opval = tmp_address;
4653 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4655 }
4656frvbf_force_update (current_cpu);
4657}
4658
4659 return vpc;
4660#undef FLD
4661}
4662
4663/* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4664
4665static SEM_PC
4666SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4667{
4668#define FLD(f) abuf->fields.sfmt_lddcu.f
4669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4670 int UNUSED written = 0;
4671 IADDR UNUSED pc = abuf->addr;
4672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4673
4674{
4675 SI tmp_address;
4676{
4677 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4678 {
4679 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4680 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4681 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4682 }
4683}
4684 {
4685 SI opval = tmp_address;
4686 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4687 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4688 }
4689frvbf_force_update (current_cpu);
4690}
4691
4692 return vpc;
4693#undef FLD
4694}
4695
4696/* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4697
4698static SEM_PC
4699SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4700{
4701#define FLD(f) abuf->fields.sfmt_clddfu.f
4702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4703 int UNUSED written = 0;
4704 IADDR UNUSED pc = abuf->addr;
4705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4706
4707{
4708 BI tmp_do_op;
4709 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4710if (tmp_do_op) {
4711{
4712 SI tmp_address;
4713{
4714 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4715 {
4716 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4717 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4718 written |= (1 << 6);
4719 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4720 }
4721}
4722 {
4723 SI opval = tmp_address;
4724 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4725 written |= (1 << 7);
4726 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4727 }
4728frvbf_force_update (current_cpu);
4729}
4730}
4731}
4732
4733 abuf->written = written;
4734 return vpc;
4735#undef FLD
4736}
4737
4738/* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4739
4740static SEM_PC
4741SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4742{
4743#define FLD(f) abuf->fields.sfmt_cstdu.f
4744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4745 int UNUSED written = 0;
4746 IADDR UNUSED pc = abuf->addr;
4747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4748
4749{
4750 SI tmp_address;
4751{
4752 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4753frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4754}
4755if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4756{
4757 {
4758 SI opval = tmp_address;
4759 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4760 written |= (1 << 5);
4761 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4762 }
4763frvbf_force_update (current_cpu);
4764}
4765}
4766}
4767
4768 abuf->written = written;
4769 return vpc;
4770#undef FLD
4771}
4772
4773/* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4774
4775static SEM_PC
4776SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4777{
4778#define FLD(f) abuf->fields.sfmt_cstdu.f
4779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4780 int UNUSED written = 0;
4781 IADDR UNUSED pc = abuf->addr;
4782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4783
4784{
4785 BI tmp_do_op;
4786 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4787if (tmp_do_op) {
4788{
4789 SI tmp_address;
4790{
4791 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4792frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4793}
4794if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4795{
4796 {
4797 SI opval = tmp_address;
4798 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4799 written |= (1 << 6);
4800 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4801 }
4802frvbf_force_update (current_cpu);
4803}
4804}
4805}
4806}
4807}
4808
4809 abuf->written = written;
4810 return vpc;
4811#undef FLD
4812}
4813
4814/* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4815
4816static SEM_PC
4817SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4818{
4819#define FLD(f) abuf->fields.sfmt_cstdfu.f
4820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4821 int UNUSED written = 0;
4822 IADDR UNUSED pc = abuf->addr;
4823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4824
4825{
4826 SI tmp_address;
4827{
4828 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4829frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4830}
4831 {
4832 SI opval = tmp_address;
4833 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4834 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4835 }
4836frvbf_force_update (current_cpu);
4837}
4838
4839 return vpc;
4840#undef FLD
4841}
4842
4843/* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4844
4845static SEM_PC
4846SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4847{
4848#define FLD(f) abuf->fields.sfmt_stdcu.f
4849 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4850 int UNUSED written = 0;
4851 IADDR UNUSED pc = abuf->addr;
4852 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4853
4854{
4855 SI tmp_address;
4856{
4857 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4858frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4859}
4860 {
4861 SI opval = tmp_address;
4862 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4863 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4864 }
4865frvbf_force_update (current_cpu);
4866}
4867
4868 return vpc;
4869#undef FLD
4870}
4871
4872/* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4873
4874static SEM_PC
4875SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4876{
4877#define FLD(f) abuf->fields.sfmt_cstdfu.f
4878 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4879 int UNUSED written = 0;
4880 IADDR UNUSED pc = abuf->addr;
4881 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4882
4883{
4884 BI tmp_do_op;
4885 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4886if (tmp_do_op) {
4887{
4888 SI tmp_address;
4889{
4890 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4891frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4892}
4893 {
4894 SI opval = tmp_address;
4895 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4896 written |= (1 << 6);
4897 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4898 }
4899frvbf_force_update (current_cpu);
4900}
4901}
4902}
4903
4904 abuf->written = written;
4905 return vpc;
4906#undef FLD
4907}
4908
4909/* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4910
4911static SEM_PC
4912SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4913{
4914#define FLD(f) abuf->fields.sfmt_swapi.f
4915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4916 int UNUSED written = 0;
4917 IADDR UNUSED pc = abuf->addr;
4918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4919
4920 {
4921 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4922 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4923 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4924 }
4925
4926 return vpc;
4927#undef FLD
4928}
4929
4930/* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4931
4932static SEM_PC
4933SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4934{
4935#define FLD(f) abuf->fields.sfmt_swapi.f
4936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4937 int UNUSED written = 0;
4938 IADDR UNUSED pc = abuf->addr;
4939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4940
4941 {
4942 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4944 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4945 }
4946
4947 return vpc;
4948#undef FLD
4949}
4950
4951/* ldi: ldi$pack @($GRi,$d12),$GRk */
4952
4953static SEM_PC
4954SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4955{
4956#define FLD(f) abuf->fields.sfmt_swapi.f
4957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4958 int UNUSED written = 0;
4959 IADDR UNUSED pc = abuf->addr;
4960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4961
4962 {
4963 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4964 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4965 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4966 }
4967
4968 return vpc;
4969#undef FLD
4970}
4971
4972/* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4973
4974static SEM_PC
4975SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4976{
4977#define FLD(f) abuf->fields.sfmt_swapi.f
4978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4979 int UNUSED written = 0;
4980 IADDR UNUSED pc = abuf->addr;
4981 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4982
4983 {
4984 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4985 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4986 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4987 }
4988
4989 return vpc;
4990#undef FLD
4991}
4992
4993/* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4994
4995static SEM_PC
4996SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4997{
4998#define FLD(f) abuf->fields.sfmt_swapi.f
4999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5000 int UNUSED written = 0;
5001 IADDR UNUSED pc = abuf->addr;
5002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5003
5004 {
5005 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5006 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5007 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5008 }
5009
5010 return vpc;
5011#undef FLD
5012}
5013
5014/* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5015
5016static SEM_PC
5017SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5018{
5019#define FLD(f) abuf->fields.sfmt_ldbfi.f
5020 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5021 int UNUSED written = 0;
5022 IADDR UNUSED pc = abuf->addr;
5023 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5024
5025 {
5026 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5027 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5028 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5029 }
5030
5031 return vpc;
5032#undef FLD
5033}
5034
5035/* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5036
5037static SEM_PC
5038SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5039{
5040#define FLD(f) abuf->fields.sfmt_ldbfi.f
5041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5042 int UNUSED written = 0;
5043 IADDR UNUSED pc = abuf->addr;
5044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5045
5046 {
5047 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5048 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5049 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5050 }
5051
5052 return vpc;
5053#undef FLD
5054}
5055
5056/* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5057
5058static SEM_PC
5059SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5060{
5061#define FLD(f) abuf->fields.sfmt_ldbfi.f
5062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5063 int UNUSED written = 0;
5064 IADDR UNUSED pc = abuf->addr;
5065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5066
5067 {
5068 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5069 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5070 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5071 }
5072
5073 return vpc;
5074#undef FLD
5075}
5076
5077/* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5078
5079static SEM_PC
5080SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5081{
5082#define FLD(f) abuf->fields.sfmt_swapi.f
5083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5084 int UNUSED written = 0;
5085 IADDR UNUSED pc = abuf->addr;
5086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5087
5088{
5089 BI tmp_do_op;
5090 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5091if (tmp_do_op) {
5092 {
5093 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5094 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5095 written |= (1 << 5);
5096 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5097 }
5098}
5099}
5100
5101 abuf->written = written;
5102 return vpc;
5103#undef FLD
5104}
5105
5106/* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5107
5108static SEM_PC
5109SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5110{
5111#define FLD(f) abuf->fields.sfmt_swapi.f
5112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5113 int UNUSED written = 0;
5114 IADDR UNUSED pc = abuf->addr;
5115 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5116
5117{
5118 BI tmp_do_op;
5119 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5120if (tmp_do_op) {
5121 {
5122 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5123 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5124 written |= (1 << 5);
5125 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5126 }
5127}
5128}
5129
5130 abuf->written = written;
5131 return vpc;
5132#undef FLD
5133}
5134
5135/* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5136
5137static SEM_PC
5138SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5139{
5140#define FLD(f) abuf->fields.sfmt_swapi.f
5141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5142 int UNUSED written = 0;
5143 IADDR UNUSED pc = abuf->addr;
5144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5145
5146{
5147 BI tmp_do_op;
5148 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5149if (tmp_do_op) {
5150 {
5151 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5152 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5153 written |= (1 << 5);
5154 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5155 }
5156}
5157}
5158
5159 abuf->written = written;
5160 return vpc;
5161#undef FLD
5162}
5163
5164/* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5165
5166static SEM_PC
5167SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5168{
5169#define FLD(f) abuf->fields.sfmt_swapi.f
5170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5171 int UNUSED written = 0;
5172 IADDR UNUSED pc = abuf->addr;
5173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5174
5175{
5176 BI tmp_do_op;
5177 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5178if (tmp_do_op) {
5179 {
5180 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5181 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5182 written |= (1 << 5);
5183 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5184 }
5185}
5186}
5187
5188 abuf->written = written;
5189 return vpc;
5190#undef FLD
5191}
5192
5193/* nldi: nldi$pack @($GRi,$d12),$GRk */
5194
5195static SEM_PC
5196SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5197{
5198#define FLD(f) abuf->fields.sfmt_swapi.f
5199 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5200 int UNUSED written = 0;
5201 IADDR UNUSED pc = abuf->addr;
5202 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5203
5204{
5205 BI tmp_do_op;
5206 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5207if (tmp_do_op) {
5208 {
5209 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5210 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5211 written |= (1 << 5);
5212 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5213 }
5214}
5215}
5216
5217 abuf->written = written;
5218 return vpc;
5219#undef FLD
5220}
5221
5222/* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5223
5224static SEM_PC
5225SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5226{
5227#define FLD(f) abuf->fields.sfmt_ldbfi.f
5228 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5229 int UNUSED written = 0;
5230 IADDR UNUSED pc = abuf->addr;
5231 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5232
5233{
5234 BI tmp_do_op;
5235 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5236if (tmp_do_op) {
5237 {
5238 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5239 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5240 written |= (1 << 5);
5241 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5242 }
5243}
5244}
5245
5246 abuf->written = written;
5247 return vpc;
5248#undef FLD
5249}
5250
5251/* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5252
5253static SEM_PC
5254SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5255{
5256#define FLD(f) abuf->fields.sfmt_ldbfi.f
5257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5258 int UNUSED written = 0;
5259 IADDR UNUSED pc = abuf->addr;
5260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5261
5262{
5263 BI tmp_do_op;
5264 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5265if (tmp_do_op) {
5266 {
5267 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5268 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5269 written |= (1 << 5);
5270 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5271 }
5272}
5273}
5274
5275 abuf->written = written;
5276 return vpc;
5277#undef FLD
5278}
5279
5280/* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5281
5282static SEM_PC
5283SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5284{
5285#define FLD(f) abuf->fields.sfmt_ldbfi.f
5286 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5287 int UNUSED written = 0;
5288 IADDR UNUSED pc = abuf->addr;
5289 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5290
5291{
5292 BI tmp_do_op;
5293 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5294if (tmp_do_op) {
5295 {
5296 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5297 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5298 written |= (1 << 5);
5299 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5300 }
5301}
5302}
5303
5304 abuf->written = written;
5305 return vpc;
5306#undef FLD
5307}
5308
5309/* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5310
5311static SEM_PC
5312SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5313{
5314#define FLD(f) abuf->fields.sfmt_smuli.f
5315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5316 int UNUSED written = 0;
5317 IADDR UNUSED pc = abuf->addr;
5318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5319
5320{
5321 SI tmp_address;
5322if (NESI (FLD (f_GRk), 0)) {
5323{
5324 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5325 {
5326 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5327 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5328 written |= (1 << 4);
5329 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5330 }
5331}
5332}
5333}
5334
5335 abuf->written = written;
5336 return vpc;
5337#undef FLD
5338}
5339
5340/* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5341
5342static SEM_PC
5343SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5344{
5345#define FLD(f) abuf->fields.sfmt_lddfi.f
5346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5347 int UNUSED written = 0;
5348 IADDR UNUSED pc = abuf->addr;
5349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5350
5351{
5352 SI tmp_address;
5353{
5354 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5355 {
5356 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5357 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5358 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5359 }
5360}
5361}
5362
5363 return vpc;
5364#undef FLD
5365}
5366
5367/* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5368
5369static SEM_PC
5370SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5371{
5372#define FLD(f) abuf->fields.sfmt_smuli.f
5373 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5374 int UNUSED written = 0;
5375 IADDR UNUSED pc = abuf->addr;
5376 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5377
5378{
5379 SI tmp_address;
5380{
5381 BI tmp_do_op;
5382 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5383if (tmp_do_op) {
5384if (NESI (FLD (f_GRk), 0)) {
5385{
5386 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5387 {
5388 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5389 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5390 written |= (1 << 5);
5391 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5392 }
5393}
5394}
5395}
5396}
5397}
5398
5399 abuf->written = written;
5400 return vpc;
5401#undef FLD
5402}
5403
5404/* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5405
5406static SEM_PC
5407SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5408{
5409#define FLD(f) abuf->fields.sfmt_lddfi.f
5410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5411 int UNUSED written = 0;
5412 IADDR UNUSED pc = abuf->addr;
5413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5414
5415{
5416 SI tmp_address;
5417{
5418 BI tmp_do_op;
5419 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5420if (tmp_do_op) {
5421{
5422 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5423 {
5424 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5425 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5426 written |= (1 << 5);
5427 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5428 }
5429}
5430}
5431}
5432}
5433
5434 abuf->written = written;
5435 return vpc;
5436#undef FLD
5437}
5438
5439/* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5440
5441static SEM_PC
5442SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5443{
5444#define FLD(f) abuf->fields.sfmt_stdi.f
5445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5446 int UNUSED written = 0;
5447 IADDR UNUSED pc = abuf->addr;
5448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5449
5450{
5451 SI tmp_address;
5452{
5453 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5454frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5455}
5456}
5457
5458 return vpc;
5459#undef FLD
5460}
5461
5462/* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5463
5464static SEM_PC
5465SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5466{
5467#define FLD(f) abuf->fields.sfmt_stdfi.f
5468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5469 int UNUSED written = 0;
5470 IADDR UNUSED pc = abuf->addr;
5471 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5472
5473{
5474 SI tmp_address;
5475{
5476 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5477frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5478}
5479}
5480
5481 return vpc;
5482#undef FLD
5483}
5484
b34f6357
DB
5485/* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5486
5487static SEM_PC
5488SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5489{
5490#define FLD(f) abuf->fields.sfmt_stdfi.f
5491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5492 int UNUSED written = 0;
5493 IADDR UNUSED pc = abuf->addr;
5494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5495
5496{
5497 SI tmp_address;
5498{
5499 BI tmp_do_op;
5500 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5501if (tmp_do_op) {
5502{
5503 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5504frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5505}
5506}
5507}
5508}
5509
5510 return vpc;
5511#undef FLD
5512}
5513
5514/* stb: stb$pack $GRk,@($GRi,$GRj) */
5515
5516static SEM_PC
5517SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5518{
5519#define FLD(f) abuf->fields.sfmt_cswap.f
5520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5521 int UNUSED written = 0;
5522 IADDR UNUSED pc = abuf->addr;
5523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5524
5525frvbf_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)));
5526
5527 return vpc;
5528#undef FLD
5529}
5530
5531/* sth: sth$pack $GRk,@($GRi,$GRj) */
5532
5533static SEM_PC
5534SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5535{
5536#define FLD(f) abuf->fields.sfmt_cswap.f
5537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5538 int UNUSED written = 0;
5539 IADDR UNUSED pc = abuf->addr;
5540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5541
5542frvbf_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)));
5543
5544 return vpc;
5545#undef FLD
5546}
5547
5548/* st: st$pack $GRk,@($GRi,$GRj) */
5549
5550static SEM_PC
5551SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5552{
5553#define FLD(f) abuf->fields.sfmt_cswap.f
5554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5555 int UNUSED written = 0;
5556 IADDR UNUSED pc = abuf->addr;
5557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5558
5559frvbf_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)));
5560
5561 return vpc;
5562#undef FLD
5563}
5564
5565/* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5566
5567static SEM_PC
5568SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5569{
5570#define FLD(f) abuf->fields.sfmt_cstbfu.f
5571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5572 int UNUSED written = 0;
5573 IADDR UNUSED pc = abuf->addr;
5574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5575
5576frvbf_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)));
5577
5578 return vpc;
5579#undef FLD
5580}
5581
5582/* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5583
5584static SEM_PC
5585SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5586{
5587#define FLD(f) abuf->fields.sfmt_cstbfu.f
5588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5589 int UNUSED written = 0;
5590 IADDR UNUSED pc = abuf->addr;
5591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5592
5593frvbf_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)));
5594
5595 return vpc;
5596#undef FLD
5597}
5598
5599/* stf: stf$pack $FRintk,@($GRi,$GRj) */
5600
5601static SEM_PC
5602SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5603{
5604#define FLD(f) abuf->fields.sfmt_cstbfu.f
5605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5606 int UNUSED written = 0;
5607 IADDR UNUSED pc = abuf->addr;
5608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5609
5610frvbf_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)));
5611
5612 return vpc;
5613#undef FLD
5614}
5615
5616/* stc: stc$pack $CPRk,@($GRi,$GRj) */
5617
5618static SEM_PC
5619SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5620{
5621#define FLD(f) abuf->fields.sfmt_stcu.f
5622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5623 int UNUSED written = 0;
5624 IADDR UNUSED pc = abuf->addr;
5625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5626
5627frvbf_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)]));
5628
5629 return vpc;
5630#undef FLD
5631}
5632
29a79ca0 5633/* std: std$pack $GRdoublek,@($GRi,$GRj) */
b34f6357
DB
5634
5635static SEM_PC
5636SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5637{
5638#define FLD(f) abuf->fields.sfmt_cstdu.f
5639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5640 int UNUSED written = 0;
5641 IADDR UNUSED pc = abuf->addr;
5642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5643
5644{
5645 SI tmp_address;
5646{
5647 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5648frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5649}
5650}
5651
5652 return vpc;
5653#undef FLD
5654}
5655
29a79ca0 5656/* stdf: stdf$pack $FRdoublek,@($GRi,$GRj) */
b34f6357
DB
5657
5658static SEM_PC
5659SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5660{
5661#define FLD(f) abuf->fields.sfmt_cstdfu.f
5662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5663 int UNUSED written = 0;
5664 IADDR UNUSED pc = abuf->addr;
5665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5666
5667{
5668 SI tmp_address;
5669{
5670 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5671frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5672}
5673}
5674
5675 return vpc;
5676#undef FLD
5677}
5678
29a79ca0 5679/* stdc: stdc$pack $CPRdoublek,@($GRi,$GRj) */
b34f6357
DB
5680
5681static SEM_PC
5682SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5683{
5684#define FLD(f) abuf->fields.sfmt_stdcu.f
5685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5686 int UNUSED written = 0;
5687 IADDR UNUSED pc = abuf->addr;
5688 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5689
5690{
5691 SI tmp_address;
5692{
5693 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5694frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5695}
5696}
5697
5698 return vpc;
5699#undef FLD
5700}
5701
b34f6357
DB
5702/* stq: stq$pack $GRk,@($GRi,$GRj) */
5703
5704static SEM_PC
5705SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5706{
5707#define FLD(f) abuf->fields.sfmt_smulcc.f
5708 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5709 int UNUSED written = 0;
5710 IADDR UNUSED pc = abuf->addr;
5711 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5712
5713{
5714 SI tmp_address;
5715{
5716 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5717frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5718}
5719}
5720
5721 return vpc;
5722#undef FLD
5723}
5724
5725/* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5726
5727static SEM_PC
5728SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5729{
5730#define FLD(f) abuf->fields.sfmt_cstdfu.f
5731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5732 int UNUSED written = 0;
5733 IADDR UNUSED pc = abuf->addr;
5734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5735
5736{
5737 SI tmp_address;
5738{
5739 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5740frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5741}
5742}
5743
5744 return vpc;
5745#undef FLD
5746}
5747
5748/* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5749
5750static SEM_PC
5751SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5752{
5753#define FLD(f) abuf->fields.sfmt_stdcu.f
5754 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5755 int UNUSED written = 0;
5756 IADDR UNUSED pc = abuf->addr;
5757 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5758
5759{
5760 SI tmp_address;
5761{
5762 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5763frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5764}
5765}
5766
5767 return vpc;
5768#undef FLD
5769}
5770
b34f6357
DB
5771/* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5772
5773static SEM_PC
5774SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5775{
5776#define FLD(f) abuf->fields.sfmt_cstbu.f
5777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5778 int UNUSED written = 0;
5779 IADDR UNUSED pc = abuf->addr;
5780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5781
5782{
5783 USI tmp_address;
5784 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5785frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5786 {
5787 SI opval = tmp_address;
5788 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5789 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5790 }
5791}
5792
5793 return vpc;
5794#undef FLD
5795}
5796
5797/* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5798
5799static SEM_PC
5800SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5801{
5802#define FLD(f) abuf->fields.sfmt_cstbu.f
5803 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5804 int UNUSED written = 0;
5805 IADDR UNUSED pc = abuf->addr;
5806 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5807
5808{
5809 USI tmp_address;
5810 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5811frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5812 {
5813 SI opval = tmp_address;
5814 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5815 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5816 }
5817}
5818
5819 return vpc;
5820#undef FLD
5821}
5822
5823/* stu: stu$pack $GRk,@($GRi,$GRj) */
5824
5825static SEM_PC
5826SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5827{
5828#define FLD(f) abuf->fields.sfmt_cstbu.f
5829 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5830 int UNUSED written = 0;
5831 IADDR UNUSED pc = abuf->addr;
5832 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5833
5834{
5835 USI tmp_address;
5836 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5837frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5838 {
5839 SI opval = tmp_address;
5840 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5841 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5842 }
5843}
5844
5845 return vpc;
5846#undef FLD
5847}
5848
5849/* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5850
5851static SEM_PC
5852SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5853{
5854#define FLD(f) abuf->fields.sfmt_cstbfu.f
5855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5856 int UNUSED written = 0;
5857 IADDR UNUSED pc = abuf->addr;
5858 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5859
5860{
5861 USI tmp_address;
5862 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5863frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5864 {
5865 SI opval = tmp_address;
5866 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5867 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5868 }
5869}
5870
5871 return vpc;
5872#undef FLD
5873}
5874
5875/* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5876
5877static SEM_PC
5878SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5879{
5880#define FLD(f) abuf->fields.sfmt_cstbfu.f
5881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5882 int UNUSED written = 0;
5883 IADDR UNUSED pc = abuf->addr;
5884 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5885
5886{
5887 USI tmp_address;
5888 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5889frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5890 {
5891 SI opval = tmp_address;
5892 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5893 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5894 }
5895}
5896
5897 return vpc;
5898#undef FLD
5899}
5900
5901/* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5902
5903static SEM_PC
5904SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5905{
5906#define FLD(f) abuf->fields.sfmt_cstbfu.f
5907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5908 int UNUSED written = 0;
5909 IADDR UNUSED pc = abuf->addr;
5910 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5911
5912{
5913 USI tmp_address;
5914 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5915frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5916 {
5917 SI opval = tmp_address;
5918 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5919 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5920 }
5921}
5922
5923 return vpc;
5924#undef FLD
5925}
5926
5927/* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
5928
5929static SEM_PC
5930SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5931{
5932#define FLD(f) abuf->fields.sfmt_stcu.f
5933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5934 int UNUSED written = 0;
5935 IADDR UNUSED pc = abuf->addr;
5936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5937
5938{
5939 USI tmp_address;
5940 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5941frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
5942 {
5943 SI opval = tmp_address;
5944 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5945 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5946 }
5947}
5948
5949 return vpc;
5950#undef FLD
5951}
5952
29a79ca0 5953/* stdu: stdu$pack $GRdoublek,@($GRi,$GRj) */
b34f6357
DB
5954
5955static SEM_PC
5956SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5957{
5958#define FLD(f) abuf->fields.sfmt_cstdu.f
5959 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5960 int UNUSED written = 0;
5961 IADDR UNUSED pc = abuf->addr;
5962 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5963
5964{
5965 SI tmp_address;
5966{
5967 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5968frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5969}
5970 {
5971 SI opval = tmp_address;
5972 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5973 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5974 }
5975}
5976
5977 return vpc;
5978#undef FLD
5979}
5980
29a79ca0 5981/* stdfu: stdfu$pack $FRdoublek,@($GRi,$GRj) */
b34f6357
DB
5982
5983static SEM_PC
5984SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5985{
5986#define FLD(f) abuf->fields.sfmt_cstdfu.f
5987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5988 int UNUSED written = 0;
5989 IADDR UNUSED pc = abuf->addr;
5990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5991
5992{
5993 SI tmp_address;
5994{
5995 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5996frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5997}
5998 {
5999 SI opval = tmp_address;
6000 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6001 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6002 }
6003}
6004
6005 return vpc;
6006#undef FLD
6007}
6008
29a79ca0 6009/* stdcu: stdcu$pack $CPRdoublek,@($GRi,$GRj) */
b34f6357
DB
6010
6011static SEM_PC
6012SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6013{
6014#define FLD(f) abuf->fields.sfmt_stdcu.f
6015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6016 int UNUSED written = 0;
6017 IADDR UNUSED pc = abuf->addr;
6018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6019
6020{
6021 SI tmp_address;
6022{
6023 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6024frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6025}
6026 {
6027 SI opval = tmp_address;
6028 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6029 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6030 }
6031}
6032
6033 return vpc;
6034#undef FLD
6035}
6036
6037/* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6038
6039static SEM_PC
6040SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6041{
6042#define FLD(f) abuf->fields.sfmt_cstdu.f
6043 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6044 int UNUSED written = 0;
6045 IADDR UNUSED pc = abuf->addr;
6046 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6047
6048{
6049 SI tmp_address;
6050{
6051 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6052frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6053}
6054 {
6055 SI opval = tmp_address;
6056 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6057 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6058 }
6059}
6060
6061 return vpc;
6062#undef FLD
6063}
6064
6065/* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6066
6067static SEM_PC
6068SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6069{
6070#define FLD(f) abuf->fields.sfmt_cstdfu.f
6071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6072 int UNUSED written = 0;
6073 IADDR UNUSED pc = abuf->addr;
6074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6075
6076{
6077 SI tmp_address;
6078{
6079 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6080frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6081}
6082 {
6083 SI opval = tmp_address;
6084 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6085 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6086 }
6087}
6088
6089 return vpc;
6090#undef FLD
6091}
6092
6093/* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6094
6095static SEM_PC
6096SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6097{
6098#define FLD(f) abuf->fields.sfmt_stdcu.f
6099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6100 int UNUSED written = 0;
6101 IADDR UNUSED pc = abuf->addr;
6102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6103
6104{
6105 SI tmp_address;
6106{
6107 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6108frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6109}
6110 {
6111 SI opval = tmp_address;
6112 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6113 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6114 }
6115}
6116
6117 return vpc;
6118#undef FLD
6119}
6120
6121/* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6122
6123static SEM_PC
6124SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6125{
6126#define FLD(f) abuf->fields.sfmt_cswap.f
6127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6128 int UNUSED written = 0;
6129 IADDR UNUSED pc = abuf->addr;
6130 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6131
6132if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6133 {
6134 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6135 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6136 written |= (1 << 5);
6137 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6138 }
6139}
6140
6141 abuf->written = written;
6142 return vpc;
6143#undef FLD
6144}
6145
6146/* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6147
6148static SEM_PC
6149SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6150{
6151#define FLD(f) abuf->fields.sfmt_cswap.f
6152 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6153 int UNUSED written = 0;
6154 IADDR UNUSED pc = abuf->addr;
6155 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6156
6157if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6158 {
6159 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6160 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6161 written |= (1 << 5);
6162 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6163 }
6164}
6165
6166 abuf->written = written;
6167 return vpc;
6168#undef FLD
6169}
6170
6171/* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6172
6173static SEM_PC
6174SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6175{
6176#define FLD(f) abuf->fields.sfmt_cswap.f
6177 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6178 int UNUSED written = 0;
6179 IADDR UNUSED pc = abuf->addr;
6180 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6181
6182if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6183 {
6184 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6185 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6186 written |= (1 << 5);
6187 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6188 }
6189}
6190
6191 abuf->written = written;
6192 return vpc;
6193#undef FLD
6194}
6195
6196/* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6197
6198static SEM_PC
6199SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6200{
6201#define FLD(f) abuf->fields.sfmt_cswap.f
6202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6203 int UNUSED written = 0;
6204 IADDR UNUSED pc = abuf->addr;
6205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6206
6207if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6208 {
6209 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6210 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6211 written |= (1 << 5);
6212 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6213 }
6214}
6215
6216 abuf->written = written;
6217 return vpc;
6218#undef FLD
6219}
6220
6221/* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6222
6223static SEM_PC
6224SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6225{
6226#define FLD(f) abuf->fields.sfmt_cswap.f
6227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6228 int UNUSED written = 0;
6229 IADDR UNUSED pc = abuf->addr;
6230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6231
6232if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6233 {
6234 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6235 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6236 written |= (1 << 5);
6237 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6238 }
6239}
6240
6241 abuf->written = written;
6242 return vpc;
6243#undef FLD
6244}
6245
6246/* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6247
6248static SEM_PC
6249SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6250{
6251#define FLD(f) abuf->fields.sfmt_cldbfu.f
6252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6253 int UNUSED written = 0;
6254 IADDR UNUSED pc = abuf->addr;
6255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6256
6257if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6258 {
6259 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6260 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6261 written |= (1 << 5);
6262 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6263 }
6264}
6265
6266 abuf->written = written;
6267 return vpc;
6268#undef FLD
6269}
6270
6271/* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6272
6273static SEM_PC
6274SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6275{
6276#define FLD(f) abuf->fields.sfmt_cldbfu.f
6277 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6278 int UNUSED written = 0;
6279 IADDR UNUSED pc = abuf->addr;
6280 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6281
6282if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6283 {
6284 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6285 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6286 written |= (1 << 5);
6287 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6288 }
6289}
6290
6291 abuf->written = written;
6292 return vpc;
6293#undef FLD
6294}
6295
6296/* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6297
6298static SEM_PC
6299SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6300{
6301#define FLD(f) abuf->fields.sfmt_cldbfu.f
6302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6303 int UNUSED written = 0;
6304 IADDR UNUSED pc = abuf->addr;
6305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6306
6307if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6308 {
6309 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6310 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6311 written |= (1 << 5);
6312 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6313 }
6314}
6315
6316 abuf->written = written;
6317 return vpc;
6318#undef FLD
6319}
6320
6321/* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6322
6323static SEM_PC
6324SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6325{
6326#define FLD(f) abuf->fields.sfmt_clddu.f
6327 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6328 int UNUSED written = 0;
6329 IADDR UNUSED pc = abuf->addr;
6330 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6331
6332if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6333{
6334 SI tmp_address;
6335if (NESI (FLD (f_GRk), 0)) {
6336{
6337 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6338 {
6339 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6340 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6341 written |= (1 << 6);
6342 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6343 }
6344}
6345}
6346}
6347}
6348
6349 abuf->written = written;
6350 return vpc;
6351#undef FLD
6352}
6353
6354/* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6355
6356static SEM_PC
6357SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6358{
6359#define FLD(f) abuf->fields.sfmt_clddfu.f
6360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6361 int UNUSED written = 0;
6362 IADDR UNUSED pc = abuf->addr;
6363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6364
6365if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6366{
6367 SI tmp_address;
6368{
6369 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6370 {
6371 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6372 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6373 written |= (1 << 5);
6374 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6375 }
6376}
6377}
6378}
6379
6380 abuf->written = written;
6381 return vpc;
6382#undef FLD
6383}
6384
6385/* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6386
6387static SEM_PC
6388SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6389{
6390#define FLD(f) abuf->fields.sfmt_cswap.f
6391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6392 int UNUSED written = 0;
6393 IADDR UNUSED pc = abuf->addr;
6394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6395
6396if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6397{
6398 SI tmp_address;
6399{
6400 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6401frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6402}
6403}
6404}
6405
6406 return vpc;
6407#undef FLD
6408}
6409
6410/* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6411
6412static SEM_PC
6413SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6414{
6415#define FLD(f) abuf->fields.sfmt_cldsbu.f
6416 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6417 int UNUSED written = 0;
6418 IADDR UNUSED pc = abuf->addr;
6419 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6420
6421if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6422{
6423 SI tmp_address;
6424 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6425 {
6426 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6427 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6428 written |= (1 << 8);
6429 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6430 }
6431if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6432 {
6433 SI opval = tmp_address;
6434 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6435 written |= (1 << 7);
6436 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6437 }
6438}
6439}
6440}
6441
6442 abuf->written = written;
6443 return vpc;
6444#undef FLD
6445}
6446
6447/* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6448
6449static SEM_PC
6450SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6451{
6452#define FLD(f) abuf->fields.sfmt_cldsbu.f
6453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6454 int UNUSED written = 0;
6455 IADDR UNUSED pc = abuf->addr;
6456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6457
6458if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6459{
6460 SI tmp_address;
6461 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6462 {
6463 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6464 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6465 written |= (1 << 8);
6466 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6467 }
6468if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6469 {
6470 SI opval = tmp_address;
6471 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6472 written |= (1 << 7);
6473 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6474 }
6475}
6476}
6477}
6478
6479 abuf->written = written;
6480 return vpc;
6481#undef FLD
6482}
6483
6484/* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6485
6486static SEM_PC
6487SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6488{
6489#define FLD(f) abuf->fields.sfmt_cldsbu.f
6490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6491 int UNUSED written = 0;
6492 IADDR UNUSED pc = abuf->addr;
6493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6494
6495if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6496{
6497 SI tmp_address;
6498 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6499 {
6500 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6501 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6502 written |= (1 << 8);
6503 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6504 }
6505if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6506 {
6507 SI opval = tmp_address;
6508 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6509 written |= (1 << 7);
6510 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6511 }
6512}
6513}
6514}
6515
6516 abuf->written = written;
6517 return vpc;
6518#undef FLD
6519}
6520
6521/* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6522
6523static SEM_PC
6524SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6525{
6526#define FLD(f) abuf->fields.sfmt_cldsbu.f
6527 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6528 int UNUSED written = 0;
6529 IADDR UNUSED pc = abuf->addr;
6530 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6531
6532if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6533{
6534 SI tmp_address;
6535 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6536 {
6537 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6538 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6539 written |= (1 << 8);
6540 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6541 }
6542if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6543 {
6544 SI opval = tmp_address;
6545 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6546 written |= (1 << 7);
6547 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6548 }
6549}
6550}
6551}
6552
6553 abuf->written = written;
6554 return vpc;
6555#undef FLD
6556}
6557
6558/* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6559
6560static SEM_PC
6561SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6562{
6563#define FLD(f) abuf->fields.sfmt_cldsbu.f
6564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6565 int UNUSED written = 0;
6566 IADDR UNUSED pc = abuf->addr;
6567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6568
6569if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6570{
6571 SI tmp_address;
6572 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6573 {
6574 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6575 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6576 written |= (1 << 8);
6577 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6578 }
6579if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6580 {
6581 SI opval = tmp_address;
6582 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6583 written |= (1 << 7);
6584 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6585 }
6586}
6587}
6588}
6589
6590 abuf->written = written;
6591 return vpc;
6592#undef FLD
6593}
6594
6595/* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6596
6597static SEM_PC
6598SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6599{
6600#define FLD(f) abuf->fields.sfmt_cldbfu.f
6601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6602 int UNUSED written = 0;
6603 IADDR UNUSED pc = abuf->addr;
6604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6605
6606if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6607{
6608 SI tmp_address;
6609 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6610 {
6611 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6612 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6613 written |= (1 << 5);
6614 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6615 }
6616 {
6617 SI opval = tmp_address;
6618 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6619 written |= (1 << 6);
6620 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6621 }
6622}
6623}
6624
6625 abuf->written = written;
6626 return vpc;
6627#undef FLD
6628}
6629
6630/* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6631
6632static SEM_PC
6633SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6634{
6635#define FLD(f) abuf->fields.sfmt_cldbfu.f
6636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6637 int UNUSED written = 0;
6638 IADDR UNUSED pc = abuf->addr;
6639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6640
6641if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6642{
6643 SI tmp_address;
6644 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6645 {
6646 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6647 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6648 written |= (1 << 5);
6649 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6650 }
6651 {
6652 SI opval = tmp_address;
6653 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6654 written |= (1 << 6);
6655 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6656 }
6657}
6658}
6659
6660 abuf->written = written;
6661 return vpc;
6662#undef FLD
6663}
6664
6665/* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6666
6667static SEM_PC
6668SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6669{
6670#define FLD(f) abuf->fields.sfmt_cldbfu.f
6671 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6672 int UNUSED written = 0;
6673 IADDR UNUSED pc = abuf->addr;
6674 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6675
6676if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6677{
6678 SI tmp_address;
6679 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6680 {
6681 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6683 written |= (1 << 5);
6684 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6685 }
6686 {
6687 SI opval = tmp_address;
6688 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6689 written |= (1 << 6);
6690 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6691 }
6692}
6693}
6694
6695 abuf->written = written;
6696 return vpc;
6697#undef FLD
6698}
6699
6700/* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6701
6702static SEM_PC
6703SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6704{
6705#define FLD(f) abuf->fields.sfmt_clddu.f
6706 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6707 int UNUSED written = 0;
6708 IADDR UNUSED pc = abuf->addr;
6709 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6710
6711if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6712{
6713 SI tmp_address;
6714if (NESI (FLD (f_GRk), 0)) {
6715{
6716 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6717 {
6718 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6719 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6720 written |= (1 << 7);
6721 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6722 }
6723}
6724}
6725if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6726 {
6727 SI opval = tmp_address;
6728 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6729 written |= (1 << 8);
6730 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6731 }
6732}
6733}
6734}
6735
6736 abuf->written = written;
6737 return vpc;
6738#undef FLD
6739}
6740
6741/* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6742
6743static SEM_PC
6744SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6745{
6746#define FLD(f) abuf->fields.sfmt_clddfu.f
6747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6748 int UNUSED written = 0;
6749 IADDR UNUSED pc = abuf->addr;
6750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6751
6752if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6753{
6754 SI tmp_address;
6755{
6756 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6757 {
6758 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6759 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6760 written |= (1 << 5);
6761 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6762 }
6763}
6764 {
6765 SI opval = tmp_address;
6766 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6767 written |= (1 << 6);
6768 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6769 }
6770}
6771}
6772
6773 abuf->written = written;
6774 return vpc;
6775#undef FLD
6776}
6777
6778/* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6779
6780static SEM_PC
6781SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6782{
6783#define FLD(f) abuf->fields.sfmt_cstdu.f
6784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6785 int UNUSED written = 0;
6786 IADDR UNUSED pc = abuf->addr;
6787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6788
6789if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6790{
6791 SI tmp_address;
6792{
6793 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6794frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6795}
6796if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6797 {
6798 SI opval = tmp_address;
6799 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6800 written |= (1 << 7);
6801 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6802 }
6803}
6804}
6805}
6806
6807 abuf->written = written;
6808 return vpc;
6809#undef FLD
6810}
6811
6812/* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6813
6814static SEM_PC
6815SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6816{
6817#define FLD(f) abuf->fields.sfmt_cswap.f
6818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6819 int UNUSED written = 0;
6820 IADDR UNUSED pc = abuf->addr;
6821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6822
6823if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6824frvbf_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)));
6825}
6826
6827 return vpc;
6828#undef FLD
6829}
6830
6831/* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6832
6833static SEM_PC
6834SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6835{
6836#define FLD(f) abuf->fields.sfmt_cswap.f
6837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6838 int UNUSED written = 0;
6839 IADDR UNUSED pc = abuf->addr;
6840 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6841
6842if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6843frvbf_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)));
6844}
6845
6846 return vpc;
6847#undef FLD
6848}
6849
6850/* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6851
6852static SEM_PC
6853SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6854{
6855#define FLD(f) abuf->fields.sfmt_cswap.f
6856 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6857 int UNUSED written = 0;
6858 IADDR UNUSED pc = abuf->addr;
6859 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6860
6861if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6862frvbf_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)));
6863}
6864
6865 return vpc;
6866#undef FLD
6867}
6868
6869/* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6870
6871static SEM_PC
6872SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6873{
6874#define FLD(f) abuf->fields.sfmt_cstbfu.f
6875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6876 int UNUSED written = 0;
6877 IADDR UNUSED pc = abuf->addr;
6878 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6879
6880if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6881frvbf_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)));
6882}
6883
6884 return vpc;
6885#undef FLD
6886}
6887
6888/* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6889
6890static SEM_PC
6891SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6892{
6893#define FLD(f) abuf->fields.sfmt_cstbfu.f
6894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6895 int UNUSED written = 0;
6896 IADDR UNUSED pc = abuf->addr;
6897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6898
6899if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6900frvbf_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)));
6901}
6902
6903 return vpc;
6904#undef FLD
6905}
6906
6907/* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6908
6909static SEM_PC
6910SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6911{
6912#define FLD(f) abuf->fields.sfmt_cstbfu.f
6913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6914 int UNUSED written = 0;
6915 IADDR UNUSED pc = abuf->addr;
6916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6917
6918if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6919frvbf_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)));
6920}
6921
6922 return vpc;
6923#undef FLD
6924}
6925
29a79ca0 6926/* cstd: cstd$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
6927
6928static SEM_PC
6929SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6930{
6931#define FLD(f) abuf->fields.sfmt_cstdu.f
6932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6933 int UNUSED written = 0;
6934 IADDR UNUSED pc = abuf->addr;
6935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6936
6937if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6938{
6939 SI tmp_address;
6940{
6941 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6942frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6943}
6944}
6945}
6946
6947 return vpc;
6948#undef FLD
6949}
6950
29a79ca0 6951/* cstdf: cstdf$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
6952
6953static SEM_PC
6954SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6955{
6956#define FLD(f) abuf->fields.sfmt_cstdfu.f
6957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6958 int UNUSED written = 0;
6959 IADDR UNUSED pc = abuf->addr;
6960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6961
6962if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6963{
6964 SI tmp_address;
6965{
6966 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6967frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6968}
6969}
6970}
6971
6972 return vpc;
6973#undef FLD
6974}
6975
6976/* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6977
6978static SEM_PC
6979SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6980{
6981#define FLD(f) abuf->fields.sfmt_cswap.f
6982 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6983 int UNUSED written = 0;
6984 IADDR UNUSED pc = abuf->addr;
6985 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6986
6987if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6988{
6989 SI tmp_address;
6990{
6991 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6992frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6993}
6994}
6995}
6996
6997 return vpc;
6998#undef FLD
6999}
7000
7001/* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7002
7003static SEM_PC
7004SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7005{
7006#define FLD(f) abuf->fields.sfmt_cstbu.f
7007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7008 int UNUSED written = 0;
7009 IADDR UNUSED pc = abuf->addr;
7010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7011
7012if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7013{
7014 SI tmp_address;
7015 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7016frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7017 {
7018 SI opval = tmp_address;
7019 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7020 written |= (1 << 6);
7021 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7022 }
7023}
7024}
7025
7026 abuf->written = written;
7027 return vpc;
7028#undef FLD
7029}
7030
7031/* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7032
7033static SEM_PC
7034SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7035{
7036#define FLD(f) abuf->fields.sfmt_cstbu.f
7037 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7038 int UNUSED written = 0;
7039 IADDR UNUSED pc = abuf->addr;
7040 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7041
7042if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7043{
7044 SI tmp_address;
7045 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7046frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7047 {
7048 SI opval = tmp_address;
7049 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7050 written |= (1 << 6);
7051 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7052 }
7053}
7054}
7055
7056 abuf->written = written;
7057 return vpc;
7058#undef FLD
7059}
7060
7061/* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7062
7063static SEM_PC
7064SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7065{
7066#define FLD(f) abuf->fields.sfmt_cstbu.f
7067 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7068 int UNUSED written = 0;
7069 IADDR UNUSED pc = abuf->addr;
7070 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7071
7072if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7073{
7074 SI tmp_address;
7075 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7076frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7077 {
7078 SI opval = tmp_address;
7079 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7080 written |= (1 << 6);
7081 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7082 }
7083}
7084}
7085
7086 abuf->written = written;
7087 return vpc;
7088#undef FLD
7089}
7090
7091/* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7092
7093static SEM_PC
7094SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7095{
7096#define FLD(f) abuf->fields.sfmt_cstbfu.f
7097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7098 int UNUSED written = 0;
7099 IADDR UNUSED pc = abuf->addr;
7100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7101
7102if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7103{
7104 SI tmp_address;
7105 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7106frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7107 {
7108 SI opval = tmp_address;
7109 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7110 written |= (1 << 6);
7111 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7112 }
7113}
7114}
7115
7116 abuf->written = written;
7117 return vpc;
7118#undef FLD
7119}
7120
7121/* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7122
7123static SEM_PC
7124SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7125{
7126#define FLD(f) abuf->fields.sfmt_cstbfu.f
7127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7128 int UNUSED written = 0;
7129 IADDR UNUSED pc = abuf->addr;
7130 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7131
7132if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7133{
7134 SI tmp_address;
7135 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7136frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7137 {
7138 SI opval = tmp_address;
7139 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7140 written |= (1 << 6);
7141 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7142 }
7143}
7144}
7145
7146 abuf->written = written;
7147 return vpc;
7148#undef FLD
7149}
7150
7151/* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7152
7153static SEM_PC
7154SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7155{
7156#define FLD(f) abuf->fields.sfmt_cstbfu.f
7157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7158 int UNUSED written = 0;
7159 IADDR UNUSED pc = abuf->addr;
7160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7161
7162if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7163{
7164 SI tmp_address;
7165 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7166frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7167 {
7168 SI opval = tmp_address;
7169 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7170 written |= (1 << 6);
7171 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7172 }
7173}
7174}
7175
7176 abuf->written = written;
7177 return vpc;
7178#undef FLD
7179}
7180
29a79ca0 7181/* cstdu: cstdu$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
7182
7183static SEM_PC
7184SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7185{
7186#define FLD(f) abuf->fields.sfmt_cstdu.f
7187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7188 int UNUSED written = 0;
7189 IADDR UNUSED pc = abuf->addr;
7190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7191
7192if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7193{
7194 SI tmp_address;
7195{
7196 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7197frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7198}
7199 {
7200 SI opval = tmp_address;
7201 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7202 written |= (1 << 6);
7203 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7204 }
7205}
7206}
7207
7208 abuf->written = written;
7209 return vpc;
7210#undef FLD
7211}
7212
29a79ca0 7213/* cstdfu: cstdfu$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
7214
7215static SEM_PC
7216SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7217{
7218#define FLD(f) abuf->fields.sfmt_cstdfu.f
7219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7220 int UNUSED written = 0;
7221 IADDR UNUSED pc = abuf->addr;
7222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7223
7224if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7225{
7226 SI tmp_address;
7227{
7228 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7229frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7230}
7231 {
7232 SI opval = tmp_address;
7233 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7234 written |= (1 << 6);
7235 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7236 }
7237}
7238}
7239
7240 abuf->written = written;
7241 return vpc;
7242#undef FLD
7243}
7244
7245/* stbi: stbi$pack $GRk,@($GRi,$d12) */
7246
7247static SEM_PC
7248SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7249{
7250#define FLD(f) abuf->fields.sfmt_swapi.f
7251 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7252 int UNUSED written = 0;
7253 IADDR UNUSED pc = abuf->addr;
7254 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7255
7256frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7257
7258 return vpc;
7259#undef FLD
7260}
7261
7262/* sthi: sthi$pack $GRk,@($GRi,$d12) */
7263
7264static SEM_PC
7265SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7266{
7267#define FLD(f) abuf->fields.sfmt_swapi.f
7268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7269 int UNUSED written = 0;
7270 IADDR UNUSED pc = abuf->addr;
7271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7272
7273frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7274
7275 return vpc;
7276#undef FLD
7277}
7278
7279/* sti: sti$pack $GRk,@($GRi,$d12) */
7280
7281static SEM_PC
7282SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7283{
7284#define FLD(f) abuf->fields.sfmt_swapi.f
7285 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7286 int UNUSED written = 0;
7287 IADDR UNUSED pc = abuf->addr;
7288 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7289
7290frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7291
7292 return vpc;
7293#undef FLD
7294}
7295
7296/* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7297
7298static SEM_PC
7299SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7300{
7301#define FLD(f) abuf->fields.sfmt_stbfi.f
7302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7303 int UNUSED written = 0;
7304 IADDR UNUSED pc = abuf->addr;
7305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7306
7307frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7308
7309 return vpc;
7310#undef FLD
7311}
7312
7313/* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7314
7315static SEM_PC
7316SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7317{
7318#define FLD(f) abuf->fields.sfmt_stbfi.f
7319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7320 int UNUSED written = 0;
7321 IADDR UNUSED pc = abuf->addr;
7322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7323
7324frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7325
7326 return vpc;
7327#undef FLD
7328}
7329
7330/* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7331
7332static SEM_PC
7333SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7334{
7335#define FLD(f) abuf->fields.sfmt_stbfi.f
7336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7337 int UNUSED written = 0;
7338 IADDR UNUSED pc = abuf->addr;
7339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7340
7341frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7342
7343 return vpc;
7344#undef FLD
7345}
7346
29a79ca0 7347/* stdi: stdi$pack $GRdoublek,@($GRi,$d12) */
b34f6357
DB
7348
7349static SEM_PC
7350SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7351{
7352#define FLD(f) abuf->fields.sfmt_stdi.f
7353 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7354 int UNUSED written = 0;
7355 IADDR UNUSED pc = abuf->addr;
7356 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7357
7358{
7359 SI tmp_address;
7360{
7361 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7362frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7363}
7364}
7365
7366 return vpc;
7367#undef FLD
7368}
7369
29a79ca0 7370/* stdfi: stdfi$pack $FRdoublek,@($GRi,$d12) */
b34f6357
DB
7371
7372static SEM_PC
7373SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7374{
7375#define FLD(f) abuf->fields.sfmt_stdfi.f
7376 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7377 int UNUSED written = 0;
7378 IADDR UNUSED pc = abuf->addr;
7379 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7380
7381{
7382 SI tmp_address;
7383{
7384 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7385frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7386}
7387}
7388
7389 return vpc;
7390#undef FLD
7391}
7392
7393/* stqi: stqi$pack $GRk,@($GRi,$d12) */
7394
7395static SEM_PC
7396SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7397{
7398#define FLD(f) abuf->fields.sfmt_stdi.f
7399 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7400 int UNUSED written = 0;
7401 IADDR UNUSED pc = abuf->addr;
7402 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7403
7404{
7405 SI tmp_address;
7406{
7407 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7408frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7409}
7410}
7411
7412 return vpc;
7413#undef FLD
7414}
7415
7416/* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7417
7418static SEM_PC
7419SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7420{
7421#define FLD(f) abuf->fields.sfmt_stdfi.f
7422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7423 int UNUSED written = 0;
7424 IADDR UNUSED pc = abuf->addr;
7425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7426
7427{
7428 SI tmp_address;
7429{
7430 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7431frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7432}
7433}
7434
7435 return vpc;
7436#undef FLD
7437}
7438
7439/* swap: swap$pack @($GRi,$GRj),$GRk */
7440
7441static SEM_PC
7442SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7443{
7444#define FLD(f) abuf->fields.sfmt_cswap.f
7445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7446 int UNUSED written = 0;
7447 IADDR UNUSED pc = abuf->addr;
7448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7449
7450{
7451 SI tmp_tmp;
7452 SI tmp_address;
7453 tmp_tmp = GET_H_GR (FLD (f_GRk));
7454 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
e930b1f5 7455frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7456 {
7457 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7458 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7459 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7460 }
7461frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7462}
7463
7464 return vpc;
7465#undef FLD
7466}
7467
7468/* swapi: swapi$pack @($GRi,$d12),$GRk */
7469
7470static SEM_PC
7471SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7472{
7473#define FLD(f) abuf->fields.sfmt_swapi.f
7474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7475 int UNUSED written = 0;
7476 IADDR UNUSED pc = abuf->addr;
7477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7478
7479{
7480 SI tmp_tmp;
7481 SI tmp_address;
7482 tmp_tmp = GET_H_GR (FLD (f_GRk));
7483 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
e930b1f5 7484frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7485 {
7486 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7487 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7488 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7489 }
7490frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7491}
7492
7493 return vpc;
7494#undef FLD
7495}
7496
7497/* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7498
7499static SEM_PC
7500SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7501{
7502#define FLD(f) abuf->fields.sfmt_cswap.f
7503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7504 int UNUSED written = 0;
7505 IADDR UNUSED pc = abuf->addr;
7506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7507
7508if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7509{
7510 SI tmp_tmp;
7511 SI tmp_address;
7512 tmp_tmp = GET_H_GR (FLD (f_GRk));
7513 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
e930b1f5 7514frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7515 {
7516 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7517 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7518 written |= (1 << 6);
7519 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7520 }
7521frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7522}
7523}
7524
7525 abuf->written = written;
7526 return vpc;
7527#undef FLD
7528}
7529
7530/* movgf: movgf$pack $GRj,$FRintk */
7531
7532static SEM_PC
7533SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7534{
7535#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7537 int UNUSED written = 0;
7538 IADDR UNUSED pc = abuf->addr;
7539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7540
7541 {
7542 SI opval = GET_H_GR (FLD (f_GRj));
7543 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7544 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7545 }
7546
7547 return vpc;
7548#undef FLD
7549}
7550
7551/* movfg: movfg$pack $FRintk,$GRj */
7552
7553static SEM_PC
7554SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7555{
7556#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7558 int UNUSED written = 0;
7559 IADDR UNUSED pc = abuf->addr;
7560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7561
7562 {
7563 SI opval = GET_H_FR_INT (FLD (f_FRk));
7564 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7565 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7566 }
7567
7568 return vpc;
7569#undef FLD
7570}
7571
7572/* movgfd: movgfd$pack $GRj,$FRintk */
7573
7574static SEM_PC
7575SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7576{
7577#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7578 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7579 int UNUSED written = 0;
7580 IADDR UNUSED pc = abuf->addr;
7581 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7582
7583if (EQSI (FLD (f_GRj), 0)) {
7584{
7585 {
7586 SI opval = 0;
7587 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7588 written |= (1 << 4);
7589 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7590 }
7591 {
7592 USI opval = 0;
7593 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7594 written |= (1 << 5);
7595 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7596 }
7597}
7598} else {
7599{
7600 {
7601 SI opval = GET_H_GR (FLD (f_GRj));
7602 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7603 written |= (1 << 4);
7604 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7605 }
7606 {
7607 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7608 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7609 written |= (1 << 5);
7610 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7611 }
7612}
7613}
7614
7615 abuf->written = written;
7616 return vpc;
7617#undef FLD
7618}
7619
7620/* movfgd: movfgd$pack $FRintk,$GRj */
7621
7622static SEM_PC
7623SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7624{
7625#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7627 int UNUSED written = 0;
7628 IADDR UNUSED pc = abuf->addr;
7629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7630
7631if (NESI (FLD (f_GRj), 0)) {
7632{
7633 {
7634 SI opval = GET_H_FR_INT (FLD (f_FRk));
7635 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7636 written |= (1 << 4);
7637 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7638 }
7639 {
7640 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7641 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7642 written |= (1 << 5);
7643 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7644 }
7645}
7646}
7647
7648 abuf->written = written;
7649 return vpc;
7650#undef FLD
7651}
7652
7653/* movgfq: movgfq$pack $GRj,$FRintk */
7654
7655static SEM_PC
7656SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7657{
7658#define FLD(f) abuf->fields.sfmt_movgfq.f
7659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7660 int UNUSED written = 0;
7661 IADDR UNUSED pc = abuf->addr;
7662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7663
7664if (EQSI (FLD (f_GRj), 0)) {
7665{
7666 {
7667 SI opval = 0;
7668 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7669 written |= (1 << 6);
7670 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7671 }
7672 {
7673 USI opval = 0;
7674 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7675 written |= (1 << 7);
7676 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7677 }
7678 {
7679 USI opval = 0;
7680 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7681 written |= (1 << 8);
7682 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7683 }
7684 {
7685 USI opval = 0;
7686 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7687 written |= (1 << 9);
7688 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7689 }
7690}
7691} else {
7692{
7693 {
7694 SI opval = GET_H_GR (FLD (f_GRj));
7695 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7696 written |= (1 << 6);
7697 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7698 }
7699 {
7700 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7701 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7702 written |= (1 << 7);
7703 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7704 }
7705 {
7706 USI opval = GET_H_GR (((FLD (f_GRj)) + (2)));
7707 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7708 written |= (1 << 8);
7709 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7710 }
7711 {
7712 USI opval = GET_H_GR (((FLD (f_GRj)) + (3)));
7713 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7714 written |= (1 << 9);
7715 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7716 }
7717}
7718}
7719
7720 abuf->written = written;
7721 return vpc;
7722#undef FLD
7723}
7724
7725/* movfgq: movfgq$pack $FRintk,$GRj */
7726
7727static SEM_PC
7728SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7729{
7730#define FLD(f) abuf->fields.sfmt_movfgq.f
7731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7732 int UNUSED written = 0;
7733 IADDR UNUSED pc = abuf->addr;
7734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7735
7736if (NESI (FLD (f_GRj), 0)) {
7737{
7738 {
7739 SI opval = GET_H_FR_INT (FLD (f_FRk));
7740 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7741 written |= (1 << 6);
7742 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7743 }
7744 {
7745 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7746 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7747 written |= (1 << 7);
7748 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7749 }
7750 {
7751 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (2)));
7752 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (2)), opval);
7753 written |= (1 << 8);
7754 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7755 }
7756 {
7757 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (3)));
7758 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (3)), opval);
7759 written |= (1 << 9);
7760 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7761 }
7762}
7763}
7764
7765 abuf->written = written;
7766 return vpc;
7767#undef FLD
7768}
7769
7770/* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7771
7772static SEM_PC
7773SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7774{
7775#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7777 int UNUSED written = 0;
7778 IADDR UNUSED pc = abuf->addr;
7779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7780
7781if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7782 {
7783 SI opval = GET_H_GR (FLD (f_GRj));
7784 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7785 written |= (1 << 3);
7786 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7787 }
7788}
7789
7790 abuf->written = written;
7791 return vpc;
7792#undef FLD
7793}
7794
7795/* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7796
7797static SEM_PC
7798SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7799{
7800#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7801 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7802 int UNUSED written = 0;
7803 IADDR UNUSED pc = abuf->addr;
7804 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7805
7806if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7807 {
7808 SI opval = GET_H_FR_INT (FLD (f_FRk));
7809 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7810 written |= (1 << 3);
7811 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7812 }
7813}
7814
7815 abuf->written = written;
7816 return vpc;
7817#undef FLD
7818}
7819
7820/* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7821
7822static SEM_PC
7823SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7824{
7825#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7827 int UNUSED written = 0;
7828 IADDR UNUSED pc = abuf->addr;
7829 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7830
7831if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7832if (EQSI (FLD (f_GRj), 0)) {
7833{
7834 {
7835 SI opval = 0;
7836 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7837 written |= (1 << 6);
7838 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7839 }
7840 {
7841 USI opval = 0;
7842 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7843 written |= (1 << 7);
7844 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7845 }
7846}
7847} else {
7848{
7849 {
7850 SI opval = GET_H_GR (FLD (f_GRj));
7851 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7852 written |= (1 << 6);
7853 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7854 }
7855 {
7856 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7857 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7858 written |= (1 << 7);
7859 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7860 }
7861}
7862}
7863}
7864
7865 abuf->written = written;
7866 return vpc;
7867#undef FLD
7868}
7869
7870/* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7871
7872static SEM_PC
7873SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7874{
7875#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7876 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7877 int UNUSED written = 0;
7878 IADDR UNUSED pc = abuf->addr;
7879 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7880
7881if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7882{
7883 {
7884 SI opval = GET_H_FR_INT (FLD (f_FRk));
7885 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7886 written |= (1 << 6);
7887 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7888 }
7889 {
7890 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7891 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7892 written |= (1 << 7);
7893 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7894 }
7895}
7896}
7897
7898 abuf->written = written;
7899 return vpc;
7900#undef FLD
7901}
7902
7903/* movgs: movgs$pack $GRj,$spr */
7904
7905static SEM_PC
7906SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7907{
7908#define FLD(f) abuf->fields.sfmt_movgs.f
7909 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7910 int UNUSED written = 0;
7911 IADDR UNUSED pc = abuf->addr;
7912 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7913
7914 {
7915 USI opval = GET_H_GR (FLD (f_GRj));
7916 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
7917 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
7918 }
7919
7920 return vpc;
7921#undef FLD
7922}
7923
7924/* movsg: movsg$pack $spr,$GRj */
7925
7926static SEM_PC
7927SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7928{
7929#define FLD(f) abuf->fields.sfmt_movsg.f
7930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7931 int UNUSED written = 0;
7932 IADDR UNUSED pc = abuf->addr;
7933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7934
7935 {
7936 SI opval = GET_H_SPR (FLD (f_spr));
7937 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7938 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7939 }
7940
7941 return vpc;
7942#undef FLD
7943}
7944
7945/* bra: bra$pack $hint_taken$label16 */
7946
7947static SEM_PC
7948SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7949{
7950#define FLD(f) abuf->fields.sfmt_fbne.f
7951 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7952 int UNUSED written = 0;
7953 IADDR UNUSED pc = abuf->addr;
7954 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7955
7956{
7957frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7958 {
7959 USI opval = FLD (i_label16);
7960 sim_queue_pc_write (current_cpu, opval);
7961 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7962 }
7963}
7964
7965 return vpc;
7966#undef FLD
7967}
7968
7969/* bno: bno$pack$hint_not_taken */
7970
7971static SEM_PC
7972SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7973{
7974#define FLD(f) abuf->fields.sfmt_fbne.f
7975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7976 int UNUSED written = 0;
7977 IADDR UNUSED pc = abuf->addr;
7978 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7979
7980frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7981
7982 return vpc;
7983#undef FLD
7984}
7985
7986/* beq: beq$pack $ICCi_2,$hint,$label16 */
7987
7988static SEM_PC
7989SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7990{
7991#define FLD(f) abuf->fields.sfmt_beq.f
7992 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7993 int UNUSED written = 0;
7994 IADDR UNUSED pc = abuf->addr;
7995 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7996
7997{
7998frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7999if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8000 {
8001 USI opval = FLD (i_label16);
8002 sim_queue_pc_write (current_cpu, opval);
8003 written |= (1 << 3);
8004 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8005 }
8006}
8007}
8008
8009 abuf->written = written;
8010 return vpc;
8011#undef FLD
8012}
8013
8014/* bne: bne$pack $ICCi_2,$hint,$label16 */
8015
8016static SEM_PC
8017SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8018{
8019#define FLD(f) abuf->fields.sfmt_beq.f
8020 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8021 int UNUSED written = 0;
8022 IADDR UNUSED pc = abuf->addr;
8023 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8024
8025{
8026frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8027if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8028 {
8029 USI opval = FLD (i_label16);
8030 sim_queue_pc_write (current_cpu, opval);
8031 written |= (1 << 3);
8032 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8033 }
8034}
8035}
8036
8037 abuf->written = written;
8038 return vpc;
8039#undef FLD
8040}
8041
8042/* ble: ble$pack $ICCi_2,$hint,$label16 */
8043
8044static SEM_PC
8045SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8046{
8047#define FLD(f) abuf->fields.sfmt_beq.f
8048 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8049 int UNUSED written = 0;
8050 IADDR UNUSED pc = abuf->addr;
8051 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8052
8053{
8054frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8055if (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))))) {
8056 {
8057 USI opval = FLD (i_label16);
8058 sim_queue_pc_write (current_cpu, opval);
8059 written |= (1 << 3);
8060 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8061 }
8062}
8063}
8064
8065 abuf->written = written;
8066 return vpc;
8067#undef FLD
8068}
8069
8070/* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8071
8072static SEM_PC
8073SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8074{
8075#define FLD(f) abuf->fields.sfmt_beq.f
8076 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8077 int UNUSED written = 0;
8078 IADDR UNUSED pc = abuf->addr;
8079 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8080
8081{
8082frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8083if (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)))))) {
8084 {
8085 USI opval = FLD (i_label16);
8086 sim_queue_pc_write (current_cpu, opval);
8087 written |= (1 << 3);
8088 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8089 }
8090}
8091}
8092
8093 abuf->written = written;
8094 return vpc;
8095#undef FLD
8096}
8097
8098/* blt: blt$pack $ICCi_2,$hint,$label16 */
8099
8100static SEM_PC
8101SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8102{
8103#define FLD(f) abuf->fields.sfmt_beq.f
8104 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8105 int UNUSED written = 0;
8106 IADDR UNUSED pc = abuf->addr;
8107 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8108
8109{
8110frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8111if (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)))) {
8112 {
8113 USI opval = FLD (i_label16);
8114 sim_queue_pc_write (current_cpu, opval);
8115 written |= (1 << 3);
8116 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8117 }
8118}
8119}
8120
8121 abuf->written = written;
8122 return vpc;
8123#undef FLD
8124}
8125
8126/* bge: bge$pack $ICCi_2,$hint,$label16 */
8127
8128static SEM_PC
8129SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8130{
8131#define FLD(f) abuf->fields.sfmt_beq.f
8132 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8133 int UNUSED written = 0;
8134 IADDR UNUSED pc = abuf->addr;
8135 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8136
8137{
8138frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8139if (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))))) {
8140 {
8141 USI opval = FLD (i_label16);
8142 sim_queue_pc_write (current_cpu, opval);
8143 written |= (1 << 3);
8144 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8145 }
8146}
8147}
8148
8149 abuf->written = written;
8150 return vpc;
8151#undef FLD
8152}
8153
8154/* bls: bls$pack $ICCi_2,$hint,$label16 */
8155
8156static SEM_PC
8157SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8158{
8159#define FLD(f) abuf->fields.sfmt_beq.f
8160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8161 int UNUSED written = 0;
8162 IADDR UNUSED pc = abuf->addr;
8163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8164
8165{
8166frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8167if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8168 {
8169 USI opval = FLD (i_label16);
8170 sim_queue_pc_write (current_cpu, opval);
8171 written |= (1 << 3);
8172 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8173 }
8174}
8175}
8176
8177 abuf->written = written;
8178 return vpc;
8179#undef FLD
8180}
8181
8182/* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8183
8184static SEM_PC
8185SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8186{
8187#define FLD(f) abuf->fields.sfmt_beq.f
8188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8189 int UNUSED written = 0;
8190 IADDR UNUSED pc = abuf->addr;
8191 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8192
8193{
8194frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8195if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
8196 {
8197 USI opval = FLD (i_label16);
8198 sim_queue_pc_write (current_cpu, opval);
8199 written |= (1 << 3);
8200 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8201 }
8202}
8203}
8204
8205 abuf->written = written;
8206 return vpc;
8207#undef FLD
8208}
8209
8210/* bc: bc$pack $ICCi_2,$hint,$label16 */
8211
8212static SEM_PC
8213SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8214{
8215#define FLD(f) abuf->fields.sfmt_beq.f
8216 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8217 int UNUSED written = 0;
8218 IADDR UNUSED pc = abuf->addr;
8219 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8220
8221{
8222frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8223if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8224 {
8225 USI opval = FLD (i_label16);
8226 sim_queue_pc_write (current_cpu, opval);
8227 written |= (1 << 3);
8228 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8229 }
8230}
8231}
8232
8233 abuf->written = written;
8234 return vpc;
8235#undef FLD
8236}
8237
8238/* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8239
8240static SEM_PC
8241SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8242{
8243#define FLD(f) abuf->fields.sfmt_beq.f
8244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8245 int UNUSED written = 0;
8246 IADDR UNUSED pc = abuf->addr;
8247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8248
8249{
8250frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8251if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8252 {
8253 USI opval = FLD (i_label16);
8254 sim_queue_pc_write (current_cpu, opval);
8255 written |= (1 << 3);
8256 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8257 }
8258}
8259}
8260
8261 abuf->written = written;
8262 return vpc;
8263#undef FLD
8264}
8265
8266/* bn: bn$pack $ICCi_2,$hint,$label16 */
8267
8268static SEM_PC
8269SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8270{
8271#define FLD(f) abuf->fields.sfmt_beq.f
8272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8273 int UNUSED written = 0;
8274 IADDR UNUSED pc = abuf->addr;
8275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8276
8277{
8278frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8279if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8280 {
8281 USI opval = FLD (i_label16);
8282 sim_queue_pc_write (current_cpu, opval);
8283 written |= (1 << 3);
8284 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8285 }
8286}
8287}
8288
8289 abuf->written = written;
8290 return vpc;
8291#undef FLD
8292}
8293
8294/* bp: bp$pack $ICCi_2,$hint,$label16 */
8295
8296static SEM_PC
8297SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8298{
8299#define FLD(f) abuf->fields.sfmt_beq.f
8300 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8301 int UNUSED written = 0;
8302 IADDR UNUSED pc = abuf->addr;
8303 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8304
8305{
8306frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8307if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8308 {
8309 USI opval = FLD (i_label16);
8310 sim_queue_pc_write (current_cpu, opval);
8311 written |= (1 << 3);
8312 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8313 }
8314}
8315}
8316
8317 abuf->written = written;
8318 return vpc;
8319#undef FLD
8320}
8321
8322/* bv: bv$pack $ICCi_2,$hint,$label16 */
8323
8324static SEM_PC
8325SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8326{
8327#define FLD(f) abuf->fields.sfmt_beq.f
8328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8329 int UNUSED written = 0;
8330 IADDR UNUSED pc = abuf->addr;
8331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8332
8333{
8334frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8335if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8336 {
8337 USI opval = FLD (i_label16);
8338 sim_queue_pc_write (current_cpu, opval);
8339 written |= (1 << 3);
8340 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8341 }
8342}
8343}
8344
8345 abuf->written = written;
8346 return vpc;
8347#undef FLD
8348}
8349
8350/* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8351
8352static SEM_PC
8353SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8354{
8355#define FLD(f) abuf->fields.sfmt_beq.f
8356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8357 int UNUSED written = 0;
8358 IADDR UNUSED pc = abuf->addr;
8359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8360
8361{
8362frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8363if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8364 {
8365 USI opval = FLD (i_label16);
8366 sim_queue_pc_write (current_cpu, opval);
8367 written |= (1 << 3);
8368 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8369 }
8370}
8371}
8372
8373 abuf->written = written;
8374 return vpc;
8375#undef FLD
8376}
8377
8378/* fbra: fbra$pack $hint_taken$label16 */
8379
8380static SEM_PC
8381SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8382{
8383#define FLD(f) abuf->fields.sfmt_fbne.f
8384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8385 int UNUSED written = 0;
8386 IADDR UNUSED pc = abuf->addr;
8387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8388
8389{
8390frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8391 {
8392 USI opval = FLD (i_label16);
8393 sim_queue_pc_write (current_cpu, opval);
8394 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8395 }
8396}
8397
8398 return vpc;
8399#undef FLD
8400}
8401
8402/* fbno: fbno$pack$hint_not_taken */
8403
8404static SEM_PC
8405SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8406{
8407#define FLD(f) abuf->fields.sfmt_fbne.f
8408 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8409 int UNUSED written = 0;
8410 IADDR UNUSED pc = abuf->addr;
8411 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8412
8413frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8414
8415 return vpc;
8416#undef FLD
8417}
8418
8419/* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8420
8421static SEM_PC
8422SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8423{
8424#define FLD(f) abuf->fields.sfmt_fbne.f
8425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8426 int UNUSED written = 0;
8427 IADDR UNUSED pc = abuf->addr;
8428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8429
8430{
8431frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8432if (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))))) {
8433 {
8434 USI opval = FLD (i_label16);
8435 sim_queue_pc_write (current_cpu, opval);
8436 written |= (1 << 3);
8437 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8438 }
8439}
8440}
8441
8442 abuf->written = written;
8443 return vpc;
8444#undef FLD
8445}
8446
8447/* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8448
8449static SEM_PC
8450SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8451{
8452#define FLD(f) abuf->fields.sfmt_fbne.f
8453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8454 int UNUSED written = 0;
8455 IADDR UNUSED pc = abuf->addr;
8456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8457
8458{
8459frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8460if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8461 {
8462 USI opval = FLD (i_label16);
8463 sim_queue_pc_write (current_cpu, opval);
8464 written |= (1 << 3);
8465 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8466 }
8467}
8468}
8469
8470 abuf->written = written;
8471 return vpc;
8472#undef FLD
8473}
8474
8475/* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8476
8477static SEM_PC
8478SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8479{
8480#define FLD(f) abuf->fields.sfmt_fbne.f
8481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8482 int UNUSED written = 0;
8483 IADDR UNUSED pc = abuf->addr;
8484 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8485
8486{
8487frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8488if (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)))) {
8489 {
8490 USI opval = FLD (i_label16);
8491 sim_queue_pc_write (current_cpu, opval);
8492 written |= (1 << 3);
8493 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8494 }
8495}
8496}
8497
8498 abuf->written = written;
8499 return vpc;
8500#undef FLD
8501}
8502
8503/* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8504
8505static SEM_PC
8506SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8507{
8508#define FLD(f) abuf->fields.sfmt_fbne.f
8509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8510 int UNUSED written = 0;
8511 IADDR UNUSED pc = abuf->addr;
8512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8513
8514{
8515frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8516if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8517 {
8518 USI opval = FLD (i_label16);
8519 sim_queue_pc_write (current_cpu, opval);
8520 written |= (1 << 3);
8521 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8522 }
8523}
8524}
8525
8526 abuf->written = written;
8527 return vpc;
8528#undef FLD
8529}
8530
8531/* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8532
8533static SEM_PC
8534SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8535{
8536#define FLD(f) abuf->fields.sfmt_fbne.f
8537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8538 int UNUSED written = 0;
8539 IADDR UNUSED pc = abuf->addr;
8540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8541
8542{
8543frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8544if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8545 {
8546 USI opval = FLD (i_label16);
8547 sim_queue_pc_write (current_cpu, opval);
8548 written |= (1 << 3);
8549 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8550 }
8551}
8552}
8553
8554 abuf->written = written;
8555 return vpc;
8556#undef FLD
8557}
8558
8559/* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8560
8561static SEM_PC
8562SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8563{
8564#define FLD(f) abuf->fields.sfmt_fbne.f
8565 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8566 int UNUSED written = 0;
8567 IADDR UNUSED pc = abuf->addr;
8568 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8569
8570{
8571frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8572if (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)))) {
8573 {
8574 USI opval = FLD (i_label16);
8575 sim_queue_pc_write (current_cpu, opval);
8576 written |= (1 << 3);
8577 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8578 }
8579}
8580}
8581
8582 abuf->written = written;
8583 return vpc;
8584#undef FLD
8585}
8586
8587/* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8588
8589static SEM_PC
8590SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8591{
8592#define FLD(f) abuf->fields.sfmt_fbne.f
8593 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8594 int UNUSED written = 0;
8595 IADDR UNUSED pc = abuf->addr;
8596 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8597
8598{
8599frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8600if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8601 {
8602 USI opval = FLD (i_label16);
8603 sim_queue_pc_write (current_cpu, opval);
8604 written |= (1 << 3);
8605 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8606 }
8607}
8608}
8609
8610 abuf->written = written;
8611 return vpc;
8612#undef FLD
8613}
8614
8615/* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8616
8617static SEM_PC
8618SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8619{
8620#define FLD(f) abuf->fields.sfmt_fbne.f
8621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8622 int UNUSED written = 0;
8623 IADDR UNUSED pc = abuf->addr;
8624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8625
8626{
8627frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8628if (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))))) {
8629 {
8630 USI opval = FLD (i_label16);
8631 sim_queue_pc_write (current_cpu, opval);
8632 written |= (1 << 3);
8633 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8634 }
8635}
8636}
8637
8638 abuf->written = written;
8639 return vpc;
8640#undef FLD
8641}
8642
8643/* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8644
8645static SEM_PC
8646SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8647{
8648#define FLD(f) abuf->fields.sfmt_fbne.f
8649 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8650 int UNUSED written = 0;
8651 IADDR UNUSED pc = abuf->addr;
8652 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8653
8654{
8655frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8656if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8657 {
8658 USI opval = FLD (i_label16);
8659 sim_queue_pc_write (current_cpu, opval);
8660 written |= (1 << 3);
8661 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8662 }
8663}
8664}
8665
8666 abuf->written = written;
8667 return vpc;
8668#undef FLD
8669}
8670
8671/* fble: fble$pack $FCCi_2,$hint,$label16 */
8672
8673static SEM_PC
8674SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8675{
8676#define FLD(f) abuf->fields.sfmt_fbne.f
8677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8678 int UNUSED written = 0;
8679 IADDR UNUSED pc = abuf->addr;
8680 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8681
8682{
8683frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8684if (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)))) {
8685 {
8686 USI opval = FLD (i_label16);
8687 sim_queue_pc_write (current_cpu, opval);
8688 written |= (1 << 3);
8689 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8690 }
8691}
8692}
8693
8694 abuf->written = written;
8695 return vpc;
8696#undef FLD
8697}
8698
8699/* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8700
8701static SEM_PC
8702SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8703{
8704#define FLD(f) abuf->fields.sfmt_fbne.f
8705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8706 int UNUSED written = 0;
8707 IADDR UNUSED pc = abuf->addr;
8708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8709
8710{
8711frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8712if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8713 {
8714 USI opval = FLD (i_label16);
8715 sim_queue_pc_write (current_cpu, opval);
8716 written |= (1 << 3);
8717 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8718 }
8719}
8720}
8721
8722 abuf->written = written;
8723 return vpc;
8724#undef FLD
8725}
8726
8727/* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8728
8729static SEM_PC
8730SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8731{
8732#define FLD(f) abuf->fields.sfmt_fbne.f
8733 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8734 int UNUSED written = 0;
8735 IADDR UNUSED pc = abuf->addr;
8736 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8737
8738{
8739frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8740if (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))))) {
8741 {
8742 USI opval = FLD (i_label16);
8743 sim_queue_pc_write (current_cpu, opval);
8744 written |= (1 << 3);
8745 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8746 }
8747}
8748}
8749
8750 abuf->written = written;
8751 return vpc;
8752#undef FLD
8753}
8754
8755/* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8756
8757static SEM_PC
8758SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8759{
8760#define FLD(f) abuf->fields.sfmt_fbne.f
8761 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8762 int UNUSED written = 0;
8763 IADDR UNUSED pc = abuf->addr;
8764 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8765
8766{
8767frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8768if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8769 {
8770 USI opval = FLD (i_label16);
8771 sim_queue_pc_write (current_cpu, opval);
8772 written |= (1 << 3);
8773 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8774 }
8775}
8776}
8777
8778 abuf->written = written;
8779 return vpc;
8780#undef FLD
8781}
8782
8783/* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8784
8785static SEM_PC
8786SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8787{
8788#define FLD(f) abuf->fields.sfmt_fbne.f
8789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8790 int UNUSED written = 0;
8791 IADDR UNUSED pc = abuf->addr;
8792 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8793
8794{
8795frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8796if (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))))) {
8797 {
8798 USI opval = FLD (i_label16);
8799 sim_queue_pc_write (current_cpu, opval);
8800 written |= (1 << 3);
8801 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8802 }
8803}
8804}
8805
8806 abuf->written = written;
8807 return vpc;
8808#undef FLD
8809}
8810
8811/* bctrlr: bctrlr$pack $ccond,$hint */
8812
8813static SEM_PC
8814SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8815{
8816#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8818 int UNUSED written = 0;
8819 IADDR UNUSED pc = abuf->addr;
8820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8821
8822{
8823frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8824{
8825 SI tmp_tmp;
8826 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8827 {
8828 USI opval = tmp_tmp;
8829 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8830 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8831 }
8832if (EQSI (FLD (f_ccond), 0)) {
8833if (NESI (tmp_tmp, 0)) {
8834 {
8835 USI opval = GET_H_SPR (((UINT) 272));
8836 sim_queue_pc_write (current_cpu, opval);
8837 written |= (1 << 5);
8838 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8839 }
8840}
8841} else {
8842if (EQSI (tmp_tmp, 0)) {
8843 {
8844 USI opval = GET_H_SPR (((UINT) 272));
8845 sim_queue_pc_write (current_cpu, opval);
8846 written |= (1 << 5);
8847 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8848 }
8849}
8850}
8851}
8852}
8853
8854 abuf->written = written;
8855 return vpc;
8856#undef FLD
8857}
8858
8859/* bralr: bralr$pack$hint_taken */
8860
8861static SEM_PC
8862SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8863{
8864#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8866 int UNUSED written = 0;
8867 IADDR UNUSED pc = abuf->addr;
8868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8869
8870{
8871frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8872 {
8873 USI opval = GET_H_SPR (((UINT) 272));
8874 sim_queue_pc_write (current_cpu, opval);
8875 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8876 }
8877}
8878
8879 return vpc;
8880#undef FLD
8881}
8882
8883/* bnolr: bnolr$pack$hint_not_taken */
8884
8885static SEM_PC
8886SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8887{
8888#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8890 int UNUSED written = 0;
8891 IADDR UNUSED pc = abuf->addr;
8892 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8893
8894frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8895
8896 return vpc;
8897#undef FLD
8898}
8899
8900/* beqlr: beqlr$pack $ICCi_2,$hint */
8901
8902static SEM_PC
8903SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8904{
8905#define FLD(f) abuf->fields.sfmt_bceqlr.f
8906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8907 int UNUSED written = 0;
8908 IADDR UNUSED pc = abuf->addr;
8909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8910
8911{
8912frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8913if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8914 {
8915 USI opval = GET_H_SPR (((UINT) 272));
8916 sim_queue_pc_write (current_cpu, opval);
8917 written |= (1 << 3);
8918 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8919 }
8920}
8921}
8922
8923 abuf->written = written;
8924 return vpc;
8925#undef FLD
8926}
8927
8928/* bnelr: bnelr$pack $ICCi_2,$hint */
8929
8930static SEM_PC
8931SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8932{
8933#define FLD(f) abuf->fields.sfmt_bceqlr.f
8934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8935 int UNUSED written = 0;
8936 IADDR UNUSED pc = abuf->addr;
8937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8938
8939{
8940frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8941if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8942 {
8943 USI opval = GET_H_SPR (((UINT) 272));
8944 sim_queue_pc_write (current_cpu, opval);
8945 written |= (1 << 3);
8946 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8947 }
8948}
8949}
8950
8951 abuf->written = written;
8952 return vpc;
8953#undef FLD
8954}
8955
8956/* blelr: blelr$pack $ICCi_2,$hint */
8957
8958static SEM_PC
8959SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8960{
8961#define FLD(f) abuf->fields.sfmt_bceqlr.f
8962 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8963 int UNUSED written = 0;
8964 IADDR UNUSED pc = abuf->addr;
8965 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8966
8967{
8968frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8969if (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))))) {
8970 {
8971 USI opval = GET_H_SPR (((UINT) 272));
8972 sim_queue_pc_write (current_cpu, opval);
8973 written |= (1 << 3);
8974 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8975 }
8976}
8977}
8978
8979 abuf->written = written;
8980 return vpc;
8981#undef FLD
8982}
8983
8984/* bgtlr: bgtlr$pack $ICCi_2,$hint */
8985
8986static SEM_PC
8987SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8988{
8989#define FLD(f) abuf->fields.sfmt_bceqlr.f
8990 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8991 int UNUSED written = 0;
8992 IADDR UNUSED pc = abuf->addr;
8993 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8994
8995{
8996frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8997if (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)))))) {
8998 {
8999 USI opval = GET_H_SPR (((UINT) 272));
9000 sim_queue_pc_write (current_cpu, opval);
9001 written |= (1 << 3);
9002 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9003 }
9004}
9005}
9006
9007 abuf->written = written;
9008 return vpc;
9009#undef FLD
9010}
9011
9012/* bltlr: bltlr$pack $ICCi_2,$hint */
9013
9014static SEM_PC
9015SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9016{
9017#define FLD(f) abuf->fields.sfmt_bceqlr.f
9018 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9019 int UNUSED written = 0;
9020 IADDR UNUSED pc = abuf->addr;
9021 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9022
9023{
9024frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9025if (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)))) {
9026 {
9027 USI opval = GET_H_SPR (((UINT) 272));
9028 sim_queue_pc_write (current_cpu, opval);
9029 written |= (1 << 3);
9030 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9031 }
9032}
9033}
9034
9035 abuf->written = written;
9036 return vpc;
9037#undef FLD
9038}
9039
9040/* bgelr: bgelr$pack $ICCi_2,$hint */
9041
9042static SEM_PC
9043SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9044{
9045#define FLD(f) abuf->fields.sfmt_bceqlr.f
9046 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9047 int UNUSED written = 0;
9048 IADDR UNUSED pc = abuf->addr;
9049 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9050
9051{
9052frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9053if (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))))) {
9054 {
9055 USI opval = GET_H_SPR (((UINT) 272));
9056 sim_queue_pc_write (current_cpu, opval);
9057 written |= (1 << 3);
9058 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9059 }
9060}
9061}
9062
9063 abuf->written = written;
9064 return vpc;
9065#undef FLD
9066}
9067
9068/* blslr: blslr$pack $ICCi_2,$hint */
9069
9070static SEM_PC
9071SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9072{
9073#define FLD(f) abuf->fields.sfmt_bceqlr.f
9074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9075 int UNUSED written = 0;
9076 IADDR UNUSED pc = abuf->addr;
9077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9078
9079{
9080frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9081if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9082 {
9083 USI opval = GET_H_SPR (((UINT) 272));
9084 sim_queue_pc_write (current_cpu, opval);
9085 written |= (1 << 3);
9086 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9087 }
9088}
9089}
9090
9091 abuf->written = written;
9092 return vpc;
9093#undef FLD
9094}
9095
9096/* bhilr: bhilr$pack $ICCi_2,$hint */
9097
9098static SEM_PC
9099SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9100{
9101#define FLD(f) abuf->fields.sfmt_bceqlr.f
9102 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9103 int UNUSED written = 0;
9104 IADDR UNUSED pc = abuf->addr;
9105 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9106
9107{
9108frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9109if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
9110 {
9111 USI opval = GET_H_SPR (((UINT) 272));
9112 sim_queue_pc_write (current_cpu, opval);
9113 written |= (1 << 3);
9114 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9115 }
9116}
9117}
9118
9119 abuf->written = written;
9120 return vpc;
9121#undef FLD
9122}
9123
9124/* bclr: bclr$pack $ICCi_2,$hint */
9125
9126static SEM_PC
9127SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9128{
9129#define FLD(f) abuf->fields.sfmt_bceqlr.f
9130 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9131 int UNUSED written = 0;
9132 IADDR UNUSED pc = abuf->addr;
9133 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9134
9135{
9136frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9137if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9138 {
9139 USI opval = GET_H_SPR (((UINT) 272));
9140 sim_queue_pc_write (current_cpu, opval);
9141 written |= (1 << 3);
9142 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9143 }
9144}
9145}
9146
9147 abuf->written = written;
9148 return vpc;
9149#undef FLD
9150}
9151
9152/* bnclr: bnclr$pack $ICCi_2,$hint */
9153
9154static SEM_PC
9155SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9156{
9157#define FLD(f) abuf->fields.sfmt_bceqlr.f
9158 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9159 int UNUSED written = 0;
9160 IADDR UNUSED pc = abuf->addr;
9161 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9162
9163{
9164frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9165if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9166 {
9167 USI opval = GET_H_SPR (((UINT) 272));
9168 sim_queue_pc_write (current_cpu, opval);
9169 written |= (1 << 3);
9170 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9171 }
9172}
9173}
9174
9175 abuf->written = written;
9176 return vpc;
9177#undef FLD
9178}
9179
9180/* bnlr: bnlr$pack $ICCi_2,$hint */
9181
9182static SEM_PC
9183SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9184{
9185#define FLD(f) abuf->fields.sfmt_bceqlr.f
9186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9187 int UNUSED written = 0;
9188 IADDR UNUSED pc = abuf->addr;
9189 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9190
9191{
9192frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9193if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9194 {
9195 USI opval = GET_H_SPR (((UINT) 272));
9196 sim_queue_pc_write (current_cpu, opval);
9197 written |= (1 << 3);
9198 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9199 }
9200}
9201}
9202
9203 abuf->written = written;
9204 return vpc;
9205#undef FLD
9206}
9207
9208/* bplr: bplr$pack $ICCi_2,$hint */
9209
9210static SEM_PC
9211SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9212{
9213#define FLD(f) abuf->fields.sfmt_bceqlr.f
9214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9215 int UNUSED written = 0;
9216 IADDR UNUSED pc = abuf->addr;
9217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9218
9219{
9220frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9221if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9222 {
9223 USI opval = GET_H_SPR (((UINT) 272));
9224 sim_queue_pc_write (current_cpu, opval);
9225 written |= (1 << 3);
9226 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9227 }
9228}
9229}
9230
9231 abuf->written = written;
9232 return vpc;
9233#undef FLD
9234}
9235
9236/* bvlr: bvlr$pack $ICCi_2,$hint */
9237
9238static SEM_PC
9239SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9240{
9241#define FLD(f) abuf->fields.sfmt_bceqlr.f
9242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9243 int UNUSED written = 0;
9244 IADDR UNUSED pc = abuf->addr;
9245 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9246
9247{
9248frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9249if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9250 {
9251 USI opval = GET_H_SPR (((UINT) 272));
9252 sim_queue_pc_write (current_cpu, opval);
9253 written |= (1 << 3);
9254 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9255 }
9256}
9257}
9258
9259 abuf->written = written;
9260 return vpc;
9261#undef FLD
9262}
9263
9264/* bnvlr: bnvlr$pack $ICCi_2,$hint */
9265
9266static SEM_PC
9267SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9268{
9269#define FLD(f) abuf->fields.sfmt_bceqlr.f
9270 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9271 int UNUSED written = 0;
9272 IADDR UNUSED pc = abuf->addr;
9273 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9274
9275{
9276frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9277if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9278 {
9279 USI opval = GET_H_SPR (((UINT) 272));
9280 sim_queue_pc_write (current_cpu, opval);
9281 written |= (1 << 3);
9282 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9283 }
9284}
9285}
9286
9287 abuf->written = written;
9288 return vpc;
9289#undef FLD
9290}
9291
9292/* fbralr: fbralr$pack$hint_taken */
9293
9294static SEM_PC
9295SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9296{
9297#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9299 int UNUSED written = 0;
9300 IADDR UNUSED pc = abuf->addr;
9301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9302
9303{
9304frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9305 {
9306 USI opval = GET_H_SPR (((UINT) 272));
9307 sim_queue_pc_write (current_cpu, opval);
9308 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9309 }
9310}
9311
9312 return vpc;
9313#undef FLD
9314}
9315
9316/* fbnolr: fbnolr$pack$hint_not_taken */
9317
9318static SEM_PC
9319SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9320{
9321#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9322 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9323 int UNUSED written = 0;
9324 IADDR UNUSED pc = abuf->addr;
9325 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9326
9327frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9328
9329 return vpc;
9330#undef FLD
9331}
9332
9333/* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9334
9335static SEM_PC
9336SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9337{
9338#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9339 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9340 int UNUSED written = 0;
9341 IADDR UNUSED pc = abuf->addr;
9342 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9343
9344{
9345frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9346if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9347 {
9348 USI opval = GET_H_SPR (((UINT) 272));
9349 sim_queue_pc_write (current_cpu, opval);
9350 written |= (1 << 3);
9351 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9352 }
9353}
9354}
9355
9356 abuf->written = written;
9357 return vpc;
9358#undef FLD
9359}
9360
9361/* fbnelr: fbnelr$pack $FCCi_2,$hint */
9362
9363static SEM_PC
9364SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9365{
9366#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9368 int UNUSED written = 0;
9369 IADDR UNUSED pc = abuf->addr;
9370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9371
9372{
9373frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9374if (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))))) {
9375 {
9376 USI opval = GET_H_SPR (((UINT) 272));
9377 sim_queue_pc_write (current_cpu, opval);
9378 written |= (1 << 3);
9379 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9380 }
9381}
9382}
9383
9384 abuf->written = written;
9385 return vpc;
9386#undef FLD
9387}
9388
9389/* fblglr: fblglr$pack $FCCi_2,$hint */
9390
9391static SEM_PC
9392SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9393{
9394#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9396 int UNUSED written = 0;
9397 IADDR UNUSED pc = abuf->addr;
9398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9399
9400{
9401frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9402if (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)))) {
9403 {
9404 USI opval = GET_H_SPR (((UINT) 272));
9405 sim_queue_pc_write (current_cpu, opval);
9406 written |= (1 << 3);
9407 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9408 }
9409}
9410}
9411
9412 abuf->written = written;
9413 return vpc;
9414#undef FLD
9415}
9416
9417/* fbuelr: fbuelr$pack $FCCi_2,$hint */
9418
9419static SEM_PC
9420SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9421{
9422#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9424 int UNUSED written = 0;
9425 IADDR UNUSED pc = abuf->addr;
9426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9427
9428{
9429frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9430if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9431 {
9432 USI opval = GET_H_SPR (((UINT) 272));
9433 sim_queue_pc_write (current_cpu, opval);
9434 written |= (1 << 3);
9435 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9436 }
9437}
9438}
9439
9440 abuf->written = written;
9441 return vpc;
9442#undef FLD
9443}
9444
9445/* fbullr: fbullr$pack $FCCi_2,$hint */
9446
9447static SEM_PC
9448SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9449{
9450#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9451 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9452 int UNUSED written = 0;
9453 IADDR UNUSED pc = abuf->addr;
9454 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9455
9456{
9457frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9458if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9459 {
9460 USI opval = GET_H_SPR (((UINT) 272));
9461 sim_queue_pc_write (current_cpu, opval);
9462 written |= (1 << 3);
9463 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9464 }
9465}
9466}
9467
9468 abuf->written = written;
9469 return vpc;
9470#undef FLD
9471}
9472
9473/* fbgelr: fbgelr$pack $FCCi_2,$hint */
9474
9475static SEM_PC
9476SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9477{
9478#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9479 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9480 int UNUSED written = 0;
9481 IADDR UNUSED pc = abuf->addr;
9482 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9483
9484{
9485frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9486if (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)))) {
9487 {
9488 USI opval = GET_H_SPR (((UINT) 272));
9489 sim_queue_pc_write (current_cpu, opval);
9490 written |= (1 << 3);
9491 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9492 }
9493}
9494}
9495
9496 abuf->written = written;
9497 return vpc;
9498#undef FLD
9499}
9500
9501/* fbltlr: fbltlr$pack $FCCi_2,$hint */
9502
9503static SEM_PC
9504SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9505{
9506#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9508 int UNUSED written = 0;
9509 IADDR UNUSED pc = abuf->addr;
9510 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9511
9512{
9513frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9514if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9515 {
9516 USI opval = GET_H_SPR (((UINT) 272));
9517 sim_queue_pc_write (current_cpu, opval);
9518 written |= (1 << 3);
9519 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9520 }
9521}
9522}
9523
9524 abuf->written = written;
9525 return vpc;
9526#undef FLD
9527}
9528
9529/* fbugelr: fbugelr$pack $FCCi_2,$hint */
9530
9531static SEM_PC
9532SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9533{
9534#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9536 int UNUSED written = 0;
9537 IADDR UNUSED pc = abuf->addr;
9538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9539
9540{
9541frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9542if (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))))) {
9543 {
9544 USI opval = GET_H_SPR (((UINT) 272));
9545 sim_queue_pc_write (current_cpu, opval);
9546 written |= (1 << 3);
9547 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9548 }
9549}
9550}
9551
9552 abuf->written = written;
9553 return vpc;
9554#undef FLD
9555}
9556
9557/* fbuglr: fbuglr$pack $FCCi_2,$hint */
9558
9559static SEM_PC
9560SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9561{
9562#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9564 int UNUSED written = 0;
9565 IADDR UNUSED pc = abuf->addr;
9566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9567
9568{
9569frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9570if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9571 {
9572 USI opval = GET_H_SPR (((UINT) 272));
9573 sim_queue_pc_write (current_cpu, opval);
9574 written |= (1 << 3);
9575 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9576 }
9577}
9578}
9579
9580 abuf->written = written;
9581 return vpc;
9582#undef FLD
9583}
9584
9585/* fblelr: fblelr$pack $FCCi_2,$hint */
9586
9587static SEM_PC
9588SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9589{
9590#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9591 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9592 int UNUSED written = 0;
9593 IADDR UNUSED pc = abuf->addr;
9594 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9595
9596{
9597frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9598if (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)))) {
9599 {
9600 USI opval = GET_H_SPR (((UINT) 272));
9601 sim_queue_pc_write (current_cpu, opval);
9602 written |= (1 << 3);
9603 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9604 }
9605}
9606}
9607
9608 abuf->written = written;
9609 return vpc;
9610#undef FLD
9611}
9612
9613/* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9614
9615static SEM_PC
9616SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9617{
9618#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9619 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9620 int UNUSED written = 0;
9621 IADDR UNUSED pc = abuf->addr;
9622 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9623
9624{
9625frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9626if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9627 {
9628 USI opval = GET_H_SPR (((UINT) 272));
9629 sim_queue_pc_write (current_cpu, opval);
9630 written |= (1 << 3);
9631 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9632 }
9633}
9634}
9635
9636 abuf->written = written;
9637 return vpc;
9638#undef FLD
9639}
9640
9641/* fbulelr: fbulelr$pack $FCCi_2,$hint */
9642
9643static SEM_PC
9644SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9645{
9646#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9647 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9648 int UNUSED written = 0;
9649 IADDR UNUSED pc = abuf->addr;
9650 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9651
9652{
9653frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9654if (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))))) {
9655 {
9656 USI opval = GET_H_SPR (((UINT) 272));
9657 sim_queue_pc_write (current_cpu, opval);
9658 written |= (1 << 3);
9659 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9660 }
9661}
9662}
9663
9664 abuf->written = written;
9665 return vpc;
9666#undef FLD
9667}
9668
9669/* fbulr: fbulr$pack $FCCi_2,$hint */
9670
9671static SEM_PC
9672SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9673{
9674#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9675 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9676 int UNUSED written = 0;
9677 IADDR UNUSED pc = abuf->addr;
9678 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9679
9680{
9681frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9682if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9683 {
9684 USI opval = GET_H_SPR (((UINT) 272));
9685 sim_queue_pc_write (current_cpu, opval);
9686 written |= (1 << 3);
9687 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9688 }
9689}
9690}
9691
9692 abuf->written = written;
9693 return vpc;
9694#undef FLD
9695}
9696
9697/* fbolr: fbolr$pack $FCCi_2,$hint */
9698
9699static SEM_PC
9700SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9701{
9702#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9704 int UNUSED written = 0;
9705 IADDR UNUSED pc = abuf->addr;
9706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9707
9708{
9709frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9710if (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))))) {
9711 {
9712 USI opval = GET_H_SPR (((UINT) 272));
9713 sim_queue_pc_write (current_cpu, opval);
9714 written |= (1 << 3);
9715 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9716 }
9717}
9718}
9719
9720 abuf->written = written;
9721 return vpc;
9722#undef FLD
9723}
9724
9725/* bcralr: bcralr$pack $ccond$hint_taken */
9726
9727static SEM_PC
9728SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9729{
9730#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9732 int UNUSED written = 0;
9733 IADDR UNUSED pc = abuf->addr;
9734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9735
9736{
9737frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9738{
9739 SI tmp_tmp;
9740 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9741 {
9742 USI opval = tmp_tmp;
9743 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9744 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9745 }
9746if (EQSI (FLD (f_ccond), 0)) {
9747if (NESI (tmp_tmp, 0)) {
9748 {
9749 USI opval = GET_H_SPR (((UINT) 272));
9750 sim_queue_pc_write (current_cpu, opval);
9751 written |= (1 << 5);
9752 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9753 }
9754}
9755} else {
9756if (EQSI (tmp_tmp, 0)) {
9757 {
9758 USI opval = GET_H_SPR (((UINT) 272));
9759 sim_queue_pc_write (current_cpu, opval);
9760 written |= (1 << 5);
9761 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9762 }
9763}
9764}
9765}
9766}
9767
9768 abuf->written = written;
9769 return vpc;
9770#undef FLD
9771}
9772
9773/* bcnolr: bcnolr$pack$hint_not_taken */
9774
9775static SEM_PC
9776SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9777{
9778#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9780 int UNUSED written = 0;
9781 IADDR UNUSED pc = abuf->addr;
9782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9783
9784{
9785frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9786{
9787 SI tmp_tmp;
9788 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9789 {
9790 USI opval = tmp_tmp;
9791 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9792 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9793 }
9794((void) 0); /*nop*/
9795}
9796}
9797
9798 return vpc;
9799#undef FLD
9800}
9801
9802/* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9803
9804static SEM_PC
9805SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9806{
9807#define FLD(f) abuf->fields.sfmt_bceqlr.f
9808 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9809 int UNUSED written = 0;
9810 IADDR UNUSED pc = abuf->addr;
9811 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9812
9813{
9814frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9815{
9816 SI tmp_tmp;
9817 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9818 {
9819 USI opval = tmp_tmp;
9820 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9821 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9822 }
9823if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9824if (EQSI (FLD (f_ccond), 0)) {
9825if (NESI (tmp_tmp, 0)) {
9826 {
9827 USI opval = GET_H_SPR (((UINT) 272));
9828 sim_queue_pc_write (current_cpu, opval);
9829 written |= (1 << 6);
9830 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9831 }
9832}
9833} else {
9834if (EQSI (tmp_tmp, 0)) {
9835 {
9836 USI opval = GET_H_SPR (((UINT) 272));
9837 sim_queue_pc_write (current_cpu, opval);
9838 written |= (1 << 6);
9839 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9840 }
9841}
9842}
9843}
9844}
9845}
9846
9847 abuf->written = written;
9848 return vpc;
9849#undef FLD
9850}
9851
9852/* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9853
9854static SEM_PC
9855SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9856{
9857#define FLD(f) abuf->fields.sfmt_bceqlr.f
9858 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9859 int UNUSED written = 0;
9860 IADDR UNUSED pc = abuf->addr;
9861 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9862
9863{
9864frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9865{
9866 SI tmp_tmp;
9867 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9868 {
9869 USI opval = tmp_tmp;
9870 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9871 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9872 }
9873if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9874if (EQSI (FLD (f_ccond), 0)) {
9875if (NESI (tmp_tmp, 0)) {
9876 {
9877 USI opval = GET_H_SPR (((UINT) 272));
9878 sim_queue_pc_write (current_cpu, opval);
9879 written |= (1 << 6);
9880 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9881 }
9882}
9883} else {
9884if (EQSI (tmp_tmp, 0)) {
9885 {
9886 USI opval = GET_H_SPR (((UINT) 272));
9887 sim_queue_pc_write (current_cpu, opval);
9888 written |= (1 << 6);
9889 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9890 }
9891}
9892}
9893}
9894}
9895}
9896
9897 abuf->written = written;
9898 return vpc;
9899#undef FLD
9900}
9901
9902/* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9903
9904static SEM_PC
9905SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9906{
9907#define FLD(f) abuf->fields.sfmt_bceqlr.f
9908 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9909 int UNUSED written = 0;
9910 IADDR UNUSED pc = abuf->addr;
9911 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9912
9913{
9914frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9915{
9916 SI tmp_tmp;
9917 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9918 {
9919 USI opval = tmp_tmp;
9920 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9921 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9922 }
9923if (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))))) {
9924if (EQSI (FLD (f_ccond), 0)) {
9925if (NESI (tmp_tmp, 0)) {
9926 {
9927 USI opval = GET_H_SPR (((UINT) 272));
9928 sim_queue_pc_write (current_cpu, opval);
9929 written |= (1 << 6);
9930 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9931 }
9932}
9933} else {
9934if (EQSI (tmp_tmp, 0)) {
9935 {
9936 USI opval = GET_H_SPR (((UINT) 272));
9937 sim_queue_pc_write (current_cpu, opval);
9938 written |= (1 << 6);
9939 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9940 }
9941}
9942}
9943}
9944}
9945}
9946
9947 abuf->written = written;
9948 return vpc;
9949#undef FLD
9950}
9951
9952/* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
9953
9954static SEM_PC
9955SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9956{
9957#define FLD(f) abuf->fields.sfmt_bceqlr.f
9958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9959 int UNUSED written = 0;
9960 IADDR UNUSED pc = abuf->addr;
9961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9962
9963{
9964frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9965{
9966 SI tmp_tmp;
9967 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9968 {
9969 USI opval = tmp_tmp;
9970 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9971 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9972 }
9973if (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)))))) {
9974if (EQSI (FLD (f_ccond), 0)) {
9975if (NESI (tmp_tmp, 0)) {
9976 {
9977 USI opval = GET_H_SPR (((UINT) 272));
9978 sim_queue_pc_write (current_cpu, opval);
9979 written |= (1 << 6);
9980 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9981 }
9982}
9983} else {
9984if (EQSI (tmp_tmp, 0)) {
9985 {
9986 USI opval = GET_H_SPR (((UINT) 272));
9987 sim_queue_pc_write (current_cpu, opval);
9988 written |= (1 << 6);
9989 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9990 }
9991}
9992}
9993}
9994}
9995}
9996
9997 abuf->written = written;
9998 return vpc;
9999#undef FLD
10000}
10001
10002/* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
10003
10004static SEM_PC
10005SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10006{
10007#define FLD(f) abuf->fields.sfmt_bceqlr.f
10008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10009 int UNUSED written = 0;
10010 IADDR UNUSED pc = abuf->addr;
10011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10012
10013{
10014frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10015{
10016 SI tmp_tmp;
10017 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10018 {
10019 USI opval = tmp_tmp;
10020 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10021 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10022 }
10023if (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)))) {
10024if (EQSI (FLD (f_ccond), 0)) {
10025if (NESI (tmp_tmp, 0)) {
10026 {
10027 USI opval = GET_H_SPR (((UINT) 272));
10028 sim_queue_pc_write (current_cpu, opval);
10029 written |= (1 << 6);
10030 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10031 }
10032}
10033} else {
10034if (EQSI (tmp_tmp, 0)) {
10035 {
10036 USI opval = GET_H_SPR (((UINT) 272));
10037 sim_queue_pc_write (current_cpu, opval);
10038 written |= (1 << 6);
10039 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10040 }
10041}
10042}
10043}
10044}
10045}
10046
10047 abuf->written = written;
10048 return vpc;
10049#undef FLD
10050}
10051
10052/* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10053
10054static SEM_PC
10055SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10056{
10057#define FLD(f) abuf->fields.sfmt_bceqlr.f
10058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10059 int UNUSED written = 0;
10060 IADDR UNUSED pc = abuf->addr;
10061 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10062
10063{
10064frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10065{
10066 SI tmp_tmp;
10067 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10068 {
10069 USI opval = tmp_tmp;
10070 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10071 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10072 }
10073if (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))))) {
10074if (EQSI (FLD (f_ccond), 0)) {
10075if (NESI (tmp_tmp, 0)) {
10076 {
10077 USI opval = GET_H_SPR (((UINT) 272));
10078 sim_queue_pc_write (current_cpu, opval);
10079 written |= (1 << 6);
10080 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10081 }
10082}
10083} else {
10084if (EQSI (tmp_tmp, 0)) {
10085 {
10086 USI opval = GET_H_SPR (((UINT) 272));
10087 sim_queue_pc_write (current_cpu, opval);
10088 written |= (1 << 6);
10089 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10090 }
10091}
10092}
10093}
10094}
10095}
10096
10097 abuf->written = written;
10098 return vpc;
10099#undef FLD
10100}
10101
10102/* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10103
10104static SEM_PC
10105SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10106{
10107#define FLD(f) abuf->fields.sfmt_bceqlr.f
10108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10109 int UNUSED written = 0;
10110 IADDR UNUSED pc = abuf->addr;
10111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10112
10113{
10114frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10115{
10116 SI tmp_tmp;
10117 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10118 {
10119 USI opval = tmp_tmp;
10120 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10121 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10122 }
10123if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10124if (EQSI (FLD (f_ccond), 0)) {
10125if (NESI (tmp_tmp, 0)) {
10126 {
10127 USI opval = GET_H_SPR (((UINT) 272));
10128 sim_queue_pc_write (current_cpu, opval);
10129 written |= (1 << 6);
10130 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10131 }
10132}
10133} else {
10134if (EQSI (tmp_tmp, 0)) {
10135 {
10136 USI opval = GET_H_SPR (((UINT) 272));
10137 sim_queue_pc_write (current_cpu, opval);
10138 written |= (1 << 6);
10139 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10140 }
10141}
10142}
10143}
10144}
10145}
10146
10147 abuf->written = written;
10148 return vpc;
10149#undef FLD
10150}
10151
10152/* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10153
10154static SEM_PC
10155SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10156{
10157#define FLD(f) abuf->fields.sfmt_bceqlr.f
10158 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10159 int UNUSED written = 0;
10160 IADDR UNUSED pc = abuf->addr;
10161 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10162
10163{
10164frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10165{
10166 SI tmp_tmp;
10167 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10168 {
10169 USI opval = tmp_tmp;
10170 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10171 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10172 }
10173if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
10174if (EQSI (FLD (f_ccond), 0)) {
10175if (NESI (tmp_tmp, 0)) {
10176 {
10177 USI opval = GET_H_SPR (((UINT) 272));
10178 sim_queue_pc_write (current_cpu, opval);
10179 written |= (1 << 6);
10180 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10181 }
10182}
10183} else {
10184if (EQSI (tmp_tmp, 0)) {
10185 {
10186 USI opval = GET_H_SPR (((UINT) 272));
10187 sim_queue_pc_write (current_cpu, opval);
10188 written |= (1 << 6);
10189 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10190 }
10191}
10192}
10193}
10194}
10195}
10196
10197 abuf->written = written;
10198 return vpc;
10199#undef FLD
10200}
10201
10202/* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10203
10204static SEM_PC
10205SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10206{
10207#define FLD(f) abuf->fields.sfmt_bceqlr.f
10208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10209 int UNUSED written = 0;
10210 IADDR UNUSED pc = abuf->addr;
10211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10212
10213{
10214frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10215{
10216 SI tmp_tmp;
10217 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10218 {
10219 USI opval = tmp_tmp;
10220 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10221 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10222 }
10223if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10224if (EQSI (FLD (f_ccond), 0)) {
10225if (NESI (tmp_tmp, 0)) {
10226 {
10227 USI opval = GET_H_SPR (((UINT) 272));
10228 sim_queue_pc_write (current_cpu, opval);
10229 written |= (1 << 6);
10230 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10231 }
10232}
10233} else {
10234if (EQSI (tmp_tmp, 0)) {
10235 {
10236 USI opval = GET_H_SPR (((UINT) 272));
10237 sim_queue_pc_write (current_cpu, opval);
10238 written |= (1 << 6);
10239 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10240 }
10241}
10242}
10243}
10244}
10245}
10246
10247 abuf->written = written;
10248 return vpc;
10249#undef FLD
10250}
10251
10252/* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10253
10254static SEM_PC
10255SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10256{
10257#define FLD(f) abuf->fields.sfmt_bceqlr.f
10258 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10259 int UNUSED written = 0;
10260 IADDR UNUSED pc = abuf->addr;
10261 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10262
10263{
10264frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10265{
10266 SI tmp_tmp;
10267 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10268 {
10269 USI opval = tmp_tmp;
10270 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10271 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10272 }
10273if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10274if (EQSI (FLD (f_ccond), 0)) {
10275if (NESI (tmp_tmp, 0)) {
10276 {
10277 USI opval = GET_H_SPR (((UINT) 272));
10278 sim_queue_pc_write (current_cpu, opval);
10279 written |= (1 << 6);
10280 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10281 }
10282}
10283} else {
10284if (EQSI (tmp_tmp, 0)) {
10285 {
10286 USI opval = GET_H_SPR (((UINT) 272));
10287 sim_queue_pc_write (current_cpu, opval);
10288 written |= (1 << 6);
10289 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10290 }
10291}
10292}
10293}
10294}
10295}
10296
10297 abuf->written = written;
10298 return vpc;
10299#undef FLD
10300}
10301
10302/* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10303
10304static SEM_PC
10305SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10306{
10307#define FLD(f) abuf->fields.sfmt_bceqlr.f
10308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10309 int UNUSED written = 0;
10310 IADDR UNUSED pc = abuf->addr;
10311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10312
10313{
10314frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10315{
10316 SI tmp_tmp;
10317 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10318 {
10319 USI opval = tmp_tmp;
10320 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10321 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10322 }
10323if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10324if (EQSI (FLD (f_ccond), 0)) {
10325if (NESI (tmp_tmp, 0)) {
10326 {
10327 USI opval = GET_H_SPR (((UINT) 272));
10328 sim_queue_pc_write (current_cpu, opval);
10329 written |= (1 << 6);
10330 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10331 }
10332}
10333} else {
10334if (EQSI (tmp_tmp, 0)) {
10335 {
10336 USI opval = GET_H_SPR (((UINT) 272));
10337 sim_queue_pc_write (current_cpu, opval);
10338 written |= (1 << 6);
10339 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10340 }
10341}
10342}
10343}
10344}
10345}
10346
10347 abuf->written = written;
10348 return vpc;
10349#undef FLD
10350}
10351
10352/* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10353
10354static SEM_PC
10355SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10356{
10357#define FLD(f) abuf->fields.sfmt_bceqlr.f
10358 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10359 int UNUSED written = 0;
10360 IADDR UNUSED pc = abuf->addr;
10361 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10362
10363{
10364frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10365{
10366 SI tmp_tmp;
10367 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10368 {
10369 USI opval = tmp_tmp;
10370 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10371 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10372 }
10373if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10374if (EQSI (FLD (f_ccond), 0)) {
10375if (NESI (tmp_tmp, 0)) {
10376 {
10377 USI opval = GET_H_SPR (((UINT) 272));
10378 sim_queue_pc_write (current_cpu, opval);
10379 written |= (1 << 6);
10380 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10381 }
10382}
10383} else {
10384if (EQSI (tmp_tmp, 0)) {
10385 {
10386 USI opval = GET_H_SPR (((UINT) 272));
10387 sim_queue_pc_write (current_cpu, opval);
10388 written |= (1 << 6);
10389 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10390 }
10391}
10392}
10393}
10394}
10395}
10396
10397 abuf->written = written;
10398 return vpc;
10399#undef FLD
10400}
10401
10402/* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10403
10404static SEM_PC
10405SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10406{
10407#define FLD(f) abuf->fields.sfmt_bceqlr.f
10408 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10409 int UNUSED written = 0;
10410 IADDR UNUSED pc = abuf->addr;
10411 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10412
10413{
10414frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10415{
10416 SI tmp_tmp;
10417 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10418 {
10419 USI opval = tmp_tmp;
10420 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10421 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10422 }
10423if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10424if (EQSI (FLD (f_ccond), 0)) {
10425if (NESI (tmp_tmp, 0)) {
10426 {
10427 USI opval = GET_H_SPR (((UINT) 272));
10428 sim_queue_pc_write (current_cpu, opval);
10429 written |= (1 << 6);
10430 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10431 }
10432}
10433} else {
10434if (EQSI (tmp_tmp, 0)) {
10435 {
10436 USI opval = GET_H_SPR (((UINT) 272));
10437 sim_queue_pc_write (current_cpu, opval);
10438 written |= (1 << 6);
10439 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10440 }
10441}
10442}
10443}
10444}
10445}
10446
10447 abuf->written = written;
10448 return vpc;
10449#undef FLD
10450}
10451
10452/* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10453
10454static SEM_PC
10455SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10456{
10457#define FLD(f) abuf->fields.sfmt_bceqlr.f
10458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10459 int UNUSED written = 0;
10460 IADDR UNUSED pc = abuf->addr;
10461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10462
10463{
10464frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10465{
10466 SI tmp_tmp;
10467 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10468 {
10469 USI opval = tmp_tmp;
10470 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10471 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10472 }
10473if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10474if (EQSI (FLD (f_ccond), 0)) {
10475if (NESI (tmp_tmp, 0)) {
10476 {
10477 USI opval = GET_H_SPR (((UINT) 272));
10478 sim_queue_pc_write (current_cpu, opval);
10479 written |= (1 << 6);
10480 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10481 }
10482}
10483} else {
10484if (EQSI (tmp_tmp, 0)) {
10485 {
10486 USI opval = GET_H_SPR (((UINT) 272));
10487 sim_queue_pc_write (current_cpu, opval);
10488 written |= (1 << 6);
10489 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10490 }
10491}
10492}
10493}
10494}
10495}
10496
10497 abuf->written = written;
10498 return vpc;
10499#undef FLD
10500}
10501
10502/* fcbralr: fcbralr$pack $ccond$hint_taken */
10503
10504static SEM_PC
10505SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10506{
10507#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10509 int UNUSED written = 0;
10510 IADDR UNUSED pc = abuf->addr;
10511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10512
10513{
10514frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10515{
10516 SI tmp_tmp;
10517 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10518 {
10519 USI opval = tmp_tmp;
10520 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10521 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10522 }
10523if (EQSI (FLD (f_ccond), 0)) {
10524if (NESI (tmp_tmp, 0)) {
10525 {
10526 USI opval = GET_H_SPR (((UINT) 272));
10527 sim_queue_pc_write (current_cpu, opval);
10528 written |= (1 << 5);
10529 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10530 }
10531}
10532} else {
10533if (EQSI (tmp_tmp, 0)) {
10534 {
10535 USI opval = GET_H_SPR (((UINT) 272));
10536 sim_queue_pc_write (current_cpu, opval);
10537 written |= (1 << 5);
10538 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10539 }
10540}
10541}
10542}
10543}
10544
10545 abuf->written = written;
10546 return vpc;
10547#undef FLD
10548}
10549
10550/* fcbnolr: fcbnolr$pack$hint_not_taken */
10551
10552static SEM_PC
10553SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10554{
10555#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10557 int UNUSED written = 0;
10558 IADDR UNUSED pc = abuf->addr;
10559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10560
10561{
10562frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10563{
10564 SI tmp_tmp;
10565 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10566 {
10567 USI opval = tmp_tmp;
10568 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10569 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10570 }
10571((void) 0); /*nop*/
10572}
10573}
10574
10575 return vpc;
10576#undef FLD
10577}
10578
10579/* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10580
10581static SEM_PC
10582SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10583{
10584#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10586 int UNUSED written = 0;
10587 IADDR UNUSED pc = abuf->addr;
10588 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10589
10590{
10591frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10592{
10593 SI tmp_tmp;
10594 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10595 {
10596 USI opval = tmp_tmp;
10597 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10598 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10599 }
10600if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10601if (EQSI (FLD (f_ccond), 0)) {
10602if (NESI (tmp_tmp, 0)) {
10603 {
10604 USI opval = GET_H_SPR (((UINT) 272));
10605 sim_queue_pc_write (current_cpu, opval);
10606 written |= (1 << 6);
10607 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10608 }
10609}
10610} else {
10611if (EQSI (tmp_tmp, 0)) {
10612 {
10613 USI opval = GET_H_SPR (((UINT) 272));
10614 sim_queue_pc_write (current_cpu, opval);
10615 written |= (1 << 6);
10616 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10617 }
10618}
10619}
10620}
10621}
10622}
10623
10624 abuf->written = written;
10625 return vpc;
10626#undef FLD
10627}
10628
10629/* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10630
10631static SEM_PC
10632SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10633{
10634#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10636 int UNUSED written = 0;
10637 IADDR UNUSED pc = abuf->addr;
10638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10639
10640{
10641frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10642{
10643 SI tmp_tmp;
10644 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10645 {
10646 USI opval = tmp_tmp;
10647 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10648 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10649 }
10650if (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))))) {
10651if (EQSI (FLD (f_ccond), 0)) {
10652if (NESI (tmp_tmp, 0)) {
10653 {
10654 USI opval = GET_H_SPR (((UINT) 272));
10655 sim_queue_pc_write (current_cpu, opval);
10656 written |= (1 << 6);
10657 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10658 }
10659}
10660} else {
10661if (EQSI (tmp_tmp, 0)) {
10662 {
10663 USI opval = GET_H_SPR (((UINT) 272));
10664 sim_queue_pc_write (current_cpu, opval);
10665 written |= (1 << 6);
10666 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10667 }
10668}
10669}
10670}
10671}
10672}
10673
10674 abuf->written = written;
10675 return vpc;
10676#undef FLD
10677}
10678
10679/* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10680
10681static SEM_PC
10682SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10683{
10684#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10686 int UNUSED written = 0;
10687 IADDR UNUSED pc = abuf->addr;
10688 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10689
10690{
10691frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10692{
10693 SI tmp_tmp;
10694 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10695 {
10696 USI opval = tmp_tmp;
10697 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10698 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10699 }
10700if (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)))) {
10701if (EQSI (FLD (f_ccond), 0)) {
10702if (NESI (tmp_tmp, 0)) {
10703 {
10704 USI opval = GET_H_SPR (((UINT) 272));
10705 sim_queue_pc_write (current_cpu, opval);
10706 written |= (1 << 6);
10707 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10708 }
10709}
10710} else {
10711if (EQSI (tmp_tmp, 0)) {
10712 {
10713 USI opval = GET_H_SPR (((UINT) 272));
10714 sim_queue_pc_write (current_cpu, opval);
10715 written |= (1 << 6);
10716 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10717 }
10718}
10719}
10720}
10721}
10722}
10723
10724 abuf->written = written;
10725 return vpc;
10726#undef FLD
10727}
10728
10729/* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10730
10731static SEM_PC
10732SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10733{
10734#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10736 int UNUSED written = 0;
10737 IADDR UNUSED pc = abuf->addr;
10738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10739
10740{
10741frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10742{
10743 SI tmp_tmp;
10744 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10745 {
10746 USI opval = tmp_tmp;
10747 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10748 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10749 }
10750if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10751if (EQSI (FLD (f_ccond), 0)) {
10752if (NESI (tmp_tmp, 0)) {
10753 {
10754 USI opval = GET_H_SPR (((UINT) 272));
10755 sim_queue_pc_write (current_cpu, opval);
10756 written |= (1 << 6);
10757 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10758 }
10759}
10760} else {
10761if (EQSI (tmp_tmp, 0)) {
10762 {
10763 USI opval = GET_H_SPR (((UINT) 272));
10764 sim_queue_pc_write (current_cpu, opval);
10765 written |= (1 << 6);
10766 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10767 }
10768}
10769}
10770}
10771}
10772}
10773
10774 abuf->written = written;
10775 return vpc;
10776#undef FLD
10777}
10778
10779/* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10780
10781static SEM_PC
10782SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10783{
10784#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10786 int UNUSED written = 0;
10787 IADDR UNUSED pc = abuf->addr;
10788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10789
10790{
10791frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10792{
10793 SI tmp_tmp;
10794 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10795 {
10796 USI opval = tmp_tmp;
10797 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10798 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10799 }
10800if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10801if (EQSI (FLD (f_ccond), 0)) {
10802if (NESI (tmp_tmp, 0)) {
10803 {
10804 USI opval = GET_H_SPR (((UINT) 272));
10805 sim_queue_pc_write (current_cpu, opval);
10806 written |= (1 << 6);
10807 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10808 }
10809}
10810} else {
10811if (EQSI (tmp_tmp, 0)) {
10812 {
10813 USI opval = GET_H_SPR (((UINT) 272));
10814 sim_queue_pc_write (current_cpu, opval);
10815 written |= (1 << 6);
10816 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10817 }
10818}
10819}
10820}
10821}
10822}
10823
10824 abuf->written = written;
10825 return vpc;
10826#undef FLD
10827}
10828
10829/* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10830
10831static SEM_PC
10832SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10833{
10834#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10836 int UNUSED written = 0;
10837 IADDR UNUSED pc = abuf->addr;
10838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10839
10840{
10841frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10842{
10843 SI tmp_tmp;
10844 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10845 {
10846 USI opval = tmp_tmp;
10847 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10848 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10849 }
10850if (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)))) {
10851if (EQSI (FLD (f_ccond), 0)) {
10852if (NESI (tmp_tmp, 0)) {
10853 {
10854 USI opval = GET_H_SPR (((UINT) 272));
10855 sim_queue_pc_write (current_cpu, opval);
10856 written |= (1 << 6);
10857 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10858 }
10859}
10860} else {
10861if (EQSI (tmp_tmp, 0)) {
10862 {
10863 USI opval = GET_H_SPR (((UINT) 272));
10864 sim_queue_pc_write (current_cpu, opval);
10865 written |= (1 << 6);
10866 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10867 }
10868}
10869}
10870}
10871}
10872}
10873
10874 abuf->written = written;
10875 return vpc;
10876#undef FLD
10877}
10878
10879/* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10880
10881static SEM_PC
10882SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10883{
10884#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10886 int UNUSED written = 0;
10887 IADDR UNUSED pc = abuf->addr;
10888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10889
10890{
10891frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10892{
10893 SI tmp_tmp;
10894 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10895 {
10896 USI opval = tmp_tmp;
10897 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10898 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10899 }
10900if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10901if (EQSI (FLD (f_ccond), 0)) {
10902if (NESI (tmp_tmp, 0)) {
10903 {
10904 USI opval = GET_H_SPR (((UINT) 272));
10905 sim_queue_pc_write (current_cpu, opval);
10906 written |= (1 << 6);
10907 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10908 }
10909}
10910} else {
10911if (EQSI (tmp_tmp, 0)) {
10912 {
10913 USI opval = GET_H_SPR (((UINT) 272));
10914 sim_queue_pc_write (current_cpu, opval);
10915 written |= (1 << 6);
10916 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10917 }
10918}
10919}
10920}
10921}
10922}
10923
10924 abuf->written = written;
10925 return vpc;
10926#undef FLD
10927}
10928
10929/* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
10930
10931static SEM_PC
10932SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10933{
10934#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10936 int UNUSED written = 0;
10937 IADDR UNUSED pc = abuf->addr;
10938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10939
10940{
10941frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10942{
10943 SI tmp_tmp;
10944 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10945 {
10946 USI opval = tmp_tmp;
10947 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10948 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10949 }
10950if (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))))) {
10951if (EQSI (FLD (f_ccond), 0)) {
10952if (NESI (tmp_tmp, 0)) {
10953 {
10954 USI opval = GET_H_SPR (((UINT) 272));
10955 sim_queue_pc_write (current_cpu, opval);
10956 written |= (1 << 6);
10957 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10958 }
10959}
10960} else {
10961if (EQSI (tmp_tmp, 0)) {
10962 {
10963 USI opval = GET_H_SPR (((UINT) 272));
10964 sim_queue_pc_write (current_cpu, opval);
10965 written |= (1 << 6);
10966 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10967 }
10968}
10969}
10970}
10971}
10972}
10973
10974 abuf->written = written;
10975 return vpc;
10976#undef FLD
10977}
10978
10979/* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
10980
10981static SEM_PC
10982SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10983{
10984#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10986 int UNUSED written = 0;
10987 IADDR UNUSED pc = abuf->addr;
10988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10989
10990{
10991frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10992{
10993 SI tmp_tmp;
10994 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10995 {
10996 USI opval = tmp_tmp;
10997 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10998 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10999 }
11000if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
11001if (EQSI (FLD (f_ccond), 0)) {
11002if (NESI (tmp_tmp, 0)) {
11003 {
11004 USI opval = GET_H_SPR (((UINT) 272));
11005 sim_queue_pc_write (current_cpu, opval);
11006 written |= (1 << 6);
11007 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11008 }
11009}
11010} else {
11011if (EQSI (tmp_tmp, 0)) {
11012 {
11013 USI opval = GET_H_SPR (((UINT) 272));
11014 sim_queue_pc_write (current_cpu, opval);
11015 written |= (1 << 6);
11016 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11017 }
11018}
11019}
11020}
11021}
11022}
11023
11024 abuf->written = written;
11025 return vpc;
11026#undef FLD
11027}
11028
11029/* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11030
11031static SEM_PC
11032SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11033{
11034#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11035 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11036 int UNUSED written = 0;
11037 IADDR UNUSED pc = abuf->addr;
11038 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11039
11040{
11041frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11042{
11043 SI tmp_tmp;
11044 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11045 {
11046 USI opval = tmp_tmp;
11047 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11048 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11049 }
11050if (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)))) {
11051if (EQSI (FLD (f_ccond), 0)) {
11052if (NESI (tmp_tmp, 0)) {
11053 {
11054 USI opval = GET_H_SPR (((UINT) 272));
11055 sim_queue_pc_write (current_cpu, opval);
11056 written |= (1 << 6);
11057 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11058 }
11059}
11060} else {
11061if (EQSI (tmp_tmp, 0)) {
11062 {
11063 USI opval = GET_H_SPR (((UINT) 272));
11064 sim_queue_pc_write (current_cpu, opval);
11065 written |= (1 << 6);
11066 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11067 }
11068}
11069}
11070}
11071}
11072}
11073
11074 abuf->written = written;
11075 return vpc;
11076#undef FLD
11077}
11078
11079/* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11080
11081static SEM_PC
11082SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11083{
11084#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11085 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11086 int UNUSED written = 0;
11087 IADDR UNUSED pc = abuf->addr;
11088 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11089
11090{
11091frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11092{
11093 SI tmp_tmp;
11094 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11095 {
11096 USI opval = tmp_tmp;
11097 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11098 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11099 }
11100if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11101if (EQSI (FLD (f_ccond), 0)) {
11102if (NESI (tmp_tmp, 0)) {
11103 {
11104 USI opval = GET_H_SPR (((UINT) 272));
11105 sim_queue_pc_write (current_cpu, opval);
11106 written |= (1 << 6);
11107 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11108 }
11109}
11110} else {
11111if (EQSI (tmp_tmp, 0)) {
11112 {
11113 USI opval = GET_H_SPR (((UINT) 272));
11114 sim_queue_pc_write (current_cpu, opval);
11115 written |= (1 << 6);
11116 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11117 }
11118}
11119}
11120}
11121}
11122}
11123
11124 abuf->written = written;
11125 return vpc;
11126#undef FLD
11127}
11128
11129/* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11130
11131static SEM_PC
11132SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11133{
11134#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11136 int UNUSED written = 0;
11137 IADDR UNUSED pc = abuf->addr;
11138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11139
11140{
11141frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11142{
11143 SI tmp_tmp;
11144 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11145 {
11146 USI opval = tmp_tmp;
11147 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11148 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11149 }
11150if (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))))) {
11151if (EQSI (FLD (f_ccond), 0)) {
11152if (NESI (tmp_tmp, 0)) {
11153 {
11154 USI opval = GET_H_SPR (((UINT) 272));
11155 sim_queue_pc_write (current_cpu, opval);
11156 written |= (1 << 6);
11157 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11158 }
11159}
11160} else {
11161if (EQSI (tmp_tmp, 0)) {
11162 {
11163 USI opval = GET_H_SPR (((UINT) 272));
11164 sim_queue_pc_write (current_cpu, opval);
11165 written |= (1 << 6);
11166 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11167 }
11168}
11169}
11170}
11171}
11172}
11173
11174 abuf->written = written;
11175 return vpc;
11176#undef FLD
11177}
11178
11179/* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11180
11181static SEM_PC
11182SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11183{
11184#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11186 int UNUSED written = 0;
11187 IADDR UNUSED pc = abuf->addr;
11188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11189
11190{
11191frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11192{
11193 SI tmp_tmp;
11194 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11195 {
11196 USI opval = tmp_tmp;
11197 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11198 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11199 }
11200if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11201if (EQSI (FLD (f_ccond), 0)) {
11202if (NESI (tmp_tmp, 0)) {
11203 {
11204 USI opval = GET_H_SPR (((UINT) 272));
11205 sim_queue_pc_write (current_cpu, opval);
11206 written |= (1 << 6);
11207 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11208 }
11209}
11210} else {
11211if (EQSI (tmp_tmp, 0)) {
11212 {
11213 USI opval = GET_H_SPR (((UINT) 272));
11214 sim_queue_pc_write (current_cpu, opval);
11215 written |= (1 << 6);
11216 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11217 }
11218}
11219}
11220}
11221}
11222}
11223
11224 abuf->written = written;
11225 return vpc;
11226#undef FLD
11227}
11228
11229/* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11230
11231static SEM_PC
11232SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11233{
11234#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11235 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11236 int UNUSED written = 0;
11237 IADDR UNUSED pc = abuf->addr;
11238 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11239
11240{
11241frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11242{
11243 SI tmp_tmp;
11244 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11245 {
11246 USI opval = tmp_tmp;
11247 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11248 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11249 }
11250if (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))))) {
11251if (EQSI (FLD (f_ccond), 0)) {
11252if (NESI (tmp_tmp, 0)) {
11253 {
11254 USI opval = GET_H_SPR (((UINT) 272));
11255 sim_queue_pc_write (current_cpu, opval);
11256 written |= (1 << 6);
11257 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11258 }
11259}
11260} else {
11261if (EQSI (tmp_tmp, 0)) {
11262 {
11263 USI opval = GET_H_SPR (((UINT) 272));
11264 sim_queue_pc_write (current_cpu, opval);
11265 written |= (1 << 6);
11266 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11267 }
11268}
11269}
11270}
11271}
11272}
11273
11274 abuf->written = written;
11275 return vpc;
11276#undef FLD
11277}
11278
11279/* jmpl: jmpl$pack @($GRi,$GRj) */
11280
11281static SEM_PC
11282SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11283{
11284#define FLD(f) abuf->fields.sfmt_cjmpl.f
11285 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11286 int UNUSED written = 0;
11287 IADDR UNUSED pc = abuf->addr;
11288 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11289
11290{
11291if (EQSI (FLD (f_LI), 1)) {
11292frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11293}
11294 {
11295 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11296 sim_queue_pc_write (current_cpu, opval);
11297 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11298 }
11299frvbf_model_branch (current_cpu, pc, 2);
11300}
11301
11302 return vpc;
11303#undef FLD
11304}
11305
11306/* calll: calll$pack @($GRi,$GRj) */
11307
11308static SEM_PC
11309SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11310{
11311#define FLD(f) abuf->fields.sfmt_cjmpl.f
11312 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11313 int UNUSED written = 0;
11314 IADDR UNUSED pc = abuf->addr;
11315 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11316
11317{
11318if (EQSI (FLD (f_LI), 1)) {
11319frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11320}
11321 {
11322 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11323 sim_queue_pc_write (current_cpu, opval);
11324 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11325 }
11326frvbf_model_branch (current_cpu, pc, 2);
11327}
11328
11329 return vpc;
11330#undef FLD
11331}
11332
11333/* jmpil: jmpil$pack @($GRi,$s12) */
11334
11335static SEM_PC
11336SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11337{
11338#define FLD(f) abuf->fields.sfmt_jmpil.f
11339 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11340 int UNUSED written = 0;
11341 IADDR UNUSED pc = abuf->addr;
11342 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11343
11344{
11345if (EQSI (FLD (f_LI), 1)) {
11346frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11347}
11348 {
11349 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11350 sim_queue_pc_write (current_cpu, opval);
11351 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11352 }
11353frvbf_model_branch (current_cpu, pc, 2);
11354}
11355
11356 return vpc;
11357#undef FLD
11358}
11359
11360/* callil: callil$pack @($GRi,$s12) */
11361
11362static SEM_PC
11363SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11364{
11365#define FLD(f) abuf->fields.sfmt_jmpil.f
11366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11367 int UNUSED written = 0;
11368 IADDR UNUSED pc = abuf->addr;
11369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11370
11371{
11372if (EQSI (FLD (f_LI), 1)) {
11373frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11374}
11375 {
11376 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11377 sim_queue_pc_write (current_cpu, opval);
11378 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11379 }
11380frvbf_model_branch (current_cpu, pc, 2);
11381}
11382
11383 return vpc;
11384#undef FLD
11385}
11386
11387/* call: call$pack $label24 */
11388
11389static SEM_PC
11390SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11391{
11392#define FLD(f) abuf->fields.sfmt_call.f
11393 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11394 int UNUSED written = 0;
11395 IADDR UNUSED pc = abuf->addr;
11396 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11397
11398{
11399frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11400 {
11401 USI opval = FLD (i_label24);
11402 sim_queue_pc_write (current_cpu, opval);
11403 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11404 }
11405frvbf_model_branch (current_cpu, pc, 2);
11406}
11407
11408 return vpc;
11409#undef FLD
11410}
11411
11412/* rett: rett$pack $debug */
11413
11414static SEM_PC
11415SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11416{
11417#define FLD(f) abuf->fields.sfmt_rett.f
11418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11419 int UNUSED written = 0;
11420 IADDR UNUSED pc = abuf->addr;
11421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11422
11423{
11424 {
11425 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11426 sim_queue_pc_write (current_cpu, opval);
11427 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11428 }
11429frvbf_model_branch (current_cpu, pc, 2);
11430}
11431
11432 return vpc;
11433#undef FLD
11434}
11435
11436/* rei: rei$pack $eir */
11437
11438static SEM_PC
11439SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11440{
11441#define FLD(f) abuf->fields.fmt_empty.f
11442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11443 int UNUSED written = 0;
11444 IADDR UNUSED pc = abuf->addr;
11445 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11446
11447((void) 0); /*nop*/
11448
11449 return vpc;
11450#undef FLD
11451}
11452
11453/* tra: tra$pack $GRi,$GRj */
11454
11455static SEM_PC
11456SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11457{
11458#define FLD(f) abuf->fields.sfmt_ftne.f
11459 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11460 int UNUSED written = 0;
11461 IADDR UNUSED pc = abuf->addr;
11462 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11463
11464{
11465; /*clobber*/
11466; /*clobber*/
11467; /*clobber*/
11468; /*clobber*/
11469if (NEBI (CPU (h_psr_esr), 0)) {
11470{
11471; /*clobber*/
11472; /*clobber*/
11473; /*clobber*/
11474; /*clobber*/
11475}
11476}
11477frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11478}
11479
11480 abuf->written = written;
11481 return vpc;
11482#undef FLD
11483}
11484
11485/* tno: tno$pack */
11486
11487static SEM_PC
11488SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11489{
11490#define FLD(f) abuf->fields.fmt_empty.f
11491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11492 int UNUSED written = 0;
11493 IADDR UNUSED pc = abuf->addr;
11494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11495
11496((void) 0); /*nop*/
11497
11498 return vpc;
11499#undef FLD
11500}
11501
11502/* teq: teq$pack $ICCi_2,$GRi,$GRj */
11503
11504static SEM_PC
11505SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11506{
11507#define FLD(f) abuf->fields.sfmt_teq.f
11508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11509 int UNUSED written = 0;
11510 IADDR UNUSED pc = abuf->addr;
11511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11512
11513if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11514{
11515; /*clobber*/
11516; /*clobber*/
11517; /*clobber*/
11518; /*clobber*/
11519if (NEBI (CPU (h_psr_esr), 0)) {
11520{
11521; /*clobber*/
11522; /*clobber*/
11523; /*clobber*/
11524; /*clobber*/
11525}
11526}
11527frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11528}
11529}
11530
11531 abuf->written = written;
11532 return vpc;
11533#undef FLD
11534}
11535
11536/* tne: tne$pack $ICCi_2,$GRi,$GRj */
11537
11538static SEM_PC
11539SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11540{
11541#define FLD(f) abuf->fields.sfmt_teq.f
11542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11543 int UNUSED written = 0;
11544 IADDR UNUSED pc = abuf->addr;
11545 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11546
11547if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11548{
11549; /*clobber*/
11550; /*clobber*/
11551; /*clobber*/
11552; /*clobber*/
11553if (NEBI (CPU (h_psr_esr), 0)) {
11554{
11555; /*clobber*/
11556; /*clobber*/
11557; /*clobber*/
11558; /*clobber*/
11559}
11560}
11561frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11562}
11563}
11564
11565 abuf->written = written;
11566 return vpc;
11567#undef FLD
11568}
11569
11570/* tle: tle$pack $ICCi_2,$GRi,$GRj */
11571
11572static SEM_PC
11573SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11574{
11575#define FLD(f) abuf->fields.sfmt_teq.f
11576 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11577 int UNUSED written = 0;
11578 IADDR UNUSED pc = abuf->addr;
11579 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11580
11581if (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))))) {
11582{
11583; /*clobber*/
11584; /*clobber*/
11585; /*clobber*/
11586; /*clobber*/
11587if (NEBI (CPU (h_psr_esr), 0)) {
11588{
11589; /*clobber*/
11590; /*clobber*/
11591; /*clobber*/
11592; /*clobber*/
11593}
11594}
11595frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11596}
11597}
11598
11599 abuf->written = written;
11600 return vpc;
11601#undef FLD
11602}
11603
11604/* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11605
11606static SEM_PC
11607SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11608{
11609#define FLD(f) abuf->fields.sfmt_teq.f
11610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11611 int UNUSED written = 0;
11612 IADDR UNUSED pc = abuf->addr;
11613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11614
11615if (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)))))) {
11616{
11617; /*clobber*/
11618; /*clobber*/
11619; /*clobber*/
11620; /*clobber*/
11621if (NEBI (CPU (h_psr_esr), 0)) {
11622{
11623; /*clobber*/
11624; /*clobber*/
11625; /*clobber*/
11626; /*clobber*/
11627}
11628}
11629frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11630}
11631}
11632
11633 abuf->written = written;
11634 return vpc;
11635#undef FLD
11636}
11637
11638/* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11639
11640static SEM_PC
11641SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11642{
11643#define FLD(f) abuf->fields.sfmt_teq.f
11644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11645 int UNUSED written = 0;
11646 IADDR UNUSED pc = abuf->addr;
11647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11648
11649if (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)))) {
11650{
11651; /*clobber*/
11652; /*clobber*/
11653; /*clobber*/
11654; /*clobber*/
11655if (NEBI (CPU (h_psr_esr), 0)) {
11656{
11657; /*clobber*/
11658; /*clobber*/
11659; /*clobber*/
11660; /*clobber*/
11661}
11662}
11663frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11664}
11665}
11666
11667 abuf->written = written;
11668 return vpc;
11669#undef FLD
11670}
11671
11672/* tge: tge$pack $ICCi_2,$GRi,$GRj */
11673
11674static SEM_PC
11675SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11676{
11677#define FLD(f) abuf->fields.sfmt_teq.f
11678 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11679 int UNUSED written = 0;
11680 IADDR UNUSED pc = abuf->addr;
11681 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11682
11683if (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))))) {
11684{
11685; /*clobber*/
11686; /*clobber*/
11687; /*clobber*/
11688; /*clobber*/
11689if (NEBI (CPU (h_psr_esr), 0)) {
11690{
11691; /*clobber*/
11692; /*clobber*/
11693; /*clobber*/
11694; /*clobber*/
11695}
11696}
11697frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11698}
11699}
11700
11701 abuf->written = written;
11702 return vpc;
11703#undef FLD
11704}
11705
11706/* tls: tls$pack $ICCi_2,$GRi,$GRj */
11707
11708static SEM_PC
11709SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11710{
11711#define FLD(f) abuf->fields.sfmt_teq.f
11712 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11713 int UNUSED written = 0;
11714 IADDR UNUSED pc = abuf->addr;
11715 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11716
11717if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11718{
11719; /*clobber*/
11720; /*clobber*/
11721; /*clobber*/
11722; /*clobber*/
11723if (NEBI (CPU (h_psr_esr), 0)) {
11724{
11725; /*clobber*/
11726; /*clobber*/
11727; /*clobber*/
11728; /*clobber*/
11729}
11730}
11731frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11732}
11733}
11734
11735 abuf->written = written;
11736 return vpc;
11737#undef FLD
11738}
11739
11740/* thi: thi$pack $ICCi_2,$GRi,$GRj */
11741
11742static SEM_PC
11743SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11744{
11745#define FLD(f) abuf->fields.sfmt_teq.f
11746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11747 int UNUSED written = 0;
11748 IADDR UNUSED pc = abuf->addr;
11749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11750
11751if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
11752{
11753; /*clobber*/
11754; /*clobber*/
11755; /*clobber*/
11756; /*clobber*/
11757if (NEBI (CPU (h_psr_esr), 0)) {
11758{
11759; /*clobber*/
11760; /*clobber*/
11761; /*clobber*/
11762; /*clobber*/
11763}
11764}
11765frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11766}
11767}
11768
11769 abuf->written = written;
11770 return vpc;
11771#undef FLD
11772}
11773
11774/* tc: tc$pack $ICCi_2,$GRi,$GRj */
11775
11776static SEM_PC
11777SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11778{
11779#define FLD(f) abuf->fields.sfmt_teq.f
11780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11781 int UNUSED written = 0;
11782 IADDR UNUSED pc = abuf->addr;
11783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11784
11785if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11786{
11787; /*clobber*/
11788; /*clobber*/
11789; /*clobber*/
11790; /*clobber*/
11791if (NEBI (CPU (h_psr_esr), 0)) {
11792{
11793; /*clobber*/
11794; /*clobber*/
11795; /*clobber*/
11796; /*clobber*/
11797}
11798}
11799frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11800}
11801}
11802
11803 abuf->written = written;
11804 return vpc;
11805#undef FLD
11806}
11807
11808/* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11809
11810static SEM_PC
11811SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11812{
11813#define FLD(f) abuf->fields.sfmt_teq.f
11814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11815 int UNUSED written = 0;
11816 IADDR UNUSED pc = abuf->addr;
11817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11818
11819if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11820{
11821; /*clobber*/
11822; /*clobber*/
11823; /*clobber*/
11824; /*clobber*/
11825if (NEBI (CPU (h_psr_esr), 0)) {
11826{
11827; /*clobber*/
11828; /*clobber*/
11829; /*clobber*/
11830; /*clobber*/
11831}
11832}
11833frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11834}
11835}
11836
11837 abuf->written = written;
11838 return vpc;
11839#undef FLD
11840}
11841
11842/* tn: tn$pack $ICCi_2,$GRi,$GRj */
11843
11844static SEM_PC
11845SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11846{
11847#define FLD(f) abuf->fields.sfmt_teq.f
11848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11849 int UNUSED written = 0;
11850 IADDR UNUSED pc = abuf->addr;
11851 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11852
11853if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11854{
11855; /*clobber*/
11856; /*clobber*/
11857; /*clobber*/
11858; /*clobber*/
11859if (NEBI (CPU (h_psr_esr), 0)) {
11860{
11861; /*clobber*/
11862; /*clobber*/
11863; /*clobber*/
11864; /*clobber*/
11865}
11866}
11867frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11868}
11869}
11870
11871 abuf->written = written;
11872 return vpc;
11873#undef FLD
11874}
11875
11876/* tp: tp$pack $ICCi_2,$GRi,$GRj */
11877
11878static SEM_PC
11879SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11880{
11881#define FLD(f) abuf->fields.sfmt_teq.f
11882 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11883 int UNUSED written = 0;
11884 IADDR UNUSED pc = abuf->addr;
11885 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11886
11887if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11888{
11889; /*clobber*/
11890; /*clobber*/
11891; /*clobber*/
11892; /*clobber*/
11893if (NEBI (CPU (h_psr_esr), 0)) {
11894{
11895; /*clobber*/
11896; /*clobber*/
11897; /*clobber*/
11898; /*clobber*/
11899}
11900}
11901frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11902}
11903}
11904
11905 abuf->written = written;
11906 return vpc;
11907#undef FLD
11908}
11909
11910/* tv: tv$pack $ICCi_2,$GRi,$GRj */
11911
11912static SEM_PC
11913SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11914{
11915#define FLD(f) abuf->fields.sfmt_teq.f
11916 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11917 int UNUSED written = 0;
11918 IADDR UNUSED pc = abuf->addr;
11919 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11920
11921if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
11922{
11923; /*clobber*/
11924; /*clobber*/
11925; /*clobber*/
11926; /*clobber*/
11927if (NEBI (CPU (h_psr_esr), 0)) {
11928{
11929; /*clobber*/
11930; /*clobber*/
11931; /*clobber*/
11932; /*clobber*/
11933}
11934}
11935frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11936}
11937}
11938
11939 abuf->written = written;
11940 return vpc;
11941#undef FLD
11942}
11943
11944/* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
11945
11946static SEM_PC
11947SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11948{
11949#define FLD(f) abuf->fields.sfmt_teq.f
11950 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11951 int UNUSED written = 0;
11952 IADDR UNUSED pc = abuf->addr;
11953 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11954
11955if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11956{
11957; /*clobber*/
11958; /*clobber*/
11959; /*clobber*/
11960; /*clobber*/
11961if (NEBI (CPU (h_psr_esr), 0)) {
11962{
11963; /*clobber*/
11964; /*clobber*/
11965; /*clobber*/
11966; /*clobber*/
11967}
11968}
11969frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11970}
11971}
11972
11973 abuf->written = written;
11974 return vpc;
11975#undef FLD
11976}
11977
11978/* ftra: ftra$pack $GRi,$GRj */
11979
11980static SEM_PC
11981SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11982{
11983#define FLD(f) abuf->fields.sfmt_ftne.f
11984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11985 int UNUSED written = 0;
11986 IADDR UNUSED pc = abuf->addr;
11987 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11988
11989{
11990; /*clobber*/
11991; /*clobber*/
11992; /*clobber*/
11993; /*clobber*/
11994if (NEBI (CPU (h_psr_esr), 0)) {
11995{
11996; /*clobber*/
11997; /*clobber*/
11998; /*clobber*/
11999; /*clobber*/
12000}
12001}
12002frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12003}
12004
12005 abuf->written = written;
12006 return vpc;
12007#undef FLD
12008}
12009
12010/* ftno: ftno$pack */
12011
12012static SEM_PC
12013SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12014{
12015#define FLD(f) abuf->fields.fmt_empty.f
12016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12017 int UNUSED written = 0;
12018 IADDR UNUSED pc = abuf->addr;
12019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12020
12021((void) 0); /*nop*/
12022
12023 return vpc;
12024#undef FLD
12025}
12026
12027/* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12028
12029static SEM_PC
12030SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12031{
12032#define FLD(f) abuf->fields.sfmt_ftne.f
12033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12034 int UNUSED written = 0;
12035 IADDR UNUSED pc = abuf->addr;
12036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12037
12038if (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))))) {
12039{
12040; /*clobber*/
12041; /*clobber*/
12042; /*clobber*/
12043; /*clobber*/
12044if (NEBI (CPU (h_psr_esr), 0)) {
12045{
12046; /*clobber*/
12047; /*clobber*/
12048; /*clobber*/
12049; /*clobber*/
12050}
12051}
12052frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12053}
12054}
12055
12056 abuf->written = written;
12057 return vpc;
12058#undef FLD
12059}
12060
12061/* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12062
12063static SEM_PC
12064SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12065{
12066#define FLD(f) abuf->fields.sfmt_ftne.f
12067 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12068 int UNUSED written = 0;
12069 IADDR UNUSED pc = abuf->addr;
12070 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12071
12072if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12073{
12074; /*clobber*/
12075; /*clobber*/
12076; /*clobber*/
12077; /*clobber*/
12078if (NEBI (CPU (h_psr_esr), 0)) {
12079{
12080; /*clobber*/
12081; /*clobber*/
12082; /*clobber*/
12083; /*clobber*/
12084}
12085}
12086frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12087}
12088}
12089
12090 abuf->written = written;
12091 return vpc;
12092#undef FLD
12093}
12094
12095/* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12096
12097static SEM_PC
12098SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12099{
12100#define FLD(f) abuf->fields.sfmt_ftne.f
12101 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12102 int UNUSED written = 0;
12103 IADDR UNUSED pc = abuf->addr;
12104 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12105
12106if (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)))) {
12107{
12108; /*clobber*/
12109; /*clobber*/
12110; /*clobber*/
12111; /*clobber*/
12112if (NEBI (CPU (h_psr_esr), 0)) {
12113{
12114; /*clobber*/
12115; /*clobber*/
12116; /*clobber*/
12117; /*clobber*/
12118}
12119}
12120frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12121}
12122}
12123
12124 abuf->written = written;
12125 return vpc;
12126#undef FLD
12127}
12128
12129/* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12130
12131static SEM_PC
12132SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12133{
12134#define FLD(f) abuf->fields.sfmt_ftne.f
12135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12136 int UNUSED written = 0;
12137 IADDR UNUSED pc = abuf->addr;
12138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12139
12140if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12141{
12142; /*clobber*/
12143; /*clobber*/
12144; /*clobber*/
12145; /*clobber*/
12146if (NEBI (CPU (h_psr_esr), 0)) {
12147{
12148; /*clobber*/
12149; /*clobber*/
12150; /*clobber*/
12151; /*clobber*/
12152}
12153}
12154frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12155}
12156}
12157
12158 abuf->written = written;
12159 return vpc;
12160#undef FLD
12161}
12162
12163/* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12164
12165static SEM_PC
12166SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12167{
12168#define FLD(f) abuf->fields.sfmt_ftne.f
12169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12170 int UNUSED written = 0;
12171 IADDR UNUSED pc = abuf->addr;
12172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12173
12174if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12175{
12176; /*clobber*/
12177; /*clobber*/
12178; /*clobber*/
12179; /*clobber*/
12180if (NEBI (CPU (h_psr_esr), 0)) {
12181{
12182; /*clobber*/
12183; /*clobber*/
12184; /*clobber*/
12185; /*clobber*/
12186}
12187}
12188frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12189}
12190}
12191
12192 abuf->written = written;
12193 return vpc;
12194#undef FLD
12195}
12196
12197/* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12198
12199static SEM_PC
12200SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12201{
12202#define FLD(f) abuf->fields.sfmt_ftne.f
12203 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12204 int UNUSED written = 0;
12205 IADDR UNUSED pc = abuf->addr;
12206 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12207
12208if (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)))) {
12209{
12210; /*clobber*/
12211; /*clobber*/
12212; /*clobber*/
12213; /*clobber*/
12214if (NEBI (CPU (h_psr_esr), 0)) {
12215{
12216; /*clobber*/
12217; /*clobber*/
12218; /*clobber*/
12219; /*clobber*/
12220}
12221}
12222frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12223}
12224}
12225
12226 abuf->written = written;
12227 return vpc;
12228#undef FLD
12229}
12230
12231/* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12232
12233static SEM_PC
12234SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12235{
12236#define FLD(f) abuf->fields.sfmt_ftne.f
12237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12238 int UNUSED written = 0;
12239 IADDR UNUSED pc = abuf->addr;
12240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12241
12242if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12243{
12244; /*clobber*/
12245; /*clobber*/
12246; /*clobber*/
12247; /*clobber*/
12248if (NEBI (CPU (h_psr_esr), 0)) {
12249{
12250; /*clobber*/
12251; /*clobber*/
12252; /*clobber*/
12253; /*clobber*/
12254}
12255}
12256frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12257}
12258}
12259
12260 abuf->written = written;
12261 return vpc;
12262#undef FLD
12263}
12264
12265/* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12266
12267static SEM_PC
12268SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12269{
12270#define FLD(f) abuf->fields.sfmt_ftne.f
12271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12272 int UNUSED written = 0;
12273 IADDR UNUSED pc = abuf->addr;
12274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12275
12276if (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))))) {
12277{
12278; /*clobber*/
12279; /*clobber*/
12280; /*clobber*/
12281; /*clobber*/
12282if (NEBI (CPU (h_psr_esr), 0)) {
12283{
12284; /*clobber*/
12285; /*clobber*/
12286; /*clobber*/
12287; /*clobber*/
12288}
12289}
12290frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12291}
12292}
12293
12294 abuf->written = written;
12295 return vpc;
12296#undef FLD
12297}
12298
12299/* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12300
12301static SEM_PC
12302SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12303{
12304#define FLD(f) abuf->fields.sfmt_ftne.f
12305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12306 int UNUSED written = 0;
12307 IADDR UNUSED pc = abuf->addr;
12308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12309
12310if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12311{
12312; /*clobber*/
12313; /*clobber*/
12314; /*clobber*/
12315; /*clobber*/
12316if (NEBI (CPU (h_psr_esr), 0)) {
12317{
12318; /*clobber*/
12319; /*clobber*/
12320; /*clobber*/
12321; /*clobber*/
12322}
12323}
12324frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12325}
12326}
12327
12328 abuf->written = written;
12329 return vpc;
12330#undef FLD
12331}
12332
12333/* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12334
12335static SEM_PC
12336SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12337{
12338#define FLD(f) abuf->fields.sfmt_ftne.f
12339 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12340 int UNUSED written = 0;
12341 IADDR UNUSED pc = abuf->addr;
12342 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12343
12344if (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)))) {
12345{
12346; /*clobber*/
12347; /*clobber*/
12348; /*clobber*/
12349; /*clobber*/
12350if (NEBI (CPU (h_psr_esr), 0)) {
12351{
12352; /*clobber*/
12353; /*clobber*/
12354; /*clobber*/
12355; /*clobber*/
12356}
12357}
12358frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12359}
12360}
12361
12362 abuf->written = written;
12363 return vpc;
12364#undef FLD
12365}
12366
12367/* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12368
12369static SEM_PC
12370SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12371{
12372#define FLD(f) abuf->fields.sfmt_ftne.f
12373 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12374 int UNUSED written = 0;
12375 IADDR UNUSED pc = abuf->addr;
12376 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12377
12378if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12379{
12380; /*clobber*/
12381; /*clobber*/
12382; /*clobber*/
12383; /*clobber*/
12384if (NEBI (CPU (h_psr_esr), 0)) {
12385{
12386; /*clobber*/
12387; /*clobber*/
12388; /*clobber*/
12389; /*clobber*/
12390}
12391}
12392frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12393}
12394}
12395
12396 abuf->written = written;
12397 return vpc;
12398#undef FLD
12399}
12400
12401/* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12402
12403static SEM_PC
12404SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12405{
12406#define FLD(f) abuf->fields.sfmt_ftne.f
12407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12408 int UNUSED written = 0;
12409 IADDR UNUSED pc = abuf->addr;
12410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12411
12412if (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))))) {
12413{
12414; /*clobber*/
12415; /*clobber*/
12416; /*clobber*/
12417; /*clobber*/
12418if (NEBI (CPU (h_psr_esr), 0)) {
12419{
12420; /*clobber*/
12421; /*clobber*/
12422; /*clobber*/
12423; /*clobber*/
12424}
12425}
12426frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12427}
12428}
12429
12430 abuf->written = written;
12431 return vpc;
12432#undef FLD
12433}
12434
12435/* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12436
12437static SEM_PC
12438SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12439{
12440#define FLD(f) abuf->fields.sfmt_ftne.f
12441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12442 int UNUSED written = 0;
12443 IADDR UNUSED pc = abuf->addr;
12444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12445
12446if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12447{
12448; /*clobber*/
12449; /*clobber*/
12450; /*clobber*/
12451; /*clobber*/
12452if (NEBI (CPU (h_psr_esr), 0)) {
12453{
12454; /*clobber*/
12455; /*clobber*/
12456; /*clobber*/
12457; /*clobber*/
12458}
12459}
12460frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12461}
12462}
12463
12464 abuf->written = written;
12465 return vpc;
12466#undef FLD
12467}
12468
12469/* fto: fto$pack $FCCi_2,$GRi,$GRj */
12470
12471static SEM_PC
12472SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12473{
12474#define FLD(f) abuf->fields.sfmt_ftne.f
12475 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12476 int UNUSED written = 0;
12477 IADDR UNUSED pc = abuf->addr;
12478 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12479
12480if (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))))) {
12481{
12482; /*clobber*/
12483; /*clobber*/
12484; /*clobber*/
12485; /*clobber*/
12486if (NEBI (CPU (h_psr_esr), 0)) {
12487{
12488; /*clobber*/
12489; /*clobber*/
12490; /*clobber*/
12491; /*clobber*/
12492}
12493}
12494frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12495}
12496}
12497
12498 abuf->written = written;
12499 return vpc;
12500#undef FLD
12501}
12502
12503/* tira: tira$pack $GRi,$s12 */
12504
12505static SEM_PC
12506SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12507{
12508#define FLD(f) abuf->fields.sfmt_ftine.f
12509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12510 int UNUSED written = 0;
12511 IADDR UNUSED pc = abuf->addr;
12512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12513
12514{
12515; /*clobber*/
12516; /*clobber*/
12517; /*clobber*/
12518; /*clobber*/
12519if (NEBI (CPU (h_psr_esr), 0)) {
12520{
12521; /*clobber*/
12522; /*clobber*/
12523; /*clobber*/
12524; /*clobber*/
12525}
12526}
12527frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12528}
12529
12530 abuf->written = written;
12531 return vpc;
12532#undef FLD
12533}
12534
12535/* tino: tino$pack */
12536
12537static SEM_PC
12538SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12539{
12540#define FLD(f) abuf->fields.fmt_empty.f
12541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12542 int UNUSED written = 0;
12543 IADDR UNUSED pc = abuf->addr;
12544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12545
12546((void) 0); /*nop*/
12547
12548 return vpc;
12549#undef FLD
12550}
12551
12552/* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12553
12554static SEM_PC
12555SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12556{
12557#define FLD(f) abuf->fields.sfmt_tieq.f
12558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12559 int UNUSED written = 0;
12560 IADDR UNUSED pc = abuf->addr;
12561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12562
12563if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12564{
12565; /*clobber*/
12566; /*clobber*/
12567; /*clobber*/
12568; /*clobber*/
12569if (NEBI (CPU (h_psr_esr), 0)) {
12570{
12571; /*clobber*/
12572; /*clobber*/
12573; /*clobber*/
12574; /*clobber*/
12575}
12576}
12577frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12578}
12579}
12580
12581 abuf->written = written;
12582 return vpc;
12583#undef FLD
12584}
12585
12586/* tine: tine$pack $ICCi_2,$GRi,$s12 */
12587
12588static SEM_PC
12589SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12590{
12591#define FLD(f) abuf->fields.sfmt_tieq.f
12592 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12593 int UNUSED written = 0;
12594 IADDR UNUSED pc = abuf->addr;
12595 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12596
12597if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12598{
12599; /*clobber*/
12600; /*clobber*/
12601; /*clobber*/
12602; /*clobber*/
12603if (NEBI (CPU (h_psr_esr), 0)) {
12604{
12605; /*clobber*/
12606; /*clobber*/
12607; /*clobber*/
12608; /*clobber*/
12609}
12610}
12611frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12612}
12613}
12614
12615 abuf->written = written;
12616 return vpc;
12617#undef FLD
12618}
12619
12620/* tile: tile$pack $ICCi_2,$GRi,$s12 */
12621
12622static SEM_PC
12623SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12624{
12625#define FLD(f) abuf->fields.sfmt_tieq.f
12626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12627 int UNUSED written = 0;
12628 IADDR UNUSED pc = abuf->addr;
12629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12630
12631if (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))))) {
12632{
12633; /*clobber*/
12634; /*clobber*/
12635; /*clobber*/
12636; /*clobber*/
12637if (NEBI (CPU (h_psr_esr), 0)) {
12638{
12639; /*clobber*/
12640; /*clobber*/
12641; /*clobber*/
12642; /*clobber*/
12643}
12644}
12645frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12646}
12647}
12648
12649 abuf->written = written;
12650 return vpc;
12651#undef FLD
12652}
12653
12654/* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12655
12656static SEM_PC
12657SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12658{
12659#define FLD(f) abuf->fields.sfmt_tieq.f
12660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12661 int UNUSED written = 0;
12662 IADDR UNUSED pc = abuf->addr;
12663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12664
12665if (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)))))) {
12666{
12667; /*clobber*/
12668; /*clobber*/
12669; /*clobber*/
12670; /*clobber*/
12671if (NEBI (CPU (h_psr_esr), 0)) {
12672{
12673; /*clobber*/
12674; /*clobber*/
12675; /*clobber*/
12676; /*clobber*/
12677}
12678}
12679frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12680}
12681}
12682
12683 abuf->written = written;
12684 return vpc;
12685#undef FLD
12686}
12687
12688/* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12689
12690static SEM_PC
12691SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12692{
12693#define FLD(f) abuf->fields.sfmt_tieq.f
12694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12695 int UNUSED written = 0;
12696 IADDR UNUSED pc = abuf->addr;
12697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12698
12699if (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)))) {
12700{
12701; /*clobber*/
12702; /*clobber*/
12703; /*clobber*/
12704; /*clobber*/
12705if (NEBI (CPU (h_psr_esr), 0)) {
12706{
12707; /*clobber*/
12708; /*clobber*/
12709; /*clobber*/
12710; /*clobber*/
12711}
12712}
12713frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12714}
12715}
12716
12717 abuf->written = written;
12718 return vpc;
12719#undef FLD
12720}
12721
12722/* tige: tige$pack $ICCi_2,$GRi,$s12 */
12723
12724static SEM_PC
12725SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12726{
12727#define FLD(f) abuf->fields.sfmt_tieq.f
12728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12729 int UNUSED written = 0;
12730 IADDR UNUSED pc = abuf->addr;
12731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12732
12733if (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))))) {
12734{
12735; /*clobber*/
12736; /*clobber*/
12737; /*clobber*/
12738; /*clobber*/
12739if (NEBI (CPU (h_psr_esr), 0)) {
12740{
12741; /*clobber*/
12742; /*clobber*/
12743; /*clobber*/
12744; /*clobber*/
12745}
12746}
12747frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12748}
12749}
12750
12751 abuf->written = written;
12752 return vpc;
12753#undef FLD
12754}
12755
12756/* tils: tils$pack $ICCi_2,$GRi,$s12 */
12757
12758static SEM_PC
12759SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12760{
12761#define FLD(f) abuf->fields.sfmt_tieq.f
12762 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12763 int UNUSED written = 0;
12764 IADDR UNUSED pc = abuf->addr;
12765 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12766
12767if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12768{
12769; /*clobber*/
12770; /*clobber*/
12771; /*clobber*/
12772; /*clobber*/
12773if (NEBI (CPU (h_psr_esr), 0)) {
12774{
12775; /*clobber*/
12776; /*clobber*/
12777; /*clobber*/
12778; /*clobber*/
12779}
12780}
12781frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12782}
12783}
12784
12785 abuf->written = written;
12786 return vpc;
12787#undef FLD
12788}
12789
12790/* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12791
12792static SEM_PC
12793SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12794{
12795#define FLD(f) abuf->fields.sfmt_tieq.f
12796 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12797 int UNUSED written = 0;
12798 IADDR UNUSED pc = abuf->addr;
12799 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12800
12801if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
12802{
12803; /*clobber*/
12804; /*clobber*/
12805; /*clobber*/
12806; /*clobber*/
12807if (NEBI (CPU (h_psr_esr), 0)) {
12808{
12809; /*clobber*/
12810; /*clobber*/
12811; /*clobber*/
12812; /*clobber*/
12813}
12814}
12815frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12816}
12817}
12818
12819 abuf->written = written;
12820 return vpc;
12821#undef FLD
12822}
12823
12824/* tic: tic$pack $ICCi_2,$GRi,$s12 */
12825
12826static SEM_PC
12827SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12828{
12829#define FLD(f) abuf->fields.sfmt_tieq.f
12830 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12831 int UNUSED written = 0;
12832 IADDR UNUSED pc = abuf->addr;
12833 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12834
12835if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12836{
12837; /*clobber*/
12838; /*clobber*/
12839; /*clobber*/
12840; /*clobber*/
12841if (NEBI (CPU (h_psr_esr), 0)) {
12842{
12843; /*clobber*/
12844; /*clobber*/
12845; /*clobber*/
12846; /*clobber*/
12847}
12848}
12849frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12850}
12851}
12852
12853 abuf->written = written;
12854 return vpc;
12855#undef FLD
12856}
12857
12858/* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12859
12860static SEM_PC
12861SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12862{
12863#define FLD(f) abuf->fields.sfmt_tieq.f
12864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12865 int UNUSED written = 0;
12866 IADDR UNUSED pc = abuf->addr;
12867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12868
12869if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12870{
12871; /*clobber*/
12872; /*clobber*/
12873; /*clobber*/
12874; /*clobber*/
12875if (NEBI (CPU (h_psr_esr), 0)) {
12876{
12877; /*clobber*/
12878; /*clobber*/
12879; /*clobber*/
12880; /*clobber*/
12881}
12882}
12883frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12884}
12885}
12886
12887 abuf->written = written;
12888 return vpc;
12889#undef FLD
12890}
12891
12892/* tin: tin$pack $ICCi_2,$GRi,$s12 */
12893
12894static SEM_PC
12895SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12896{
12897#define FLD(f) abuf->fields.sfmt_tieq.f
12898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12899 int UNUSED written = 0;
12900 IADDR UNUSED pc = abuf->addr;
12901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12902
12903if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12904{
12905; /*clobber*/
12906; /*clobber*/
12907; /*clobber*/
12908; /*clobber*/
12909if (NEBI (CPU (h_psr_esr), 0)) {
12910{
12911; /*clobber*/
12912; /*clobber*/
12913; /*clobber*/
12914; /*clobber*/
12915}
12916}
12917frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12918}
12919}
12920
12921 abuf->written = written;
12922 return vpc;
12923#undef FLD
12924}
12925
12926/* tip: tip$pack $ICCi_2,$GRi,$s12 */
12927
12928static SEM_PC
12929SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12930{
12931#define FLD(f) abuf->fields.sfmt_tieq.f
12932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12933 int UNUSED written = 0;
12934 IADDR UNUSED pc = abuf->addr;
12935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12936
12937if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12938{
12939; /*clobber*/
12940; /*clobber*/
12941; /*clobber*/
12942; /*clobber*/
12943if (NEBI (CPU (h_psr_esr), 0)) {
12944{
12945; /*clobber*/
12946; /*clobber*/
12947; /*clobber*/
12948; /*clobber*/
12949}
12950}
12951frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12952}
12953}
12954
12955 abuf->written = written;
12956 return vpc;
12957#undef FLD
12958}
12959
12960/* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
12961
12962static SEM_PC
12963SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12964{
12965#define FLD(f) abuf->fields.sfmt_tieq.f
12966 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12967 int UNUSED written = 0;
12968 IADDR UNUSED pc = abuf->addr;
12969 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12970
12971if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12972{
12973; /*clobber*/
12974; /*clobber*/
12975; /*clobber*/
12976; /*clobber*/
12977if (NEBI (CPU (h_psr_esr), 0)) {
12978{
12979; /*clobber*/
12980; /*clobber*/
12981; /*clobber*/
12982; /*clobber*/
12983}
12984}
12985frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12986}
12987}
12988
12989 abuf->written = written;
12990 return vpc;
12991#undef FLD
12992}
12993
12994/* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
12995
12996static SEM_PC
12997SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12998{
12999#define FLD(f) abuf->fields.sfmt_tieq.f
13000 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13001 int UNUSED written = 0;
13002 IADDR UNUSED pc = abuf->addr;
13003 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13004
13005if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13006{
13007; /*clobber*/
13008; /*clobber*/
13009; /*clobber*/
13010; /*clobber*/
13011if (NEBI (CPU (h_psr_esr), 0)) {
13012{
13013; /*clobber*/
13014; /*clobber*/
13015; /*clobber*/
13016; /*clobber*/
13017}
13018}
13019frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13020}
13021}
13022
13023 abuf->written = written;
13024 return vpc;
13025#undef FLD
13026}
13027
13028/* ftira: ftira$pack $GRi,$s12 */
13029
13030static SEM_PC
13031SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13032{
13033#define FLD(f) abuf->fields.sfmt_ftine.f
13034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13035 int UNUSED written = 0;
13036 IADDR UNUSED pc = abuf->addr;
13037 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13038
13039{
13040; /*clobber*/
13041; /*clobber*/
13042; /*clobber*/
13043; /*clobber*/
13044if (NEBI (CPU (h_psr_esr), 0)) {
13045{
13046; /*clobber*/
13047; /*clobber*/
13048; /*clobber*/
13049; /*clobber*/
13050}
13051}
13052frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13053}
13054
13055 abuf->written = written;
13056 return vpc;
13057#undef FLD
13058}
13059
13060/* ftino: ftino$pack */
13061
13062static SEM_PC
13063SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13064{
13065#define FLD(f) abuf->fields.fmt_empty.f
13066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13067 int UNUSED written = 0;
13068 IADDR UNUSED pc = abuf->addr;
13069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13070
13071((void) 0); /*nop*/
13072
13073 return vpc;
13074#undef FLD
13075}
13076
13077/* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13078
13079static SEM_PC
13080SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13081{
13082#define FLD(f) abuf->fields.sfmt_ftine.f
13083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13084 int UNUSED written = 0;
13085 IADDR UNUSED pc = abuf->addr;
13086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13087
13088if (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))))) {
13089{
13090; /*clobber*/
13091; /*clobber*/
13092; /*clobber*/
13093; /*clobber*/
13094if (NEBI (CPU (h_psr_esr), 0)) {
13095{
13096; /*clobber*/
13097; /*clobber*/
13098; /*clobber*/
13099; /*clobber*/
13100}
13101}
13102frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13103}
13104}
13105
13106 abuf->written = written;
13107 return vpc;
13108#undef FLD
13109}
13110
13111/* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13112
13113static SEM_PC
13114SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13115{
13116#define FLD(f) abuf->fields.sfmt_ftine.f
13117 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13118 int UNUSED written = 0;
13119 IADDR UNUSED pc = abuf->addr;
13120 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13121
13122if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13123{
13124; /*clobber*/
13125; /*clobber*/
13126; /*clobber*/
13127; /*clobber*/
13128if (NEBI (CPU (h_psr_esr), 0)) {
13129{
13130; /*clobber*/
13131; /*clobber*/
13132; /*clobber*/
13133; /*clobber*/
13134}
13135}
13136frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13137}
13138}
13139
13140 abuf->written = written;
13141 return vpc;
13142#undef FLD
13143}
13144
13145/* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13146
13147static SEM_PC
13148SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13149{
13150#define FLD(f) abuf->fields.sfmt_ftine.f
13151 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13152 int UNUSED written = 0;
13153 IADDR UNUSED pc = abuf->addr;
13154 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13155
13156if (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)))) {
13157{
13158; /*clobber*/
13159; /*clobber*/
13160; /*clobber*/
13161; /*clobber*/
13162if (NEBI (CPU (h_psr_esr), 0)) {
13163{
13164; /*clobber*/
13165; /*clobber*/
13166; /*clobber*/
13167; /*clobber*/
13168}
13169}
13170frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13171}
13172}
13173
13174 abuf->written = written;
13175 return vpc;
13176#undef FLD
13177}
13178
13179/* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13180
13181static SEM_PC
13182SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13183{
13184#define FLD(f) abuf->fields.sfmt_ftine.f
13185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13186 int UNUSED written = 0;
13187 IADDR UNUSED pc = abuf->addr;
13188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13189
13190if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13191{
13192; /*clobber*/
13193; /*clobber*/
13194; /*clobber*/
13195; /*clobber*/
13196if (NEBI (CPU (h_psr_esr), 0)) {
13197{
13198; /*clobber*/
13199; /*clobber*/
13200; /*clobber*/
13201; /*clobber*/
13202}
13203}
13204frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13205}
13206}
13207
13208 abuf->written = written;
13209 return vpc;
13210#undef FLD
13211}
13212
13213/* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13214
13215static SEM_PC
13216SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13217{
13218#define FLD(f) abuf->fields.sfmt_ftine.f
13219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13220 int UNUSED written = 0;
13221 IADDR UNUSED pc = abuf->addr;
13222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13223
13224if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13225{
13226; /*clobber*/
13227; /*clobber*/
13228; /*clobber*/
13229; /*clobber*/
13230if (NEBI (CPU (h_psr_esr), 0)) {
13231{
13232; /*clobber*/
13233; /*clobber*/
13234; /*clobber*/
13235; /*clobber*/
13236}
13237}
13238frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13239}
13240}
13241
13242 abuf->written = written;
13243 return vpc;
13244#undef FLD
13245}
13246
13247/* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13248
13249static SEM_PC
13250SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13251{
13252#define FLD(f) abuf->fields.sfmt_ftine.f
13253 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13254 int UNUSED written = 0;
13255 IADDR UNUSED pc = abuf->addr;
13256 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13257
13258if (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)))) {
13259{
13260; /*clobber*/
13261; /*clobber*/
13262; /*clobber*/
13263; /*clobber*/
13264if (NEBI (CPU (h_psr_esr), 0)) {
13265{
13266; /*clobber*/
13267; /*clobber*/
13268; /*clobber*/
13269; /*clobber*/
13270}
13271}
13272frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13273}
13274}
13275
13276 abuf->written = written;
13277 return vpc;
13278#undef FLD
13279}
13280
13281/* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13282
13283static SEM_PC
13284SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13285{
13286#define FLD(f) abuf->fields.sfmt_ftine.f
13287 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13288 int UNUSED written = 0;
13289 IADDR UNUSED pc = abuf->addr;
13290 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13291
13292if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13293{
13294; /*clobber*/
13295; /*clobber*/
13296; /*clobber*/
13297; /*clobber*/
13298if (NEBI (CPU (h_psr_esr), 0)) {
13299{
13300; /*clobber*/
13301; /*clobber*/
13302; /*clobber*/
13303; /*clobber*/
13304}
13305}
13306frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13307}
13308}
13309
13310 abuf->written = written;
13311 return vpc;
13312#undef FLD
13313}
13314
13315/* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13316
13317static SEM_PC
13318SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13319{
13320#define FLD(f) abuf->fields.sfmt_ftine.f
13321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13322 int UNUSED written = 0;
13323 IADDR UNUSED pc = abuf->addr;
13324 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13325
13326if (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))))) {
13327{
13328; /*clobber*/
13329; /*clobber*/
13330; /*clobber*/
13331; /*clobber*/
13332if (NEBI (CPU (h_psr_esr), 0)) {
13333{
13334; /*clobber*/
13335; /*clobber*/
13336; /*clobber*/
13337; /*clobber*/
13338}
13339}
13340frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13341}
13342}
13343
13344 abuf->written = written;
13345 return vpc;
13346#undef FLD
13347}
13348
13349/* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13350
13351static SEM_PC
13352SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13353{
13354#define FLD(f) abuf->fields.sfmt_ftine.f
13355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13356 int UNUSED written = 0;
13357 IADDR UNUSED pc = abuf->addr;
13358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13359
13360if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13361{
13362; /*clobber*/
13363; /*clobber*/
13364; /*clobber*/
13365; /*clobber*/
13366if (NEBI (CPU (h_psr_esr), 0)) {
13367{
13368; /*clobber*/
13369; /*clobber*/
13370; /*clobber*/
13371; /*clobber*/
13372}
13373}
13374frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13375}
13376}
13377
13378 abuf->written = written;
13379 return vpc;
13380#undef FLD
13381}
13382
13383/* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13384
13385static SEM_PC
13386SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13387{
13388#define FLD(f) abuf->fields.sfmt_ftine.f
13389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13390 int UNUSED written = 0;
13391 IADDR UNUSED pc = abuf->addr;
13392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13393
13394if (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)))) {
13395{
13396; /*clobber*/
13397; /*clobber*/
13398; /*clobber*/
13399; /*clobber*/
13400if (NEBI (CPU (h_psr_esr), 0)) {
13401{
13402; /*clobber*/
13403; /*clobber*/
13404; /*clobber*/
13405; /*clobber*/
13406}
13407}
13408frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13409}
13410}
13411
13412 abuf->written = written;
13413 return vpc;
13414#undef FLD
13415}
13416
13417/* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13418
13419static SEM_PC
13420SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13421{
13422#define FLD(f) abuf->fields.sfmt_ftine.f
13423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13424 int UNUSED written = 0;
13425 IADDR UNUSED pc = abuf->addr;
13426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13427
13428if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13429{
13430; /*clobber*/
13431; /*clobber*/
13432; /*clobber*/
13433; /*clobber*/
13434if (NEBI (CPU (h_psr_esr), 0)) {
13435{
13436; /*clobber*/
13437; /*clobber*/
13438; /*clobber*/
13439; /*clobber*/
13440}
13441}
13442frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13443}
13444}
13445
13446 abuf->written = written;
13447 return vpc;
13448#undef FLD
13449}
13450
13451/* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13452
13453static SEM_PC
13454SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13455{
13456#define FLD(f) abuf->fields.sfmt_ftine.f
13457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13458 int UNUSED written = 0;
13459 IADDR UNUSED pc = abuf->addr;
13460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13461
13462if (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))))) {
13463{
13464; /*clobber*/
13465; /*clobber*/
13466; /*clobber*/
13467; /*clobber*/
13468if (NEBI (CPU (h_psr_esr), 0)) {
13469{
13470; /*clobber*/
13471; /*clobber*/
13472; /*clobber*/
13473; /*clobber*/
13474}
13475}
13476frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13477}
13478}
13479
13480 abuf->written = written;
13481 return vpc;
13482#undef FLD
13483}
13484
13485/* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13486
13487static SEM_PC
13488SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13489{
13490#define FLD(f) abuf->fields.sfmt_ftine.f
13491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13492 int UNUSED written = 0;
13493 IADDR UNUSED pc = abuf->addr;
13494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13495
13496if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13497{
13498; /*clobber*/
13499; /*clobber*/
13500; /*clobber*/
13501; /*clobber*/
13502if (NEBI (CPU (h_psr_esr), 0)) {
13503{
13504; /*clobber*/
13505; /*clobber*/
13506; /*clobber*/
13507; /*clobber*/
13508}
13509}
13510frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13511}
13512}
13513
13514 abuf->written = written;
13515 return vpc;
13516#undef FLD
13517}
13518
13519/* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13520
13521static SEM_PC
13522SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13523{
13524#define FLD(f) abuf->fields.sfmt_ftine.f
13525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13526 int UNUSED written = 0;
13527 IADDR UNUSED pc = abuf->addr;
13528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13529
13530if (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))))) {
13531{
13532; /*clobber*/
13533; /*clobber*/
13534; /*clobber*/
13535; /*clobber*/
13536if (NEBI (CPU (h_psr_esr), 0)) {
13537{
13538; /*clobber*/
13539; /*clobber*/
13540; /*clobber*/
13541; /*clobber*/
13542}
13543}
13544frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13545}
13546}
13547
13548 abuf->written = written;
13549 return vpc;
13550#undef FLD
13551}
13552
13553/* break: break$pack */
13554
13555static SEM_PC
13556SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13557{
13558#define FLD(f) abuf->fields.sfmt_break.f
13559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13560 int UNUSED written = 0;
13561 IADDR UNUSED pc = abuf->addr;
13562 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13563
13564{
13565; /*clobber*/
13566; /*clobber*/
13567; /*clobber*/
13568; /*clobber*/
13569; /*clobber*/
13570; /*clobber*/
13571frv_break (current_cpu);
13572}
13573
13574 return vpc;
13575#undef FLD
13576}
13577
13578/* mtrap: mtrap$pack */
13579
13580static SEM_PC
13581SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13582{
13583#define FLD(f) abuf->fields.fmt_empty.f
13584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13585 int UNUSED written = 0;
13586 IADDR UNUSED pc = abuf->addr;
13587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13588
13589frv_mtrap (current_cpu);
13590
13591 return vpc;
13592#undef FLD
13593}
13594
13595/* andcr: andcr$pack $CRi,$CRj,$CRk */
13596
13597static SEM_PC
13598SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13599{
13600#define FLD(f) abuf->fields.sfmt_andcr.f
13601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13602 int UNUSED written = 0;
13603 IADDR UNUSED pc = abuf->addr;
13604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13605
13606 {
13607 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13608 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13609 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13610 }
13611
13612 return vpc;
13613#undef FLD
13614}
13615
13616/* orcr: orcr$pack $CRi,$CRj,$CRk */
13617
13618static SEM_PC
13619SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13620{
13621#define FLD(f) abuf->fields.sfmt_andcr.f
13622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13623 int UNUSED written = 0;
13624 IADDR UNUSED pc = abuf->addr;
13625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13626
13627 {
13628 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13629 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13630 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13631 }
13632
13633 return vpc;
13634#undef FLD
13635}
13636
13637/* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13638
13639static SEM_PC
13640SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13641{
13642#define FLD(f) abuf->fields.sfmt_andcr.f
13643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13644 int UNUSED written = 0;
13645 IADDR UNUSED pc = abuf->addr;
13646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13647
13648 {
13649 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13650 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13651 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13652 }
13653
13654 return vpc;
13655#undef FLD
13656}
13657
13658/* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13659
13660static SEM_PC
13661SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13662{
13663#define FLD(f) abuf->fields.sfmt_andcr.f
13664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13665 int UNUSED written = 0;
13666 IADDR UNUSED pc = abuf->addr;
13667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13668
13669 {
13670 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13671 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13672 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13673 }
13674
13675 return vpc;
13676#undef FLD
13677}
13678
13679/* norcr: norcr$pack $CRi,$CRj,$CRk */
13680
13681static SEM_PC
13682SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13683{
13684#define FLD(f) abuf->fields.sfmt_andcr.f
13685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13686 int UNUSED written = 0;
13687 IADDR UNUSED pc = abuf->addr;
13688 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13689
13690 {
13691 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13692 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13693 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13694 }
13695
13696 return vpc;
13697#undef FLD
13698}
13699
13700/* andncr: andncr$pack $CRi,$CRj,$CRk */
13701
13702static SEM_PC
13703SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13704{
13705#define FLD(f) abuf->fields.sfmt_andcr.f
13706 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13707 int UNUSED written = 0;
13708 IADDR UNUSED pc = abuf->addr;
13709 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13710
13711 {
13712 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13713 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13714 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13715 }
13716
13717 return vpc;
13718#undef FLD
13719}
13720
13721/* orncr: orncr$pack $CRi,$CRj,$CRk */
13722
13723static SEM_PC
13724SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13725{
13726#define FLD(f) abuf->fields.sfmt_andcr.f
13727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13728 int UNUSED written = 0;
13729 IADDR UNUSED pc = abuf->addr;
13730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13731
13732 {
13733 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13734 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13735 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13736 }
13737
13738 return vpc;
13739#undef FLD
13740}
13741
13742/* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13743
13744static SEM_PC
13745SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13746{
13747#define FLD(f) abuf->fields.sfmt_andcr.f
13748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13749 int UNUSED written = 0;
13750 IADDR UNUSED pc = abuf->addr;
13751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13752
13753 {
13754 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13755 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13756 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13757 }
13758
13759 return vpc;
13760#undef FLD
13761}
13762
13763/* norncr: norncr$pack $CRi,$CRj,$CRk */
13764
13765static SEM_PC
13766SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13767{
13768#define FLD(f) abuf->fields.sfmt_andcr.f
13769 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13770 int UNUSED written = 0;
13771 IADDR UNUSED pc = abuf->addr;
13772 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13773
13774 {
13775 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13776 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13777 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13778 }
13779
13780 return vpc;
13781#undef FLD
13782}
13783
13784/* notcr: notcr$pack $CRj,$CRk */
13785
13786static SEM_PC
13787SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13788{
13789#define FLD(f) abuf->fields.sfmt_andcr.f
13790 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13791 int UNUSED written = 0;
13792 IADDR UNUSED pc = abuf->addr;
13793 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13794
13795 {
13796 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13797 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13798 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13799 }
13800
13801 return vpc;
13802#undef FLD
13803}
13804
13805/* ckra: ckra$pack $CRj_int */
13806
13807static SEM_PC
13808SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13809{
13810#define FLD(f) abuf->fields.sfmt_cckeq.f
13811 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13812 int UNUSED written = 0;
13813 IADDR UNUSED pc = abuf->addr;
13814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13815
13816 {
13817 UQI opval = 3;
13818 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13819 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13820 }
13821
13822 return vpc;
13823#undef FLD
13824}
13825
13826/* ckno: ckno$pack $CRj_int */
13827
13828static SEM_PC
13829SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13830{
13831#define FLD(f) abuf->fields.sfmt_cckeq.f
13832 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13833 int UNUSED written = 0;
13834 IADDR UNUSED pc = abuf->addr;
13835 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13836
13837 {
13838 UQI opval = 2;
13839 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13840 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13841 }
13842
13843 return vpc;
13844#undef FLD
13845}
13846
13847/* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13848
13849static SEM_PC
13850SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13851{
13852#define FLD(f) abuf->fields.sfmt_cckeq.f
13853 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13854 int UNUSED written = 0;
13855 IADDR UNUSED pc = abuf->addr;
13856 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13857
13858if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13859 {
13860 UQI opval = 3;
13861 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13862 written |= (1 << 1);
13863 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13864 }
13865} else {
13866 {
13867 UQI opval = 2;
13868 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13869 written |= (1 << 1);
13870 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13871 }
13872}
13873
13874 abuf->written = written;
13875 return vpc;
13876#undef FLD
13877}
13878
13879/* ckne: ckne$pack $ICCi_3,$CRj_int */
13880
13881static SEM_PC
13882SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13883{
13884#define FLD(f) abuf->fields.sfmt_cckeq.f
13885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13886 int UNUSED written = 0;
13887 IADDR UNUSED pc = abuf->addr;
13888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13889
13890if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13891 {
13892 UQI opval = 3;
13893 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13894 written |= (1 << 1);
13895 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13896 }
13897} else {
13898 {
13899 UQI opval = 2;
13900 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13901 written |= (1 << 1);
13902 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13903 }
13904}
13905
13906 abuf->written = written;
13907 return vpc;
13908#undef FLD
13909}
13910
13911/* ckle: ckle$pack $ICCi_3,$CRj_int */
13912
13913static SEM_PC
13914SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13915{
13916#define FLD(f) abuf->fields.sfmt_cckeq.f
13917 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13918 int UNUSED written = 0;
13919 IADDR UNUSED pc = abuf->addr;
13920 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13921
13922if (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))))) {
13923 {
13924 UQI opval = 3;
13925 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13926 written |= (1 << 1);
13927 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13928 }
13929} else {
13930 {
13931 UQI opval = 2;
13932 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13933 written |= (1 << 1);
13934 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13935 }
13936}
13937
13938 abuf->written = written;
13939 return vpc;
13940#undef FLD
13941}
13942
13943/* ckgt: ckgt$pack $ICCi_3,$CRj_int */
13944
13945static SEM_PC
13946SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13947{
13948#define FLD(f) abuf->fields.sfmt_cckeq.f
13949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13950 int UNUSED written = 0;
13951 IADDR UNUSED pc = abuf->addr;
13952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13953
13954if (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)))))) {
13955 {
13956 UQI opval = 3;
13957 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13958 written |= (1 << 1);
13959 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13960 }
13961} else {
13962 {
13963 UQI opval = 2;
13964 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13965 written |= (1 << 1);
13966 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13967 }
13968}
13969
13970 abuf->written = written;
13971 return vpc;
13972#undef FLD
13973}
13974
13975/* cklt: cklt$pack $ICCi_3,$CRj_int */
13976
13977static SEM_PC
13978SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13979{
13980#define FLD(f) abuf->fields.sfmt_cckeq.f
13981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13982 int UNUSED written = 0;
13983 IADDR UNUSED pc = abuf->addr;
13984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13985
13986if (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)))) {
13987 {
13988 UQI opval = 3;
13989 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13990 written |= (1 << 1);
13991 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13992 }
13993} else {
13994 {
13995 UQI opval = 2;
13996 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13997 written |= (1 << 1);
13998 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13999 }
14000}
14001
14002 abuf->written = written;
14003 return vpc;
14004#undef FLD
14005}
14006
14007/* ckge: ckge$pack $ICCi_3,$CRj_int */
14008
14009static SEM_PC
14010SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14011{
14012#define FLD(f) abuf->fields.sfmt_cckeq.f
14013 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14014 int UNUSED written = 0;
14015 IADDR UNUSED pc = abuf->addr;
14016 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14017
14018if (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))))) {
14019 {
14020 UQI opval = 3;
14021 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14022 written |= (1 << 1);
14023 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14024 }
14025} else {
14026 {
14027 UQI opval = 2;
14028 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14029 written |= (1 << 1);
14030 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14031 }
14032}
14033
14034 abuf->written = written;
14035 return vpc;
14036#undef FLD
14037}
14038
14039/* ckls: ckls$pack $ICCi_3,$CRj_int */
14040
14041static SEM_PC
14042SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14043{
14044#define FLD(f) abuf->fields.sfmt_cckeq.f
14045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14046 int UNUSED written = 0;
14047 IADDR UNUSED pc = abuf->addr;
14048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14049
14050if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14051 {
14052 UQI opval = 3;
14053 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14054 written |= (1 << 1);
14055 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14056 }
14057} else {
14058 {
14059 UQI opval = 2;
14060 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14061 written |= (1 << 1);
14062 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14063 }
14064}
14065
14066 abuf->written = written;
14067 return vpc;
14068#undef FLD
14069}
14070
14071/* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14072
14073static SEM_PC
14074SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14075{
14076#define FLD(f) abuf->fields.sfmt_cckeq.f
14077 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14078 int UNUSED written = 0;
14079 IADDR UNUSED pc = abuf->addr;
14080 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14081
14082if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
14083 {
14084 UQI opval = 3;
14085 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14086 written |= (1 << 1);
14087 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14088 }
14089} else {
14090 {
14091 UQI opval = 2;
14092 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14093 written |= (1 << 1);
14094 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14095 }
14096}
14097
14098 abuf->written = written;
14099 return vpc;
14100#undef FLD
14101}
14102
14103/* ckc: ckc$pack $ICCi_3,$CRj_int */
14104
14105static SEM_PC
14106SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14107{
14108#define FLD(f) abuf->fields.sfmt_cckeq.f
14109 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14110 int UNUSED written = 0;
14111 IADDR UNUSED pc = abuf->addr;
14112 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14113
14114if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14115 {
14116 UQI opval = 3;
14117 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14118 written |= (1 << 1);
14119 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14120 }
14121} else {
14122 {
14123 UQI opval = 2;
14124 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14125 written |= (1 << 1);
14126 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14127 }
14128}
14129
14130 abuf->written = written;
14131 return vpc;
14132#undef FLD
14133}
14134
14135/* cknc: cknc$pack $ICCi_3,$CRj_int */
14136
14137static SEM_PC
14138SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14139{
14140#define FLD(f) abuf->fields.sfmt_cckeq.f
14141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14142 int UNUSED written = 0;
14143 IADDR UNUSED pc = abuf->addr;
14144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14145
14146if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14147 {
14148 UQI opval = 3;
14149 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14150 written |= (1 << 1);
14151 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14152 }
14153} else {
14154 {
14155 UQI opval = 2;
14156 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14157 written |= (1 << 1);
14158 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14159 }
14160}
14161
14162 abuf->written = written;
14163 return vpc;
14164#undef FLD
14165}
14166
14167/* ckn: ckn$pack $ICCi_3,$CRj_int */
14168
14169static SEM_PC
14170SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14171{
14172#define FLD(f) abuf->fields.sfmt_cckeq.f
14173 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14174 int UNUSED written = 0;
14175 IADDR UNUSED pc = abuf->addr;
14176 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14177
14178if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14179 {
14180 UQI opval = 3;
14181 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14182 written |= (1 << 1);
14183 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14184 }
14185} else {
14186 {
14187 UQI opval = 2;
14188 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14189 written |= (1 << 1);
14190 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14191 }
14192}
14193
14194 abuf->written = written;
14195 return vpc;
14196#undef FLD
14197}
14198
14199/* ckp: ckp$pack $ICCi_3,$CRj_int */
14200
14201static SEM_PC
14202SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14203{
14204#define FLD(f) abuf->fields.sfmt_cckeq.f
14205 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14206 int UNUSED written = 0;
14207 IADDR UNUSED pc = abuf->addr;
14208 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14209
14210if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14211 {
14212 UQI opval = 3;
14213 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14214 written |= (1 << 1);
14215 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14216 }
14217} else {
14218 {
14219 UQI opval = 2;
14220 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14221 written |= (1 << 1);
14222 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14223 }
14224}
14225
14226 abuf->written = written;
14227 return vpc;
14228#undef FLD
14229}
14230
14231/* ckv: ckv$pack $ICCi_3,$CRj_int */
14232
14233static SEM_PC
14234SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14235{
14236#define FLD(f) abuf->fields.sfmt_cckeq.f
14237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14238 int UNUSED written = 0;
14239 IADDR UNUSED pc = abuf->addr;
14240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14241
14242if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14243 {
14244 UQI opval = 3;
14245 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14246 written |= (1 << 1);
14247 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14248 }
14249} else {
14250 {
14251 UQI opval = 2;
14252 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14253 written |= (1 << 1);
14254 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14255 }
14256}
14257
14258 abuf->written = written;
14259 return vpc;
14260#undef FLD
14261}
14262
14263/* cknv: cknv$pack $ICCi_3,$CRj_int */
14264
14265static SEM_PC
14266SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14267{
14268#define FLD(f) abuf->fields.sfmt_cckeq.f
14269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14270 int UNUSED written = 0;
14271 IADDR UNUSED pc = abuf->addr;
14272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14273
14274if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14275 {
14276 UQI opval = 3;
14277 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14278 written |= (1 << 1);
14279 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14280 }
14281} else {
14282 {
14283 UQI opval = 2;
14284 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14285 written |= (1 << 1);
14286 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14287 }
14288}
14289
14290 abuf->written = written;
14291 return vpc;
14292#undef FLD
14293}
14294
14295/* fckra: fckra$pack $CRj_float */
14296
14297static SEM_PC
14298SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14299{
14300#define FLD(f) abuf->fields.sfmt_cfckne.f
14301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14302 int UNUSED written = 0;
14303 IADDR UNUSED pc = abuf->addr;
14304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14305
14306 {
14307 UQI opval = 3;
14308 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14309 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14310 }
14311
14312 return vpc;
14313#undef FLD
14314}
14315
14316/* fckno: fckno$pack $CRj_float */
14317
14318static SEM_PC
14319SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14320{
14321#define FLD(f) abuf->fields.sfmt_cfckne.f
14322 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14323 int UNUSED written = 0;
14324 IADDR UNUSED pc = abuf->addr;
14325 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14326
14327 {
14328 UQI opval = 2;
14329 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14330 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14331 }
14332
14333 return vpc;
14334#undef FLD
14335}
14336
14337/* fckne: fckne$pack $FCCi_3,$CRj_float */
14338
14339static SEM_PC
14340SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14341{
14342#define FLD(f) abuf->fields.sfmt_cfckne.f
14343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14344 int UNUSED written = 0;
14345 IADDR UNUSED pc = abuf->addr;
14346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14347
14348if (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))))) {
14349 {
14350 UQI opval = 3;
14351 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14352 written |= (1 << 1);
14353 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14354 }
14355} else {
14356 {
14357 UQI opval = 2;
14358 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14359 written |= (1 << 1);
14360 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14361 }
14362}
14363
14364 abuf->written = written;
14365 return vpc;
14366#undef FLD
14367}
14368
14369/* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14370
14371static SEM_PC
14372SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14373{
14374#define FLD(f) abuf->fields.sfmt_cfckne.f
14375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14376 int UNUSED written = 0;
14377 IADDR UNUSED pc = abuf->addr;
14378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14379
14380if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14381 {
14382 UQI opval = 3;
14383 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14384 written |= (1 << 1);
14385 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14386 }
14387} else {
14388 {
14389 UQI opval = 2;
14390 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14391 written |= (1 << 1);
14392 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14393 }
14394}
14395
14396 abuf->written = written;
14397 return vpc;
14398#undef FLD
14399}
14400
14401/* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14402
14403static SEM_PC
14404SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14405{
14406#define FLD(f) abuf->fields.sfmt_cfckne.f
14407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14408 int UNUSED written = 0;
14409 IADDR UNUSED pc = abuf->addr;
14410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14411
14412if (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)))) {
14413 {
14414 UQI opval = 3;
14415 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14416 written |= (1 << 1);
14417 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14418 }
14419} else {
14420 {
14421 UQI opval = 2;
14422 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14423 written |= (1 << 1);
14424 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14425 }
14426}
14427
14428 abuf->written = written;
14429 return vpc;
14430#undef FLD
14431}
14432
14433/* fckue: fckue$pack $FCCi_3,$CRj_float */
14434
14435static SEM_PC
14436SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14437{
14438#define FLD(f) abuf->fields.sfmt_cfckne.f
14439 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14440 int UNUSED written = 0;
14441 IADDR UNUSED pc = abuf->addr;
14442 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14443
14444if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14445 {
14446 UQI opval = 3;
14447 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14448 written |= (1 << 1);
14449 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14450 }
14451} else {
14452 {
14453 UQI opval = 2;
14454 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14455 written |= (1 << 1);
14456 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14457 }
14458}
14459
14460 abuf->written = written;
14461 return vpc;
14462#undef FLD
14463}
14464
14465/* fckul: fckul$pack $FCCi_3,$CRj_float */
14466
14467static SEM_PC
14468SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14469{
14470#define FLD(f) abuf->fields.sfmt_cfckne.f
14471 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14472 int UNUSED written = 0;
14473 IADDR UNUSED pc = abuf->addr;
14474 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14475
14476if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14477 {
14478 UQI opval = 3;
14479 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14480 written |= (1 << 1);
14481 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14482 }
14483} else {
14484 {
14485 UQI opval = 2;
14486 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14487 written |= (1 << 1);
14488 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14489 }
14490}
14491
14492 abuf->written = written;
14493 return vpc;
14494#undef FLD
14495}
14496
14497/* fckge: fckge$pack $FCCi_3,$CRj_float */
14498
14499static SEM_PC
14500SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14501{
14502#define FLD(f) abuf->fields.sfmt_cfckne.f
14503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14504 int UNUSED written = 0;
14505 IADDR UNUSED pc = abuf->addr;
14506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14507
14508if (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)))) {
14509 {
14510 UQI opval = 3;
14511 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14512 written |= (1 << 1);
14513 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14514 }
14515} else {
14516 {
14517 UQI opval = 2;
14518 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14519 written |= (1 << 1);
14520 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14521 }
14522}
14523
14524 abuf->written = written;
14525 return vpc;
14526#undef FLD
14527}
14528
14529/* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14530
14531static SEM_PC
14532SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14533{
14534#define FLD(f) abuf->fields.sfmt_cfckne.f
14535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14536 int UNUSED written = 0;
14537 IADDR UNUSED pc = abuf->addr;
14538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14539
14540if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14541 {
14542 UQI opval = 3;
14543 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14544 written |= (1 << 1);
14545 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14546 }
14547} else {
14548 {
14549 UQI opval = 2;
14550 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14551 written |= (1 << 1);
14552 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14553 }
14554}
14555
14556 abuf->written = written;
14557 return vpc;
14558#undef FLD
14559}
14560
14561/* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14562
14563static SEM_PC
14564SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14565{
14566#define FLD(f) abuf->fields.sfmt_cfckne.f
14567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14568 int UNUSED written = 0;
14569 IADDR UNUSED pc = abuf->addr;
14570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14571
14572if (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))))) {
14573 {
14574 UQI opval = 3;
14575 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14576 written |= (1 << 1);
14577 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14578 }
14579} else {
14580 {
14581 UQI opval = 2;
14582 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14583 written |= (1 << 1);
14584 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14585 }
14586}
14587
14588 abuf->written = written;
14589 return vpc;
14590#undef FLD
14591}
14592
14593/* fckug: fckug$pack $FCCi_3,$CRj_float */
14594
14595static SEM_PC
14596SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14597{
14598#define FLD(f) abuf->fields.sfmt_cfckne.f
14599 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14600 int UNUSED written = 0;
14601 IADDR UNUSED pc = abuf->addr;
14602 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14603
14604if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14605 {
14606 UQI opval = 3;
14607 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14608 written |= (1 << 1);
14609 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14610 }
14611} else {
14612 {
14613 UQI opval = 2;
14614 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14615 written |= (1 << 1);
14616 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14617 }
14618}
14619
14620 abuf->written = written;
14621 return vpc;
14622#undef FLD
14623}
14624
14625/* fckle: fckle$pack $FCCi_3,$CRj_float */
14626
14627static SEM_PC
14628SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14629{
14630#define FLD(f) abuf->fields.sfmt_cfckne.f
14631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14632 int UNUSED written = 0;
14633 IADDR UNUSED pc = abuf->addr;
14634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14635
14636if (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)))) {
14637 {
14638 UQI opval = 3;
14639 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14640 written |= (1 << 1);
14641 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14642 }
14643} else {
14644 {
14645 UQI opval = 2;
14646 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14647 written |= (1 << 1);
14648 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14649 }
14650}
14651
14652 abuf->written = written;
14653 return vpc;
14654#undef FLD
14655}
14656
14657/* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14658
14659static SEM_PC
14660SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14661{
14662#define FLD(f) abuf->fields.sfmt_cfckne.f
14663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14664 int UNUSED written = 0;
14665 IADDR UNUSED pc = abuf->addr;
14666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14667
14668if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14669 {
14670 UQI opval = 3;
14671 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14672 written |= (1 << 1);
14673 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14674 }
14675} else {
14676 {
14677 UQI opval = 2;
14678 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14679 written |= (1 << 1);
14680 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14681 }
14682}
14683
14684 abuf->written = written;
14685 return vpc;
14686#undef FLD
14687}
14688
14689/* fckule: fckule$pack $FCCi_3,$CRj_float */
14690
14691static SEM_PC
14692SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14693{
14694#define FLD(f) abuf->fields.sfmt_cfckne.f
14695 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14696 int UNUSED written = 0;
14697 IADDR UNUSED pc = abuf->addr;
14698 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14699
14700if (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))))) {
14701 {
14702 UQI opval = 3;
14703 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14704 written |= (1 << 1);
14705 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14706 }
14707} else {
14708 {
14709 UQI opval = 2;
14710 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14711 written |= (1 << 1);
14712 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14713 }
14714}
14715
14716 abuf->written = written;
14717 return vpc;
14718#undef FLD
14719}
14720
14721/* fcku: fcku$pack $FCCi_3,$CRj_float */
14722
14723static SEM_PC
14724SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14725{
14726#define FLD(f) abuf->fields.sfmt_cfckne.f
14727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14728 int UNUSED written = 0;
14729 IADDR UNUSED pc = abuf->addr;
14730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14731
14732if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14733 {
14734 UQI opval = 3;
14735 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14736 written |= (1 << 1);
14737 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14738 }
14739} else {
14740 {
14741 UQI opval = 2;
14742 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14743 written |= (1 << 1);
14744 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14745 }
14746}
14747
14748 abuf->written = written;
14749 return vpc;
14750#undef FLD
14751}
14752
14753/* fcko: fcko$pack $FCCi_3,$CRj_float */
14754
14755static SEM_PC
14756SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14757{
14758#define FLD(f) abuf->fields.sfmt_cfckne.f
14759 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14760 int UNUSED written = 0;
14761 IADDR UNUSED pc = abuf->addr;
14762 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14763
14764if (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))))) {
14765 {
14766 UQI opval = 3;
14767 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14768 written |= (1 << 1);
14769 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14770 }
14771} else {
14772 {
14773 UQI opval = 2;
14774 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14775 written |= (1 << 1);
14776 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14777 }
14778}
14779
14780 abuf->written = written;
14781 return vpc;
14782#undef FLD
14783}
14784
14785/* cckra: cckra$pack $CRj_int,$CCi,$cond */
14786
14787static SEM_PC
14788SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14789{
14790#define FLD(f) abuf->fields.sfmt_cckeq.f
14791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14792 int UNUSED written = 0;
14793 IADDR UNUSED pc = abuf->addr;
14794 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14795
14796if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14797 {
14798 UQI opval = 3;
14799 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14800 written |= (1 << 2);
14801 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14802 }
14803} else {
14804 {
14805 UQI opval = 0;
14806 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14807 written |= (1 << 2);
14808 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14809 }
14810}
14811
14812 abuf->written = written;
14813 return vpc;
14814#undef FLD
14815}
14816
14817/* cckno: cckno$pack $CRj_int,$CCi,$cond */
14818
14819static SEM_PC
14820SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14821{
14822#define FLD(f) abuf->fields.sfmt_cckeq.f
14823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14824 int UNUSED written = 0;
14825 IADDR UNUSED pc = abuf->addr;
14826 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14827
14828if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14829 {
14830 UQI opval = 2;
14831 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14832 written |= (1 << 2);
14833 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14834 }
14835} else {
14836 {
14837 UQI opval = 0;
14838 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14839 written |= (1 << 2);
14840 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14841 }
14842}
14843
14844 abuf->written = written;
14845 return vpc;
14846#undef FLD
14847}
14848
14849/* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14850
14851static SEM_PC
14852SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14853{
14854#define FLD(f) abuf->fields.sfmt_cckeq.f
14855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14856 int UNUSED written = 0;
14857 IADDR UNUSED pc = abuf->addr;
14858 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14859
14860if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14861if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14862 {
14863 UQI opval = 3;
14864 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14865 written |= (1 << 3);
14866 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14867 }
14868} else {
14869 {
14870 UQI opval = 2;
14871 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14872 written |= (1 << 3);
14873 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14874 }
14875}
14876} else {
14877 {
14878 UQI opval = 0;
14879 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14880 written |= (1 << 3);
14881 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14882 }
14883}
14884
14885 abuf->written = written;
14886 return vpc;
14887#undef FLD
14888}
14889
14890/* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14891
14892static SEM_PC
14893SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14894{
14895#define FLD(f) abuf->fields.sfmt_cckeq.f
14896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14897 int UNUSED written = 0;
14898 IADDR UNUSED pc = abuf->addr;
14899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14900
14901if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14902if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14903 {
14904 UQI opval = 3;
14905 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14906 written |= (1 << 3);
14907 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14908 }
14909} else {
14910 {
14911 UQI opval = 2;
14912 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14913 written |= (1 << 3);
14914 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14915 }
14916}
14917} else {
14918 {
14919 UQI opval = 0;
14920 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14921 written |= (1 << 3);
14922 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14923 }
14924}
14925
14926 abuf->written = written;
14927 return vpc;
14928#undef FLD
14929}
14930
14931/* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
14932
14933static SEM_PC
14934SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14935{
14936#define FLD(f) abuf->fields.sfmt_cckeq.f
14937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14938 int UNUSED written = 0;
14939 IADDR UNUSED pc = abuf->addr;
14940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14941
14942if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14943if (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))))) {
14944 {
14945 UQI opval = 3;
14946 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14947 written |= (1 << 3);
14948 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14949 }
14950} else {
14951 {
14952 UQI opval = 2;
14953 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14954 written |= (1 << 3);
14955 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14956 }
14957}
14958} else {
14959 {
14960 UQI opval = 0;
14961 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14962 written |= (1 << 3);
14963 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14964 }
14965}
14966
14967 abuf->written = written;
14968 return vpc;
14969#undef FLD
14970}
14971
14972/* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
14973
14974static SEM_PC
14975SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14976{
14977#define FLD(f) abuf->fields.sfmt_cckeq.f
14978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14979 int UNUSED written = 0;
14980 IADDR UNUSED pc = abuf->addr;
14981 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14982
14983if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14984if (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)))))) {
14985 {
14986 UQI opval = 3;
14987 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14988 written |= (1 << 3);
14989 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14990 }
14991} else {
14992 {
14993 UQI opval = 2;
14994 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14995 written |= (1 << 3);
14996 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14997 }
14998}
14999} else {
15000 {
15001 UQI opval = 0;
15002 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15003 written |= (1 << 3);
15004 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15005 }
15006}
15007
15008 abuf->written = written;
15009 return vpc;
15010#undef FLD
15011}
15012
15013/* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15014
15015static SEM_PC
15016SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15017{
15018#define FLD(f) abuf->fields.sfmt_cckeq.f
15019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15020 int UNUSED written = 0;
15021 IADDR UNUSED pc = abuf->addr;
15022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15023
15024if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15025if (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)))) {
15026 {
15027 UQI opval = 3;
15028 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15029 written |= (1 << 3);
15030 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15031 }
15032} else {
15033 {
15034 UQI opval = 2;
15035 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15036 written |= (1 << 3);
15037 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15038 }
15039}
15040} else {
15041 {
15042 UQI opval = 0;
15043 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15044 written |= (1 << 3);
15045 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15046 }
15047}
15048
15049 abuf->written = written;
15050 return vpc;
15051#undef FLD
15052}
15053
15054/* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15055
15056static SEM_PC
15057SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15058{
15059#define FLD(f) abuf->fields.sfmt_cckeq.f
15060 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15061 int UNUSED written = 0;
15062 IADDR UNUSED pc = abuf->addr;
15063 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15064
15065if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15066if (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))))) {
15067 {
15068 UQI opval = 3;
15069 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15070 written |= (1 << 3);
15071 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15072 }
15073} else {
15074 {
15075 UQI opval = 2;
15076 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15077 written |= (1 << 3);
15078 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15079 }
15080}
15081} else {
15082 {
15083 UQI opval = 0;
15084 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15085 written |= (1 << 3);
15086 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15087 }
15088}
15089
15090 abuf->written = written;
15091 return vpc;
15092#undef FLD
15093}
15094
15095/* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15096
15097static SEM_PC
15098SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15099{
15100#define FLD(f) abuf->fields.sfmt_cckeq.f
15101 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15102 int UNUSED written = 0;
15103 IADDR UNUSED pc = abuf->addr;
15104 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15105
15106if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15107if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15108 {
15109 UQI opval = 3;
15110 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15111 written |= (1 << 3);
15112 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15113 }
15114} else {
15115 {
15116 UQI opval = 2;
15117 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15118 written |= (1 << 3);
15119 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15120 }
15121}
15122} else {
15123 {
15124 UQI opval = 0;
15125 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15126 written |= (1 << 3);
15127 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15128 }
15129}
15130
15131 abuf->written = written;
15132 return vpc;
15133#undef FLD
15134}
15135
15136/* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15137
15138static SEM_PC
15139SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15140{
15141#define FLD(f) abuf->fields.sfmt_cckeq.f
15142 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15143 int UNUSED written = 0;
15144 IADDR UNUSED pc = abuf->addr;
15145 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15146
15147if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15148if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
15149 {
15150 UQI opval = 3;
15151 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15152 written |= (1 << 3);
15153 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15154 }
15155} else {
15156 {
15157 UQI opval = 2;
15158 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15159 written |= (1 << 3);
15160 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15161 }
15162}
15163} else {
15164 {
15165 UQI opval = 0;
15166 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15167 written |= (1 << 3);
15168 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15169 }
15170}
15171
15172 abuf->written = written;
15173 return vpc;
15174#undef FLD
15175}
15176
15177/* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15178
15179static SEM_PC
15180SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15181{
15182#define FLD(f) abuf->fields.sfmt_cckeq.f
15183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15184 int UNUSED written = 0;
15185 IADDR UNUSED pc = abuf->addr;
15186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15187
15188if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15189if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15190 {
15191 UQI opval = 3;
15192 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15193 written |= (1 << 3);
15194 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15195 }
15196} else {
15197 {
15198 UQI opval = 2;
15199 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15200 written |= (1 << 3);
15201 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15202 }
15203}
15204} else {
15205 {
15206 UQI opval = 0;
15207 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15208 written |= (1 << 3);
15209 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15210 }
15211}
15212
15213 abuf->written = written;
15214 return vpc;
15215#undef FLD
15216}
15217
15218/* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15219
15220static SEM_PC
15221SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15222{
15223#define FLD(f) abuf->fields.sfmt_cckeq.f
15224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15225 int UNUSED written = 0;
15226 IADDR UNUSED pc = abuf->addr;
15227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15228
15229if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15230if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15231 {
15232 UQI opval = 3;
15233 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15234 written |= (1 << 3);
15235 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15236 }
15237} else {
15238 {
15239 UQI opval = 2;
15240 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15241 written |= (1 << 3);
15242 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15243 }
15244}
15245} else {
15246 {
15247 UQI opval = 0;
15248 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15249 written |= (1 << 3);
15250 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15251 }
15252}
15253
15254 abuf->written = written;
15255 return vpc;
15256#undef FLD
15257}
15258
15259/* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15260
15261static SEM_PC
15262SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15263{
15264#define FLD(f) abuf->fields.sfmt_cckeq.f
15265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15266 int UNUSED written = 0;
15267 IADDR UNUSED pc = abuf->addr;
15268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15269
15270if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15271if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15272 {
15273 UQI opval = 3;
15274 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15275 written |= (1 << 3);
15276 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15277 }
15278} else {
15279 {
15280 UQI opval = 2;
15281 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15282 written |= (1 << 3);
15283 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15284 }
15285}
15286} else {
15287 {
15288 UQI opval = 0;
15289 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15290 written |= (1 << 3);
15291 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15292 }
15293}
15294
15295 abuf->written = written;
15296 return vpc;
15297#undef FLD
15298}
15299
15300/* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15301
15302static SEM_PC
15303SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15304{
15305#define FLD(f) abuf->fields.sfmt_cckeq.f
15306 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15307 int UNUSED written = 0;
15308 IADDR UNUSED pc = abuf->addr;
15309 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15310
15311if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15312if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15313 {
15314 UQI opval = 3;
15315 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15316 written |= (1 << 3);
15317 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15318 }
15319} else {
15320 {
15321 UQI opval = 2;
15322 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15323 written |= (1 << 3);
15324 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15325 }
15326}
15327} else {
15328 {
15329 UQI opval = 0;
15330 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15331 written |= (1 << 3);
15332 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15333 }
15334}
15335
15336 abuf->written = written;
15337 return vpc;
15338#undef FLD
15339}
15340
15341/* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15342
15343static SEM_PC
15344SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15345{
15346#define FLD(f) abuf->fields.sfmt_cckeq.f
15347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15348 int UNUSED written = 0;
15349 IADDR UNUSED pc = abuf->addr;
15350 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15351
15352if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15353if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15354 {
15355 UQI opval = 3;
15356 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15357 written |= (1 << 3);
15358 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15359 }
15360} else {
15361 {
15362 UQI opval = 2;
15363 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15364 written |= (1 << 3);
15365 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15366 }
15367}
15368} else {
15369 {
15370 UQI opval = 0;
15371 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15372 written |= (1 << 3);
15373 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15374 }
15375}
15376
15377 abuf->written = written;
15378 return vpc;
15379#undef FLD
15380}
15381
15382/* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15383
15384static SEM_PC
15385SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15386{
15387#define FLD(f) abuf->fields.sfmt_cckeq.f
15388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15389 int UNUSED written = 0;
15390 IADDR UNUSED pc = abuf->addr;
15391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15392
15393if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15394if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15395 {
15396 UQI opval = 3;
15397 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15398 written |= (1 << 3);
15399 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15400 }
15401} else {
15402 {
15403 UQI opval = 2;
15404 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15405 written |= (1 << 3);
15406 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15407 }
15408}
15409} else {
15410 {
15411 UQI opval = 0;
15412 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15413 written |= (1 << 3);
15414 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15415 }
15416}
15417
15418 abuf->written = written;
15419 return vpc;
15420#undef FLD
15421}
15422
15423/* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15424
15425static SEM_PC
15426SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15427{
15428#define FLD(f) abuf->fields.sfmt_cfckne.f
15429 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15430 int UNUSED written = 0;
15431 IADDR UNUSED pc = abuf->addr;
15432 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15433
15434if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15435 {
15436 UQI opval = 3;
15437 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15438 written |= (1 << 2);
15439 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15440 }
15441} else {
15442 {
15443 UQI opval = 0;
15444 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15445 written |= (1 << 2);
15446 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15447 }
15448}
15449
15450 abuf->written = written;
15451 return vpc;
15452#undef FLD
15453}
15454
15455/* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15456
15457static SEM_PC
15458SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15459{
15460#define FLD(f) abuf->fields.sfmt_cfckne.f
15461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15462 int UNUSED written = 0;
15463 IADDR UNUSED pc = abuf->addr;
15464 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15465
15466if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15467 {
15468 UQI opval = 2;
15469 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15470 written |= (1 << 2);
15471 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15472 }
15473} else {
15474 {
15475 UQI opval = 0;
15476 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15477 written |= (1 << 2);
15478 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15479 }
15480}
15481
15482 abuf->written = written;
15483 return vpc;
15484#undef FLD
15485}
15486
15487/* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15488
15489static SEM_PC
15490SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15491{
15492#define FLD(f) abuf->fields.sfmt_cfckne.f
15493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15494 int UNUSED written = 0;
15495 IADDR UNUSED pc = abuf->addr;
15496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15497
15498if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15499if (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))))) {
15500 {
15501 UQI opval = 3;
15502 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15503 written |= (1 << 3);
15504 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15505 }
15506} else {
15507 {
15508 UQI opval = 2;
15509 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15510 written |= (1 << 3);
15511 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15512 }
15513}
15514} else {
15515 {
15516 UQI opval = 0;
15517 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15518 written |= (1 << 3);
15519 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15520 }
15521}
15522
15523 abuf->written = written;
15524 return vpc;
15525#undef FLD
15526}
15527
15528/* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15529
15530static SEM_PC
15531SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15532{
15533#define FLD(f) abuf->fields.sfmt_cfckne.f
15534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15535 int UNUSED written = 0;
15536 IADDR UNUSED pc = abuf->addr;
15537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15538
15539if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15540if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15541 {
15542 UQI opval = 3;
15543 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15544 written |= (1 << 3);
15545 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15546 }
15547} else {
15548 {
15549 UQI opval = 2;
15550 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15551 written |= (1 << 3);
15552 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15553 }
15554}
15555} else {
15556 {
15557 UQI opval = 0;
15558 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15559 written |= (1 << 3);
15560 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15561 }
15562}
15563
15564 abuf->written = written;
15565 return vpc;
15566#undef FLD
15567}
15568
15569/* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15570
15571static SEM_PC
15572SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15573{
15574#define FLD(f) abuf->fields.sfmt_cfckne.f
15575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15576 int UNUSED written = 0;
15577 IADDR UNUSED pc = abuf->addr;
15578 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15579
15580if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15581if (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)))) {
15582 {
15583 UQI opval = 3;
15584 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15585 written |= (1 << 3);
15586 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15587 }
15588} else {
15589 {
15590 UQI opval = 2;
15591 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15592 written |= (1 << 3);
15593 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15594 }
15595}
15596} else {
15597 {
15598 UQI opval = 0;
15599 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15600 written |= (1 << 3);
15601 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15602 }
15603}
15604
15605 abuf->written = written;
15606 return vpc;
15607#undef FLD
15608}
15609
15610/* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15611
15612static SEM_PC
15613SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15614{
15615#define FLD(f) abuf->fields.sfmt_cfckne.f
15616 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15617 int UNUSED written = 0;
15618 IADDR UNUSED pc = abuf->addr;
15619 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15620
15621if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15622if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15623 {
15624 UQI opval = 3;
15625 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15626 written |= (1 << 3);
15627 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15628 }
15629} else {
15630 {
15631 UQI opval = 2;
15632 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15633 written |= (1 << 3);
15634 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15635 }
15636}
15637} else {
15638 {
15639 UQI opval = 0;
15640 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15641 written |= (1 << 3);
15642 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15643 }
15644}
15645
15646 abuf->written = written;
15647 return vpc;
15648#undef FLD
15649}
15650
15651/* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15652
15653static SEM_PC
15654SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15655{
15656#define FLD(f) abuf->fields.sfmt_cfckne.f
15657 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15658 int UNUSED written = 0;
15659 IADDR UNUSED pc = abuf->addr;
15660 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15661
15662if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15663if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15664 {
15665 UQI opval = 3;
15666 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15667 written |= (1 << 3);
15668 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15669 }
15670} else {
15671 {
15672 UQI opval = 2;
15673 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15674 written |= (1 << 3);
15675 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15676 }
15677}
15678} else {
15679 {
15680 UQI opval = 0;
15681 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15682 written |= (1 << 3);
15683 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15684 }
15685}
15686
15687 abuf->written = written;
15688 return vpc;
15689#undef FLD
15690}
15691
15692/* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15693
15694static SEM_PC
15695SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15696{
15697#define FLD(f) abuf->fields.sfmt_cfckne.f
15698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15699 int UNUSED written = 0;
15700 IADDR UNUSED pc = abuf->addr;
15701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15702
15703if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15704if (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)))) {
15705 {
15706 UQI opval = 3;
15707 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15708 written |= (1 << 3);
15709 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15710 }
15711} else {
15712 {
15713 UQI opval = 2;
15714 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15715 written |= (1 << 3);
15716 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15717 }
15718}
15719} else {
15720 {
15721 UQI opval = 0;
15722 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15723 written |= (1 << 3);
15724 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15725 }
15726}
15727
15728 abuf->written = written;
15729 return vpc;
15730#undef FLD
15731}
15732
15733/* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15734
15735static SEM_PC
15736SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15737{
15738#define FLD(f) abuf->fields.sfmt_cfckne.f
15739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15740 int UNUSED written = 0;
15741 IADDR UNUSED pc = abuf->addr;
15742 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15743
15744if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15745if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15746 {
15747 UQI opval = 3;
15748 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15749 written |= (1 << 3);
15750 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15751 }
15752} else {
15753 {
15754 UQI opval = 2;
15755 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15756 written |= (1 << 3);
15757 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15758 }
15759}
15760} else {
15761 {
15762 UQI opval = 0;
15763 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15764 written |= (1 << 3);
15765 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15766 }
15767}
15768
15769 abuf->written = written;
15770 return vpc;
15771#undef FLD
15772}
15773
15774/* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15775
15776static SEM_PC
15777SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15778{
15779#define FLD(f) abuf->fields.sfmt_cfckne.f
15780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15781 int UNUSED written = 0;
15782 IADDR UNUSED pc = abuf->addr;
15783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15784
15785if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15786if (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))))) {
15787 {
15788 UQI opval = 3;
15789 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15790 written |= (1 << 3);
15791 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15792 }
15793} else {
15794 {
15795 UQI opval = 2;
15796 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15797 written |= (1 << 3);
15798 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15799 }
15800}
15801} else {
15802 {
15803 UQI opval = 0;
15804 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15805 written |= (1 << 3);
15806 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15807 }
15808}
15809
15810 abuf->written = written;
15811 return vpc;
15812#undef FLD
15813}
15814
15815/* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15816
15817static SEM_PC
15818SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15819{
15820#define FLD(f) abuf->fields.sfmt_cfckne.f
15821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15822 int UNUSED written = 0;
15823 IADDR UNUSED pc = abuf->addr;
15824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15825
15826if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15827if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15828 {
15829 UQI opval = 3;
15830 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15831 written |= (1 << 3);
15832 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15833 }
15834} else {
15835 {
15836 UQI opval = 2;
15837 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15838 written |= (1 << 3);
15839 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15840 }
15841}
15842} else {
15843 {
15844 UQI opval = 0;
15845 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15846 written |= (1 << 3);
15847 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15848 }
15849}
15850
15851 abuf->written = written;
15852 return vpc;
15853#undef FLD
15854}
15855
15856/* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15857
15858static SEM_PC
15859SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15860{
15861#define FLD(f) abuf->fields.sfmt_cfckne.f
15862 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15863 int UNUSED written = 0;
15864 IADDR UNUSED pc = abuf->addr;
15865 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15866
15867if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15868if (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)))) {
15869 {
15870 UQI opval = 3;
15871 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15872 written |= (1 << 3);
15873 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15874 }
15875} else {
15876 {
15877 UQI opval = 2;
15878 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15879 written |= (1 << 3);
15880 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15881 }
15882}
15883} else {
15884 {
15885 UQI opval = 0;
15886 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15887 written |= (1 << 3);
15888 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15889 }
15890}
15891
15892 abuf->written = written;
15893 return vpc;
15894#undef FLD
15895}
15896
15897/* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15898
15899static SEM_PC
15900SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15901{
15902#define FLD(f) abuf->fields.sfmt_cfckne.f
15903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15904 int UNUSED written = 0;
15905 IADDR UNUSED pc = abuf->addr;
15906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15907
15908if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15909if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15910 {
15911 UQI opval = 3;
15912 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15913 written |= (1 << 3);
15914 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15915 }
15916} else {
15917 {
15918 UQI opval = 2;
15919 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15920 written |= (1 << 3);
15921 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15922 }
15923}
15924} else {
15925 {
15926 UQI opval = 0;
15927 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15928 written |= (1 << 3);
15929 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15930 }
15931}
15932
15933 abuf->written = written;
15934 return vpc;
15935#undef FLD
15936}
15937
15938/* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
15939
15940static SEM_PC
15941SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15942{
15943#define FLD(f) abuf->fields.sfmt_cfckne.f
15944 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15945 int UNUSED written = 0;
15946 IADDR UNUSED pc = abuf->addr;
15947 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15948
15949if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15950if (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))))) {
15951 {
15952 UQI opval = 3;
15953 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15954 written |= (1 << 3);
15955 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15956 }
15957} else {
15958 {
15959 UQI opval = 2;
15960 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15961 written |= (1 << 3);
15962 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15963 }
15964}
15965} else {
15966 {
15967 UQI opval = 0;
15968 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15969 written |= (1 << 3);
15970 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15971 }
15972}
15973
15974 abuf->written = written;
15975 return vpc;
15976#undef FLD
15977}
15978
15979/* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
15980
15981static SEM_PC
15982SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15983{
15984#define FLD(f) abuf->fields.sfmt_cfckne.f
15985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15986 int UNUSED written = 0;
15987 IADDR UNUSED pc = abuf->addr;
15988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15989
15990if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15991if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
15992 {
15993 UQI opval = 3;
15994 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15995 written |= (1 << 3);
15996 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15997 }
15998} else {
15999 {
16000 UQI opval = 2;
16001 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16002 written |= (1 << 3);
16003 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16004 }
16005}
16006} else {
16007 {
16008 UQI opval = 0;
16009 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16010 written |= (1 << 3);
16011 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16012 }
16013}
16014
16015 abuf->written = written;
16016 return vpc;
16017#undef FLD
16018}
16019
16020/* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16021
16022static SEM_PC
16023SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16024{
16025#define FLD(f) abuf->fields.sfmt_cfckne.f
16026 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16027 int UNUSED written = 0;
16028 IADDR UNUSED pc = abuf->addr;
16029 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16030
16031if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16032if (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))))) {
16033 {
16034 UQI opval = 3;
16035 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16036 written |= (1 << 3);
16037 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16038 }
16039} else {
16040 {
16041 UQI opval = 2;
16042 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16043 written |= (1 << 3);
16044 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16045 }
16046}
16047} else {
16048 {
16049 UQI opval = 0;
16050 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16051 written |= (1 << 3);
16052 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16053 }
16054}
16055
16056 abuf->written = written;
16057 return vpc;
16058#undef FLD
16059}
16060
16061/* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16062
16063static SEM_PC
16064SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16065{
16066#define FLD(f) abuf->fields.sfmt_cjmpl.f
16067 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16068 int UNUSED written = 0;
16069 IADDR UNUSED pc = abuf->addr;
16070 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16071
16072if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16073{
16074if (EQSI (FLD (f_LI), 1)) {
16075frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16076}
16077 {
16078 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16079 sim_queue_pc_write (current_cpu, opval);
16080 written |= (1 << 6);
16081 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16082 }
16083frvbf_model_branch (current_cpu, pc, 2);
16084}
16085}
16086
16087 abuf->written = written;
16088 return vpc;
16089#undef FLD
16090}
16091
16092/* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16093
16094static SEM_PC
16095SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16096{
16097#define FLD(f) abuf->fields.sfmt_cjmpl.f
16098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16099 int UNUSED written = 0;
16100 IADDR UNUSED pc = abuf->addr;
16101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16102
16103if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16104{
16105if (EQSI (FLD (f_LI), 1)) {
16106frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16107}
16108 {
16109 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16110 sim_queue_pc_write (current_cpu, opval);
16111 written |= (1 << 6);
16112 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16113 }
16114frvbf_model_branch (current_cpu, pc, 2);
16115}
16116}
16117
16118 abuf->written = written;
16119 return vpc;
16120#undef FLD
16121}
16122
16123/* ici: ici$pack @($GRi,$GRj) */
16124
16125static SEM_PC
16126SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16127{
16128#define FLD(f) abuf->fields.sfmt_icpl.f
16129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16130 int UNUSED written = 0;
16131 IADDR UNUSED pc = abuf->addr;
16132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16133
16134frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16135
16136 return vpc;
16137#undef FLD
16138}
16139
16140/* dci: dci$pack @($GRi,$GRj) */
16141
16142static SEM_PC
16143SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16144{
16145#define FLD(f) abuf->fields.sfmt_icpl.f
16146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16147 int UNUSED written = 0;
16148 IADDR UNUSED pc = abuf->addr;
16149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16150
16151frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16152
16153 return vpc;
16154#undef FLD
16155}
16156
16157/* icei: icei$pack @($GRi,$GRj),$ae */
16158
16159static SEM_PC
16160SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16161{
16162#define FLD(f) abuf->fields.sfmt_icei.f
16163 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16164 int UNUSED written = 0;
16165 IADDR UNUSED pc = abuf->addr;
16166 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16167
16168if (EQSI (FLD (f_ae), 0)) {
16169frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16170} else {
16171frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16172}
16173
16174 return vpc;
16175#undef FLD
16176}
16177
16178/* dcei: dcei$pack @($GRi,$GRj),$ae */
16179
16180static SEM_PC
16181SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16182{
16183#define FLD(f) abuf->fields.sfmt_icei.f
16184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16185 int UNUSED written = 0;
16186 IADDR UNUSED pc = abuf->addr;
16187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16188
16189if (EQSI (FLD (f_ae), 0)) {
16190frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16191} else {
16192frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16193}
16194
16195 return vpc;
16196#undef FLD
16197}
16198
16199/* dcf: dcf$pack @($GRi,$GRj) */
16200
16201static SEM_PC
16202SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16203{
16204#define FLD(f) abuf->fields.sfmt_icpl.f
16205 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16206 int UNUSED written = 0;
16207 IADDR UNUSED pc = abuf->addr;
16208 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16209
16210frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16211
16212 return vpc;
16213#undef FLD
16214}
16215
16216/* dcef: dcef$pack @($GRi,$GRj),$ae */
16217
16218static SEM_PC
16219SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16220{
16221#define FLD(f) abuf->fields.sfmt_icei.f
16222 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16223 int UNUSED written = 0;
16224 IADDR UNUSED pc = abuf->addr;
16225 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16226
16227if (EQSI (FLD (f_ae), 0)) {
16228frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16229} else {
16230frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16231}
16232
16233 return vpc;
16234#undef FLD
16235}
16236
16237/* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16238
16239static SEM_PC
16240SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16241{
16242#define FLD(f) abuf->fields.fmt_empty.f
16243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16244 int UNUSED written = 0;
16245 IADDR UNUSED pc = abuf->addr;
16246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16247
16248((void) 0); /*nop*/
16249
16250 return vpc;
16251#undef FLD
16252}
16253
16254/* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16255
16256static SEM_PC
16257SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16258{
16259#define FLD(f) abuf->fields.fmt_empty.f
16260 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16261 int UNUSED written = 0;
16262 IADDR UNUSED pc = abuf->addr;
16263 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16264
16265((void) 0); /*nop*/
16266
16267 return vpc;
16268#undef FLD
16269}
16270
16271/* itlbi: itlbi$pack @($GRi,$GRj) */
16272
16273static SEM_PC
16274SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16275{
16276#define FLD(f) abuf->fields.fmt_empty.f
16277 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16278 int UNUSED written = 0;
16279 IADDR UNUSED pc = abuf->addr;
16280 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16281
16282((void) 0); /*nop*/
16283
16284 return vpc;
16285#undef FLD
16286}
16287
16288/* dtlbi: dtlbi$pack @($GRi,$GRj) */
16289
16290static SEM_PC
16291SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16292{
16293#define FLD(f) abuf->fields.fmt_empty.f
16294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16295 int UNUSED written = 0;
16296 IADDR UNUSED pc = abuf->addr;
16297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16298
16299((void) 0); /*nop*/
16300
16301 return vpc;
16302#undef FLD
16303}
16304
16305/* icpl: icpl$pack $GRi,$GRj,$lock */
16306
16307static SEM_PC
16308SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16309{
16310#define FLD(f) abuf->fields.sfmt_icpl.f
16311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16312 int UNUSED written = 0;
16313 IADDR UNUSED pc = abuf->addr;
16314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16315
16316frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16317
16318 return vpc;
16319#undef FLD
16320}
16321
16322/* dcpl: dcpl$pack $GRi,$GRj,$lock */
16323
16324static SEM_PC
16325SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16326{
16327#define FLD(f) abuf->fields.sfmt_icpl.f
16328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16329 int UNUSED written = 0;
16330 IADDR UNUSED pc = abuf->addr;
16331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16332
16333frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16334
16335 return vpc;
16336#undef FLD
16337}
16338
16339/* icul: icul$pack $GRi */
16340
16341static SEM_PC
16342SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16343{
16344#define FLD(f) abuf->fields.sfmt_jmpil.f
16345 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16346 int UNUSED written = 0;
16347 IADDR UNUSED pc = abuf->addr;
16348 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16349
16350frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16351
16352 return vpc;
16353#undef FLD
16354}
16355
16356/* dcul: dcul$pack $GRi */
16357
16358static SEM_PC
16359SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16360{
16361#define FLD(f) abuf->fields.sfmt_jmpil.f
16362 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16363 int UNUSED written = 0;
16364 IADDR UNUSED pc = abuf->addr;
16365 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16366
16367frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16368
16369 return vpc;
16370#undef FLD
16371}
16372
16373/* bar: bar$pack */
16374
16375static SEM_PC
16376SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16377{
16378#define FLD(f) abuf->fields.fmt_empty.f
16379 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16380 int UNUSED written = 0;
16381 IADDR UNUSED pc = abuf->addr;
16382 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16383
16384((void) 0); /*nop*/
16385
16386 return vpc;
16387#undef FLD
16388}
16389
16390/* membar: membar$pack */
16391
16392static SEM_PC
16393SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16394{
16395#define FLD(f) abuf->fields.fmt_empty.f
16396 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16397 int UNUSED written = 0;
16398 IADDR UNUSED pc = abuf->addr;
16399 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16400
16401((void) 0); /*nop*/
16402
16403 return vpc;
16404#undef FLD
16405}
16406
676a64f4
RS
16407/* lrai: lrai$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16408
16409static SEM_PC
16410SEM_FN_NAME (frvbf,lrai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16411{
16412#define FLD(f) abuf->fields.fmt_empty.f
16413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16414 int UNUSED written = 0;
16415 IADDR UNUSED pc = abuf->addr;
16416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16417
16418((void) 0); /*nop*/
16419
16420 return vpc;
16421#undef FLD
16422}
16423
16424/* lrad: lrad$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16425
16426static SEM_PC
16427SEM_FN_NAME (frvbf,lrad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16428{
16429#define FLD(f) abuf->fields.fmt_empty.f
16430 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16431 int UNUSED written = 0;
16432 IADDR UNUSED pc = abuf->addr;
16433 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16434
16435((void) 0); /*nop*/
16436
16437 return vpc;
16438#undef FLD
16439}
16440
16441/* tlbpr: tlbpr$pack $GRi,$GRj,$TLBPRopx,$TLBPRL */
16442
16443static SEM_PC
16444SEM_FN_NAME (frvbf,tlbpr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16445{
16446#define FLD(f) abuf->fields.fmt_empty.f
16447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16448 int UNUSED written = 0;
16449 IADDR UNUSED pc = abuf->addr;
16450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16451
16452((void) 0); /*nop*/
16453
16454 return vpc;
16455#undef FLD
16456}
16457
b34f6357
DB
16458/* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16459
16460static SEM_PC
16461SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16462{
16463#define FLD(f) abuf->fields.fmt_empty.f
16464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16465 int UNUSED written = 0;
16466 IADDR UNUSED pc = abuf->addr;
16467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16468
16469((void) 0); /*nop*/
16470
16471 return vpc;
16472#undef FLD
16473}
16474
16475/* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16476
16477static SEM_PC
16478SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16479{
16480#define FLD(f) abuf->fields.fmt_empty.f
16481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16482 int UNUSED written = 0;
16483 IADDR UNUSED pc = abuf->addr;
16484 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16485
16486((void) 0); /*nop*/
16487
16488 return vpc;
16489#undef FLD
16490}
16491
16492/* clrgr: clrgr$pack $GRk */
16493
16494static SEM_PC
16495SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16496{
153431d6 16497#define FLD(f) abuf->fields.sfmt_swapi.f
b34f6357
DB
16498 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16499 int UNUSED written = 0;
16500 IADDR UNUSED pc = abuf->addr;
16501 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16502
153431d6
DB
16503{
16504frv_ref_SI (GET_H_GR (FLD (f_GRk)));
b34f6357 16505frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
153431d6 16506}
b34f6357
DB
16507
16508 return vpc;
16509#undef FLD
16510}
16511
16512/* clrfr: clrfr$pack $FRk */
16513
16514static SEM_PC
16515SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16516{
153431d6 16517#define FLD(f) abuf->fields.sfmt_cfmadds.f
b34f6357
DB
16518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16519 int UNUSED written = 0;
16520 IADDR UNUSED pc = abuf->addr;
16521 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16522
153431d6
DB
16523{
16524frv_ref_SI (GET_H_FR (FLD (f_FRk)));
b34f6357 16525frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
153431d6 16526}
b34f6357
DB
16527
16528 return vpc;
16529#undef FLD
16530}
16531
16532/* clrga: clrga$pack */
16533
16534static SEM_PC
16535SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16536{
16537#define FLD(f) abuf->fields.fmt_empty.f
16538 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16539 int UNUSED written = 0;
16540 IADDR UNUSED pc = abuf->addr;
16541 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16542
16543frvbf_clear_ne_flags (current_cpu, -1, 0);
16544
16545 return vpc;
16546#undef FLD
16547}
16548
16549/* clrfa: clrfa$pack */
16550
16551static SEM_PC
16552SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16553{
16554#define FLD(f) abuf->fields.fmt_empty.f
16555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16556 int UNUSED written = 0;
16557 IADDR UNUSED pc = abuf->addr;
16558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16559
16560frvbf_clear_ne_flags (current_cpu, -1, 1);
16561
16562 return vpc;
16563#undef FLD
16564}
16565
16566/* commitgr: commitgr$pack $GRk */
16567
16568static SEM_PC
16569SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16570{
16571#define FLD(f) abuf->fields.sfmt_setlos.f
16572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16573 int UNUSED written = 0;
16574 IADDR UNUSED pc = abuf->addr;
16575 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16576
16577frvbf_commit (current_cpu, FLD (f_GRk), 0);
16578
16579 return vpc;
16580#undef FLD
16581}
16582
16583/* commitfr: commitfr$pack $FRk */
16584
16585static SEM_PC
16586SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16587{
16588#define FLD(f) abuf->fields.sfmt_mhsethis.f
16589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16590 int UNUSED written = 0;
16591 IADDR UNUSED pc = abuf->addr;
16592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16593
16594frvbf_commit (current_cpu, FLD (f_FRk), 1);
16595
16596 return vpc;
16597#undef FLD
16598}
16599
16600/* commitga: commitga$pack */
16601
16602static SEM_PC
16603SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16604{
16605#define FLD(f) abuf->fields.fmt_empty.f
16606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16607 int UNUSED written = 0;
16608 IADDR UNUSED pc = abuf->addr;
16609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16610
16611frvbf_commit (current_cpu, -1, 0);
16612
16613 return vpc;
16614#undef FLD
16615}
16616
16617/* commitfa: commitfa$pack */
16618
16619static SEM_PC
16620SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16621{
16622#define FLD(f) abuf->fields.fmt_empty.f
16623 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16624 int UNUSED written = 0;
16625 IADDR UNUSED pc = abuf->addr;
16626 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16627
16628frvbf_commit (current_cpu, -1, 1);
16629
16630 return vpc;
16631#undef FLD
16632}
16633
16634/* fitos: fitos$pack $FRintj,$FRk */
16635
16636static SEM_PC
16637SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16638{
16639#define FLD(f) abuf->fields.sfmt_fditos.f
16640 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16641 int UNUSED written = 0;
16642 IADDR UNUSED pc = abuf->addr;
16643 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16644
16645 {
16646 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16647 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16648 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16649 }
16650
16651 return vpc;
16652#undef FLD
16653}
16654
16655/* fstoi: fstoi$pack $FRj,$FRintk */
16656
16657static SEM_PC
16658SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16659{
16660#define FLD(f) abuf->fields.sfmt_fdstoi.f
16661 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16662 int UNUSED written = 0;
16663 IADDR UNUSED pc = abuf->addr;
16664 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16665
16666 {
16667 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16668 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16669 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16670 }
16671
16672 return vpc;
16673#undef FLD
16674}
16675
16676/* fitod: fitod$pack $FRintj,$FRdoublek */
16677
16678static SEM_PC
16679SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16680{
16681#define FLD(f) abuf->fields.sfmt_fitod.f
16682 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16683 int UNUSED written = 0;
16684 IADDR UNUSED pc = abuf->addr;
16685 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16686
16687 {
16688 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsidf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16689 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16690 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16691 }
16692
16693 return vpc;
16694#undef FLD
16695}
16696
16697/* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16698
16699static SEM_PC
16700SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16701{
16702#define FLD(f) abuf->fields.sfmt_fdtoi.f
16703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16704 int UNUSED written = 0;
16705 IADDR UNUSED pc = abuf->addr;
16706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16707
16708 {
16709 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixdfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
16710 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16711 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16712 }
16713
16714 return vpc;
16715#undef FLD
16716}
16717
16718/* fditos: fditos$pack $FRintj,$FRk */
16719
16720static SEM_PC
16721SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16722{
16723#define FLD(f) abuf->fields.sfmt_fditos.f
16724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16725 int UNUSED written = 0;
16726 IADDR UNUSED pc = abuf->addr;
16727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16728
16729{
16730 {
16731 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16732 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16733 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16734 }
16735 {
16736 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
16737 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16738 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16739 }
16740}
16741
16742 return vpc;
16743#undef FLD
16744}
16745
16746/* fdstoi: fdstoi$pack $FRj,$FRintk */
16747
16748static SEM_PC
16749SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16750{
16751#define FLD(f) abuf->fields.sfmt_fdstoi.f
16752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16753 int UNUSED written = 0;
16754 IADDR UNUSED pc = abuf->addr;
16755 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16756
16757{
16758 {
16759 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16760 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16761 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16762 }
16763 {
16764 USI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
16765 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16766 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16767 }
16768}
16769
16770 return vpc;
16771#undef FLD
16772}
16773
16774/* nfditos: nfditos$pack $FRintj,$FRk */
16775
16776static SEM_PC
16777SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16778{
16779#define FLD(f) abuf->fields.sfmt_fditos.f
16780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16781 int UNUSED written = 0;
16782 IADDR UNUSED pc = abuf->addr;
16783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16784
16785{
16786frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16787 {
16788 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16789 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16790 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16791 }
16792frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16793 {
16794 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
16795 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16796 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16797 }
16798}
16799
16800 return vpc;
16801#undef FLD
16802}
16803
16804/* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16805
16806static SEM_PC
16807SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16808{
16809#define FLD(f) abuf->fields.sfmt_fdstoi.f
16810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16811 int UNUSED written = 0;
16812 IADDR UNUSED pc = abuf->addr;
16813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16814
16815{
16816frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16817 {
16818 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16819 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16820 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16821 }
16822frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16823 {
16824 USI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
16825 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16826 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16827 }
16828}
16829
16830 return vpc;
16831#undef FLD
16832}
16833
16834/* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16835
16836static SEM_PC
16837SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16838{
16839#define FLD(f) abuf->fields.sfmt_cfitos.f
16840 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16841 int UNUSED written = 0;
16842 IADDR UNUSED pc = abuf->addr;
16843 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16844
16845if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16846 {
16847 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16848 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16849 written |= (1 << 3);
16850 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16851 }
16852}
16853
16854 abuf->written = written;
16855 return vpc;
16856#undef FLD
16857}
16858
16859/* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16860
16861static SEM_PC
16862SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16863{
16864#define FLD(f) abuf->fields.sfmt_cfstoi.f
16865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16866 int UNUSED written = 0;
16867 IADDR UNUSED pc = abuf->addr;
16868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16869
16870if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16871 {
16872 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16873 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16874 written |= (1 << 3);
16875 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16876 }
16877}
16878
16879 abuf->written = written;
16880 return vpc;
16881#undef FLD
16882}
16883
16884/* nfitos: nfitos$pack $FRintj,$FRk */
16885
16886static SEM_PC
16887SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16888{
16889#define FLD(f) abuf->fields.sfmt_fditos.f
16890 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16891 int UNUSED written = 0;
16892 IADDR UNUSED pc = abuf->addr;
16893 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16894
16895{
16896frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16897 {
16898 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16899 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16900 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16901 }
16902}
16903
16904 return vpc;
16905#undef FLD
16906}
16907
16908/* nfstoi: nfstoi$pack $FRj,$FRintk */
16909
16910static SEM_PC
16911SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16912{
16913#define FLD(f) abuf->fields.sfmt_fdstoi.f
16914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16915 int UNUSED written = 0;
16916 IADDR UNUSED pc = abuf->addr;
16917 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16918
16919{
16920frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16921 {
16922 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16923 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16924 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16925 }
16926}
16927
16928 return vpc;
16929#undef FLD
16930}
16931
16932/* fmovs: fmovs$pack $FRj,$FRk */
16933
16934static SEM_PC
16935SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16936{
16937#define FLD(f) abuf->fields.sfmt_cfmadds.f
16938 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16939 int UNUSED written = 0;
16940 IADDR UNUSED pc = abuf->addr;
16941 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16942
16943 {
16944 SF opval = GET_H_FR (FLD (f_FRj));
16945 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16946 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16947 }
16948
16949 return vpc;
16950#undef FLD
16951}
16952
16953/* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16954
16955static SEM_PC
16956SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16957{
16958#define FLD(f) abuf->fields.sfmt_fmaddd.f
16959 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16960 int UNUSED written = 0;
16961 IADDR UNUSED pc = abuf->addr;
16962 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16963
16964 {
16965 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16966 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16967 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16968 }
16969
16970 return vpc;
16971#undef FLD
16972}
16973
16974/* fdmovs: fdmovs$pack $FRj,$FRk */
16975
16976static SEM_PC
16977SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16978{
16979#define FLD(f) abuf->fields.sfmt_fdmadds.f
16980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16981 int UNUSED written = 0;
16982 IADDR UNUSED pc = abuf->addr;
16983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16984
16985{
16986 {
16987 SF opval = GET_H_FR (FLD (f_FRj));
16988 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16989 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16990 }
16991 {
16992 SF opval = GET_H_FR (((FLD (f_FRj)) + (1)));
16993 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16994 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16995 }
16996}
16997
16998 return vpc;
16999#undef FLD
17000}
17001
17002/* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
17003
17004static SEM_PC
17005SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17006{
17007#define FLD(f) abuf->fields.sfmt_cfmadds.f
17008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17009 int UNUSED written = 0;
17010 IADDR UNUSED pc = abuf->addr;
17011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17012
17013if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17014 {
17015 SF opval = GET_H_FR (FLD (f_FRj));
17016 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17017 written |= (1 << 3);
17018 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17019 }
17020}
17021
17022 abuf->written = written;
17023 return vpc;
17024#undef FLD
17025}
17026
17027/* fnegs: fnegs$pack $FRj,$FRk */
17028
17029static SEM_PC
17030SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17031{
17032#define FLD(f) abuf->fields.sfmt_cfmadds.f
17033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17034 int UNUSED written = 0;
17035 IADDR UNUSED pc = abuf->addr;
17036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17037
17038 {
17039 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17040 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17041 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17042 }
17043
17044 return vpc;
17045#undef FLD
17046}
17047
17048/* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17049
17050static SEM_PC
17051SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17052{
17053#define FLD(f) abuf->fields.sfmt_fmaddd.f
17054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17055 int UNUSED written = 0;
17056 IADDR UNUSED pc = abuf->addr;
17057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17058
17059 {
17060 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17061 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17062 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17063 }
17064
17065 return vpc;
17066#undef FLD
17067}
17068
17069/* fdnegs: fdnegs$pack $FRj,$FRk */
17070
17071static SEM_PC
17072SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17073{
17074#define FLD(f) abuf->fields.sfmt_fdmadds.f
17075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17076 int UNUSED written = 0;
17077 IADDR UNUSED pc = abuf->addr;
17078 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17079
17080{
17081 {
17082 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17083 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17084 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17085 }
17086 {
17087 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17088 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17089 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17090 }
17091}
17092
17093 return vpc;
17094#undef FLD
17095}
17096
17097/* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17098
17099static SEM_PC
17100SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17101{
17102#define FLD(f) abuf->fields.sfmt_cfmadds.f
17103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17104 int UNUSED written = 0;
17105 IADDR UNUSED pc = abuf->addr;
17106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17107
17108if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17109 {
17110 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17111 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17112 written |= (1 << 3);
17113 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17114 }
17115}
17116
17117 abuf->written = written;
17118 return vpc;
17119#undef FLD
17120}
17121
17122/* fabss: fabss$pack $FRj,$FRk */
17123
17124static SEM_PC
17125SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17126{
17127#define FLD(f) abuf->fields.sfmt_cfmadds.f
17128 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17129 int UNUSED written = 0;
17130 IADDR UNUSED pc = abuf->addr;
17131 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17132
17133 {
17134 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17135 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17136 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17137 }
17138
17139 return vpc;
17140#undef FLD
17141}
17142
17143/* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17144
17145static SEM_PC
17146SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17147{
17148#define FLD(f) abuf->fields.sfmt_fmaddd.f
17149 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17150 int UNUSED written = 0;
17151 IADDR UNUSED pc = abuf->addr;
17152 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17153
17154 {
17155 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->absdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17156 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17157 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17158 }
17159
17160 return vpc;
17161#undef FLD
17162}
17163
17164/* fdabss: fdabss$pack $FRj,$FRk */
17165
17166static SEM_PC
17167SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17168{
17169#define FLD(f) abuf->fields.sfmt_fdmadds.f
17170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17171 int UNUSED written = 0;
17172 IADDR UNUSED pc = abuf->addr;
17173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17174
17175{
17176 {
17177 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17178 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17179 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17180 }
17181 {
17182 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17183 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17184 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17185 }
17186}
17187
17188 return vpc;
17189#undef FLD
17190}
17191
17192/* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17193
17194static SEM_PC
17195SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17196{
17197#define FLD(f) abuf->fields.sfmt_cfmadds.f
17198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17199 int UNUSED written = 0;
17200 IADDR UNUSED pc = abuf->addr;
17201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17202
17203if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17204 {
17205 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17206 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17207 written |= (1 << 3);
17208 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17209 }
17210}
17211
17212 abuf->written = written;
17213 return vpc;
17214#undef FLD
17215}
17216
17217/* fsqrts: fsqrts$pack $FRj,$FRk */
17218
17219static SEM_PC
17220SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17221{
17222#define FLD(f) abuf->fields.sfmt_cfmadds.f
17223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17224 int UNUSED written = 0;
17225 IADDR UNUSED pc = abuf->addr;
17226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17227
17228 {
17229 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17230 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17231 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17232 }
17233
17234 return vpc;
17235#undef FLD
17236}
17237
17238/* fdsqrts: fdsqrts$pack $FRj,$FRk */
17239
17240static SEM_PC
17241SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17242{
17243#define FLD(f) abuf->fields.sfmt_fdmadds.f
17244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17245 int UNUSED written = 0;
17246 IADDR UNUSED pc = abuf->addr;
17247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17248
17249{
17250 {
17251 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17252 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17253 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17254 }
17255 {
17256 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17257 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17258 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17259 }
17260}
17261
17262 return vpc;
17263#undef FLD
17264}
17265
17266/* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17267
17268static SEM_PC
17269SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17270{
17271#define FLD(f) abuf->fields.sfmt_fdmadds.f
17272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17273 int UNUSED written = 0;
17274 IADDR UNUSED pc = abuf->addr;
17275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17276
17277{
17278frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17279 {
17280 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17281 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17282 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17283 }
17284frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17285 {
17286 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17287 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17288 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17289 }
17290}
17291
17292 return vpc;
17293#undef FLD
17294}
17295
17296/* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17297
17298static SEM_PC
17299SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17300{
17301#define FLD(f) abuf->fields.sfmt_fmaddd.f
17302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17303 int UNUSED written = 0;
17304 IADDR UNUSED pc = abuf->addr;
17305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17306
17307 {
17308 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17309 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17310 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17311 }
17312
17313 return vpc;
17314#undef FLD
17315}
17316
17317/* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17318
17319static SEM_PC
17320SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17321{
17322#define FLD(f) abuf->fields.sfmt_cfmadds.f
17323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17324 int UNUSED written = 0;
17325 IADDR UNUSED pc = abuf->addr;
17326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17327
17328if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17329 {
17330 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17331 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17332 written |= (1 << 3);
17333 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17334 }
17335}
17336
17337 abuf->written = written;
17338 return vpc;
17339#undef FLD
17340}
17341
17342/* nfsqrts: nfsqrts$pack $FRj,$FRk */
17343
17344static SEM_PC
17345SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17346{
17347#define FLD(f) abuf->fields.sfmt_cfmadds.f
17348 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17349 int UNUSED written = 0;
17350 IADDR UNUSED pc = abuf->addr;
17351 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17352
17353{
17354frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17355 {
17356 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17357 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17358 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17359 }
17360}
17361
17362 return vpc;
17363#undef FLD
17364}
17365
17366/* fadds: fadds$pack $FRi,$FRj,$FRk */
17367
17368static SEM_PC
17369SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17370{
17371#define FLD(f) abuf->fields.sfmt_cfmadds.f
17372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17373 int UNUSED written = 0;
17374 IADDR UNUSED pc = abuf->addr;
17375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17376
17377 {
17378 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)));
17379 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17380 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17381 }
17382
17383 return vpc;
17384#undef FLD
17385}
17386
17387/* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17388
17389static SEM_PC
17390SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17391{
17392#define FLD(f) abuf->fields.sfmt_cfmadds.f
17393 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17394 int UNUSED written = 0;
17395 IADDR UNUSED pc = abuf->addr;
17396 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17397
17398 {
17399 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)));
17400 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17401 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17402 }
17403
17404 return vpc;
17405#undef FLD
17406}
17407
17408/* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17409
17410static SEM_PC
17411SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17412{
17413#define FLD(f) abuf->fields.sfmt_cfmadds.f
17414 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17415 int UNUSED written = 0;
17416 IADDR UNUSED pc = abuf->addr;
17417 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17418
17419 {
17420 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)));
17421 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17422 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17423 }
17424
17425 return vpc;
17426#undef FLD
17427}
17428
17429/* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17430
17431static SEM_PC
17432SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17433{
17434#define FLD(f) abuf->fields.sfmt_cfmadds.f
17435 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17436 int UNUSED written = 0;
17437 IADDR UNUSED pc = abuf->addr;
17438 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17439
17440 {
17441 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)));
17442 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17443 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17444 }
17445
17446 return vpc;
17447#undef FLD
17448}
17449
17450/* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17451
17452static SEM_PC
17453SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17454{
17455#define FLD(f) abuf->fields.sfmt_fmaddd.f
17456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17457 int UNUSED written = 0;
17458 IADDR UNUSED pc = abuf->addr;
17459 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17460
17461 {
17462 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)));
17463 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17464 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17465 }
17466
17467 return vpc;
17468#undef FLD
17469}
17470
17471/* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17472
17473static SEM_PC
17474SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17475{
17476#define FLD(f) abuf->fields.sfmt_fmaddd.f
17477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17478 int UNUSED written = 0;
17479 IADDR UNUSED pc = abuf->addr;
17480 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17481
17482 {
17483 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)));
17484 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17485 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17486 }
17487
17488 return vpc;
17489#undef FLD
17490}
17491
17492/* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17493
17494static SEM_PC
17495SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17496{
17497#define FLD(f) abuf->fields.sfmt_fmaddd.f
17498 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17499 int UNUSED written = 0;
17500 IADDR UNUSED pc = abuf->addr;
17501 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17502
17503 {
17504 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)));
17505 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17506 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17507 }
17508
17509 return vpc;
17510#undef FLD
17511}
17512
17513/* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17514
17515static SEM_PC
17516SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17517{
17518#define FLD(f) abuf->fields.sfmt_fmaddd.f
17519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17520 int UNUSED written = 0;
17521 IADDR UNUSED pc = abuf->addr;
17522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17523
17524 {
17525 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)));
17526 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17527 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17528 }
17529
17530 return vpc;
17531#undef FLD
17532}
17533
17534/* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17535
17536static SEM_PC
17537SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17538{
17539#define FLD(f) abuf->fields.sfmt_cfmadds.f
17540 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17541 int UNUSED written = 0;
17542 IADDR UNUSED pc = abuf->addr;
17543 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17544
17545if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17546 {
17547 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)));
17548 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17549 written |= (1 << 4);
17550 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17551 }
17552}
17553
17554 abuf->written = written;
17555 return vpc;
17556#undef FLD
17557}
17558
17559/* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17560
17561static SEM_PC
17562SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17563{
17564#define FLD(f) abuf->fields.sfmt_cfmadds.f
17565 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17566 int UNUSED written = 0;
17567 IADDR UNUSED pc = abuf->addr;
17568 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17569
17570if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17571 {
17572 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)));
17573 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17574 written |= (1 << 4);
17575 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17576 }
17577}
17578
17579 abuf->written = written;
17580 return vpc;
17581#undef FLD
17582}
17583
17584/* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17585
17586static SEM_PC
17587SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17588{
17589#define FLD(f) abuf->fields.sfmt_cfmadds.f
17590 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17591 int UNUSED written = 0;
17592 IADDR UNUSED pc = abuf->addr;
17593 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17594
17595if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17596 {
17597 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)));
17598 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17599 written |= (1 << 4);
17600 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17601 }
17602}
17603
17604 abuf->written = written;
17605 return vpc;
17606#undef FLD
17607}
17608
17609/* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17610
17611static SEM_PC
17612SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17613{
17614#define FLD(f) abuf->fields.sfmt_cfmadds.f
17615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17616 int UNUSED written = 0;
17617 IADDR UNUSED pc = abuf->addr;
17618 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17619
17620if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17621 {
17622 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)));
17623 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17624 written |= (1 << 4);
17625 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17626 }
17627}
17628
17629 abuf->written = written;
17630 return vpc;
17631#undef FLD
17632}
17633
17634/* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17635
17636static SEM_PC
17637SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17638{
17639#define FLD(f) abuf->fields.sfmt_cfmadds.f
17640 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17641 int UNUSED written = 0;
17642 IADDR UNUSED pc = abuf->addr;
17643 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17644
17645{
17646frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17647 {
17648 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)));
17649 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17650 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17651 }
17652}
17653
17654 return vpc;
17655#undef FLD
17656}
17657
17658/* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17659
17660static SEM_PC
17661SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17662{
17663#define FLD(f) abuf->fields.sfmt_cfmadds.f
17664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17665 int UNUSED written = 0;
17666 IADDR UNUSED pc = abuf->addr;
17667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17668
17669{
17670frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17671 {
17672 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)));
17673 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17674 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17675 }
17676}
17677
17678 return vpc;
17679#undef FLD
17680}
17681
17682/* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17683
17684static SEM_PC
17685SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17686{
17687#define FLD(f) abuf->fields.sfmt_cfmadds.f
17688 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17689 int UNUSED written = 0;
17690 IADDR UNUSED pc = abuf->addr;
17691 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17692
17693{
17694frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17695 {
17696 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)));
17697 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17698 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17699 }
17700}
17701
17702 return vpc;
17703#undef FLD
17704}
17705
17706/* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17707
17708static SEM_PC
17709SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17710{
17711#define FLD(f) abuf->fields.sfmt_cfmadds.f
17712 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17713 int UNUSED written = 0;
17714 IADDR UNUSED pc = abuf->addr;
17715 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17716
17717{
17718frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17719 {
17720 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)));
17721 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17722 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17723 }
17724}
17725
17726 return vpc;
17727#undef FLD
17728}
17729
17730/* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17731
17732static SEM_PC
17733SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17734{
17735#define FLD(f) abuf->fields.sfmt_cfcmps.f
17736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17737 int UNUSED written = 0;
17738 IADDR UNUSED pc = abuf->addr;
17739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17740
17741if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17742 {
17743 UQI opval = 2;
17744 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17745 written |= (1 << 2);
17746 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17747 }
17748} else {
17749if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17750 {
17751 UQI opval = 8;
17752 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17753 written |= (1 << 2);
17754 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17755 }
17756} else {
17757if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17758 {
17759 UQI opval = 4;
17760 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17761 written |= (1 << 2);
17762 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17763 }
17764} else {
17765 {
17766 UQI opval = 1;
17767 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17768 written |= (1 << 2);
17769 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17770 }
17771}
17772}
17773}
17774
17775 abuf->written = written;
17776 return vpc;
17777#undef FLD
17778}
17779
17780/* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17781
17782static SEM_PC
17783SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17784{
17785#define FLD(f) abuf->fields.sfmt_fcmpd.f
17786 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17787 int UNUSED written = 0;
17788 IADDR UNUSED pc = abuf->addr;
17789 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17790
17791if ((* 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)))) {
17792 {
17793 UQI opval = 2;
17794 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17795 written |= (1 << 2);
17796 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17797 }
17798} else {
17799if ((* 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)))) {
17800 {
17801 UQI opval = 8;
17802 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17803 written |= (1 << 2);
17804 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17805 }
17806} else {
17807if ((* 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)))) {
17808 {
17809 UQI opval = 4;
17810 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17811 written |= (1 << 2);
17812 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17813 }
17814} else {
17815 {
17816 UQI opval = 1;
17817 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17818 written |= (1 << 2);
17819 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17820 }
17821}
17822}
17823}
17824
17825 abuf->written = written;
17826 return vpc;
17827#undef FLD
17828}
17829
17830/* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17831
17832static SEM_PC
17833SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17834{
17835#define FLD(f) abuf->fields.sfmt_cfcmps.f
17836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17837 int UNUSED written = 0;
17838 IADDR UNUSED pc = abuf->addr;
17839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17840
17841if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17842if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17843 {
17844 UQI opval = 2;
17845 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17846 written |= (1 << 4);
17847 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17848 }
17849} else {
17850if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17851 {
17852 UQI opval = 8;
17853 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17854 written |= (1 << 4);
17855 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17856 }
17857} else {
17858if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17859 {
17860 UQI opval = 4;
17861 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17862 written |= (1 << 4);
17863 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17864 }
17865} else {
17866 {
17867 UQI opval = 1;
17868 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17869 written |= (1 << 4);
17870 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17871 }
17872}
17873}
17874}
17875}
17876
17877 abuf->written = written;
17878 return vpc;
17879#undef FLD
17880}
17881
17882/* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17883
17884static SEM_PC
17885SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17886{
17887#define FLD(f) abuf->fields.sfmt_nfdcmps.f
17888 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17889 int UNUSED written = 0;
17890 IADDR UNUSED pc = abuf->addr;
17891 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17892
17893{
17894if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17895 {
17896 UQI opval = 2;
17897 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17898 written |= (1 << 7);
17899 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17900 }
17901} else {
17902if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17903 {
17904 UQI opval = 8;
17905 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17906 written |= (1 << 7);
17907 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17908 }
17909} else {
17910if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17911 {
17912 UQI opval = 4;
17913 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17914 written |= (1 << 7);
17915 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17916 }
17917} else {
17918 {
17919 UQI opval = 1;
17920 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17921 written |= (1 << 7);
17922 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17923 }
17924}
17925}
17926}
17927if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
17928 {
17929 UQI opval = 2;
17930 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17931 written |= (1 << 8);
17932 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17933 }
17934} else {
17935if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
17936 {
17937 UQI opval = 8;
17938 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17939 written |= (1 << 8);
17940 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17941 }
17942} else {
17943if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
17944 {
17945 UQI opval = 4;
17946 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17947 written |= (1 << 8);
17948 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17949 }
17950} else {
17951 {
17952 UQI opval = 1;
17953 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17954 written |= (1 << 8);
17955 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17956 }
17957}
17958}
17959}
17960}
17961
17962 abuf->written = written;
17963 return vpc;
17964#undef FLD
17965}
17966
17967/* fmadds: fmadds$pack $FRi,$FRj,$FRk */
17968
17969static SEM_PC
17970SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17971{
17972#define FLD(f) abuf->fields.sfmt_cfmadds.f
17973 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17974 int UNUSED written = 0;
17975 IADDR UNUSED pc = abuf->addr;
17976 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17977
17978 {
17979 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)));
17980 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17981 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17982 }
17983
17984 return vpc;
17985#undef FLD
17986}
17987
17988/* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
17989
17990static SEM_PC
17991SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17992{
17993#define FLD(f) abuf->fields.sfmt_cfmadds.f
17994 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17995 int UNUSED written = 0;
17996 IADDR UNUSED pc = abuf->addr;
17997 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17998
17999 {
18000 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)));
18001 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18002 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18003 }
18004
18005 return vpc;
18006#undef FLD
18007}
18008
18009/* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18010
18011static SEM_PC
18012SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18013{
18014#define FLD(f) abuf->fields.sfmt_fmaddd.f
18015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18016 int UNUSED written = 0;
18017 IADDR UNUSED pc = abuf->addr;
18018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18019
18020 {
18021 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)));
18022 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18023 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18024 }
18025
18026 return vpc;
18027#undef FLD
18028}
18029
18030/* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18031
18032static SEM_PC
18033SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18034{
18035#define FLD(f) abuf->fields.sfmt_fmaddd.f
18036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18037 int UNUSED written = 0;
18038 IADDR UNUSED pc = abuf->addr;
18039 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18040
18041 {
18042 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)));
18043 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18044 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18045 }
18046
18047 return vpc;
18048#undef FLD
18049}
18050
18051/* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18052
18053static SEM_PC
18054SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18055{
18056#define FLD(f) abuf->fields.sfmt_fdmadds.f
18057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18058 int UNUSED written = 0;
18059 IADDR UNUSED pc = abuf->addr;
18060 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18061
18062{
18063 {
18064 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)));
18065 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18066 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18067 }
18068 {
18069 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)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1)))), GET_H_FR (((FLD (f_FRk)) + (1))));
18070 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18071 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18072 }
18073}
18074
18075 return vpc;
18076#undef FLD
18077}
18078
18079/* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18080
18081static SEM_PC
18082SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18083{
18084#define FLD(f) abuf->fields.sfmt_fdmadds.f
18085 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18086 int UNUSED written = 0;
18087 IADDR UNUSED pc = abuf->addr;
18088 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18089
18090{
18091frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18092 {
18093 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)));
18094 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18095 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18096 }
18097frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18098 {
18099 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)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1)))), GET_H_FR (((FLD (f_FRk)) + (1))));
18100 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18101 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18102 }
18103}
18104
18105 return vpc;
18106#undef FLD
18107}
18108
18109/* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18110
18111static SEM_PC
18112SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18113{
18114#define FLD(f) abuf->fields.sfmt_cfmadds.f
18115 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18116 int UNUSED written = 0;
18117 IADDR UNUSED pc = abuf->addr;
18118 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18119
18120if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18121 {
18122 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)));
18123 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18124 written |= (1 << 5);
18125 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18126 }
18127}
18128
18129 abuf->written = written;
18130 return vpc;
18131#undef FLD
18132}
18133
18134/* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18135
18136static SEM_PC
18137SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18138{
18139#define FLD(f) abuf->fields.sfmt_cfmadds.f
18140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18141 int UNUSED written = 0;
18142 IADDR UNUSED pc = abuf->addr;
18143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18144
18145if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18146 {
18147 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)));
18148 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18149 written |= (1 << 5);
18150 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18151 }
18152}
18153
18154 abuf->written = written;
18155 return vpc;
18156#undef FLD
18157}
18158
18159/* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18160
18161static SEM_PC
18162SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18163{
18164#define FLD(f) abuf->fields.sfmt_cfmadds.f
18165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18166 int UNUSED written = 0;
18167 IADDR UNUSED pc = abuf->addr;
18168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18169
18170{
18171frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18172 {
18173 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)));
18174 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18175 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18176 }
18177}
18178
18179 return vpc;
18180#undef FLD
18181}
18182
18183/* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18184
18185static SEM_PC
18186SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18187{
18188#define FLD(f) abuf->fields.sfmt_cfmadds.f
18189 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18190 int UNUSED written = 0;
18191 IADDR UNUSED pc = abuf->addr;
18192 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18193
18194{
18195frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18196 {
18197 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)));
18198 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18199 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18200 }
18201}
18202
18203 return vpc;
18204#undef FLD
18205}
18206
18207/* fmas: fmas$pack $FRi,$FRj,$FRk */
18208
18209static SEM_PC
18210SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18211{
18212#define FLD(f) abuf->fields.sfmt_fdmadds.f
18213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18214 int UNUSED written = 0;
18215 IADDR UNUSED pc = abuf->addr;
18216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18217
18218{
18219 {
18220 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)));
18221 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18222 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18223 }
18224 {
18225 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18226 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18227 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18228 }
18229}
18230
18231 return vpc;
18232#undef FLD
18233}
18234
18235/* fmss: fmss$pack $FRi,$FRj,$FRk */
18236
18237static SEM_PC
18238SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18239{
18240#define FLD(f) abuf->fields.sfmt_fdmadds.f
18241 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18242 int UNUSED written = 0;
18243 IADDR UNUSED pc = abuf->addr;
18244 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18245
18246{
18247 {
18248 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)));
18249 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18250 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18251 }
18252 {
18253 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18254 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18255 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18256 }
18257}
18258
18259 return vpc;
18260#undef FLD
18261}
18262
18263/* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18264
18265static SEM_PC
18266SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18267{
18268#define FLD(f) abuf->fields.sfmt_fdmas.f
18269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18270 int UNUSED written = 0;
18271 IADDR UNUSED pc = abuf->addr;
18272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18273
18274{
18275 {
18276 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)));
18277 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18278 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18279 }
18280 {
18281 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18282 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18283 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18284 }
18285 {
18286 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18287 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18288 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18289 }
18290 {
18291 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18292 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18293 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18294 }
18295}
18296
18297 return vpc;
18298#undef FLD
18299}
18300
18301/* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18302
18303static SEM_PC
18304SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18305{
18306#define FLD(f) abuf->fields.sfmt_fdmas.f
18307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18308 int UNUSED written = 0;
18309 IADDR UNUSED pc = abuf->addr;
18310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18311
18312{
18313 {
18314 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)));
18315 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18316 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18317 }
18318 {
18319 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18320 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18321 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18322 }
18323 {
18324 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18325 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18326 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18327 }
18328 {
18329 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18330 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18331 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18332 }
18333}
18334
18335 return vpc;
18336#undef FLD
18337}
18338
18339/* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18340
18341static SEM_PC
18342SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18343{
18344#define FLD(f) abuf->fields.sfmt_fdmas.f
18345 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18346 int UNUSED written = 0;
18347 IADDR UNUSED pc = abuf->addr;
18348 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18349
18350{
18351frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18352frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18353frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18354frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18355 {
18356 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)));
18357 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18358 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18359 }
18360 {
18361 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18362 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18363 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18364 }
18365 {
18366 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18367 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18368 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18369 }
18370 {
18371 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18372 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18373 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18374 }
18375}
18376
18377 return vpc;
18378#undef FLD
18379}
18380
18381/* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18382
18383static SEM_PC
18384SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18385{
18386#define FLD(f) abuf->fields.sfmt_fdmas.f
18387 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18388 int UNUSED written = 0;
18389 IADDR UNUSED pc = abuf->addr;
18390 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18391
18392{
18393frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18394frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18395frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18396frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18397 {
18398 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)));
18399 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18400 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18401 }
18402 {
18403 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18404 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18405 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18406 }
18407 {
18408 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18409 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18410 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18411 }
18412 {
18413 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18414 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18415 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18416 }
18417}
18418
18419 return vpc;
18420#undef FLD
18421}
18422
18423/* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18424
18425static SEM_PC
18426SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18427{
18428#define FLD(f) abuf->fields.sfmt_cfmas.f
18429 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18430 int UNUSED written = 0;
18431 IADDR UNUSED pc = abuf->addr;
18432 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18433
18434if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18435{
18436 {
18437 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)));
18438 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18439 written |= (1 << 9);
18440 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18441 }
18442 {
18443 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18444 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18445 written |= (1 << 10);
18446 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18447 }
18448}
18449}
18450
18451 abuf->written = written;
18452 return vpc;
18453#undef FLD
18454}
18455
18456/* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18457
18458static SEM_PC
18459SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18460{
18461#define FLD(f) abuf->fields.sfmt_cfmas.f
18462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18463 int UNUSED written = 0;
18464 IADDR UNUSED pc = abuf->addr;
18465 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18466
18467if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18468{
18469 {
18470 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)));
18471 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18472 written |= (1 << 9);
18473 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18474 }
18475 {
18476 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18477 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18478 written |= (1 << 10);
18479 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18480 }
18481}
18482}
18483
18484 abuf->written = written;
18485 return vpc;
18486#undef FLD
18487}
18488
18489/* fmad: fmad$pack $FRi,$FRj,$FRk */
18490
18491static SEM_PC
18492SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18493{
18494#define FLD(f) abuf->fields.sfmt_fdmadds.f
18495 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18496 int UNUSED written = 0;
18497 IADDR UNUSED pc = abuf->addr;
18498 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18499
18500{
18501 {
18502 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->muldf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi))), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)))));
18503 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18504 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18505 }
18506 {
18507 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->adddf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1)))), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))))));
18508 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18509 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18510 }
18511}
18512
18513 return vpc;
18514#undef FLD
18515}
18516
18517/* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18518
18519static SEM_PC
18520SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18521{
18522#define FLD(f) abuf->fields.sfmt_fdmadds.f
18523 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18524 int UNUSED written = 0;
18525 IADDR UNUSED pc = abuf->addr;
18526 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18527
18528{
18529 {
18530 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->muldf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi))), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)))));
18531 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18532 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18533 }
18534 {
18535 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->subdf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1)))), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))))));
18536 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18537 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18538 }
18539}
18540
18541 return vpc;
18542#undef FLD
18543}
18544
18545/* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18546
18547static SEM_PC
18548SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18549{
18550#define FLD(f) abuf->fields.sfmt_fdmadds.f
18551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18552 int UNUSED written = 0;
18553 IADDR UNUSED pc = abuf->addr;
18554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18555
18556{
18557frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18558 {
18559 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)));
18560 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18561 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18562 }
18563frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18564 {
18565 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18566 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18567 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18568 }
18569}
18570
18571 return vpc;
18572#undef FLD
18573}
18574
18575/* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18576
18577static SEM_PC
18578SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18579{
18580#define FLD(f) abuf->fields.sfmt_fdmadds.f
18581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18582 int UNUSED written = 0;
18583 IADDR UNUSED pc = abuf->addr;
18584 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18585
18586{
18587frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18588 {
18589 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)));
18590 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18591 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18592 }
18593frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18594 {
18595 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18596 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18597 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18598 }
18599}
18600
18601 return vpc;
18602#undef FLD
18603}
18604
18605/* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18606
18607static SEM_PC
18608SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18609{
18610#define FLD(f) abuf->fields.sfmt_fdmadds.f
18611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18612 int UNUSED written = 0;
18613 IADDR UNUSED pc = abuf->addr;
18614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18615
18616{
18617 {
18618 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)));
18619 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18620 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18621 }
18622 {
18623 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18624 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18625 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18626 }
18627}
18628
18629 return vpc;
18630#undef FLD
18631}
18632
18633/* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18634
18635static SEM_PC
18636SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18637{
18638#define FLD(f) abuf->fields.sfmt_fdmadds.f
18639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18640 int UNUSED written = 0;
18641 IADDR UNUSED pc = abuf->addr;
18642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18643
18644{
18645 {
18646 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)));
18647 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18648 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18649 }
18650 {
18651 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18652 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18653 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18654 }
18655}
18656
18657 return vpc;
18658#undef FLD
18659}
18660
18661/* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18662
18663static SEM_PC
18664SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18665{
18666#define FLD(f) abuf->fields.sfmt_fdmadds.f
18667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18668 int UNUSED written = 0;
18669 IADDR UNUSED pc = abuf->addr;
18670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18671
18672{
18673 {
18674 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)));
18675 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18676 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18677 }
18678 {
18679 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18680 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18681 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18682 }
18683}
18684
18685 return vpc;
18686#undef FLD
18687}
18688
18689/* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18690
18691static SEM_PC
18692SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18693{
18694#define FLD(f) abuf->fields.sfmt_fdmadds.f
18695 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18696 int UNUSED written = 0;
18697 IADDR UNUSED pc = abuf->addr;
18698 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18699
18700{
18701 {
18702 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)));
18703 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18704 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18705 }
18706 {
18707 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->divsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18708 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18709 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18710 }
18711}
18712
18713 return vpc;
18714#undef FLD
18715}
18716
18717/* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18718
18719static SEM_PC
18720SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18721{
18722#define FLD(f) abuf->fields.sfmt_fdmadds.f
18723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18724 int UNUSED written = 0;
18725 IADDR UNUSED pc = abuf->addr;
18726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18727
18728{
18729 {
18730 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)));
18731 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18732 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18733 }
18734 {
18735 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18736 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18737 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18738 }
18739}
18740
18741 return vpc;
18742#undef FLD
18743}
18744
18745/* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18746
18747static SEM_PC
18748SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18749{
18750#define FLD(f) abuf->fields.sfmt_fdmadds.f
18751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18752 int UNUSED written = 0;
18753 IADDR UNUSED pc = abuf->addr;
18754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18755
18756{
18757 {
18758 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)) + (1))));
18759 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18760 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18761 }
18762 {
18763 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (FLD (f_FRj)));
18764 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18765 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18766 }
18767}
18768
18769 return vpc;
18770#undef FLD
18771}
18772
18773/* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18774
18775static SEM_PC
18776SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18777{
18778#define FLD(f) abuf->fields.sfmt_fdmadds.f
18779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18780 int UNUSED written = 0;
18781 IADDR UNUSED pc = abuf->addr;
18782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18783
18784{
18785frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18786 {
18787 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)) + (1))));
18788 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18789 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18790 }
18791frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18792 {
18793 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (FLD (f_FRj)));
18794 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18795 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18796 }
18797}
18798
18799 return vpc;
18800#undef FLD
18801}
18802
18803/* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18804
18805static SEM_PC
18806SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18807{
18808#define FLD(f) abuf->fields.sfmt_fdmadds.f
18809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18810 int UNUSED written = 0;
18811 IADDR UNUSED pc = abuf->addr;
18812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18813
18814{
18815frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18816 {
18817 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)));
18818 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18819 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18820 }
18821frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18822 {
18823 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18824 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18825 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18826 }
18827}
18828
18829 return vpc;
18830#undef FLD
18831}
18832
18833/* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18834
18835static SEM_PC
18836SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18837{
18838#define FLD(f) abuf->fields.sfmt_fdmadds.f
18839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18840 int UNUSED written = 0;
18841 IADDR UNUSED pc = abuf->addr;
18842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18843
18844{
18845frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18846 {
18847 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)));
18848 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18849 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18850 }
18851frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18852 {
18853 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18854 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18855 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18856 }
18857}
18858
18859 return vpc;
18860#undef FLD
18861}
18862
18863/* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18864
18865static SEM_PC
18866SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18867{
18868#define FLD(f) abuf->fields.sfmt_fdmadds.f
18869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18870 int UNUSED written = 0;
18871 IADDR UNUSED pc = abuf->addr;
18872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18873
18874{
18875frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18876 {
18877 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)));
18878 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18879 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18880 }
18881frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18882 {
18883 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18884 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18885 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18886 }
18887}
18888
18889 return vpc;
18890#undef FLD
18891}
18892
18893/* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18894
18895static SEM_PC
18896SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18897{
18898#define FLD(f) abuf->fields.sfmt_fdmadds.f
18899 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18900 int UNUSED written = 0;
18901 IADDR UNUSED pc = abuf->addr;
18902 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18903
18904{
18905frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18906 {
18907 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)));
18908 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18909 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18910 }
18911frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18912 {
18913 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->divsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18914 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18915 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18916 }
18917}
18918
18919 return vpc;
18920#undef FLD
18921}
18922
18923/* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18924
18925static SEM_PC
18926SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18927{
18928#define FLD(f) abuf->fields.sfmt_fdmadds.f
18929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18930 int UNUSED written = 0;
18931 IADDR UNUSED pc = abuf->addr;
18932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18933
18934{
18935frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18936 {
18937 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)));
18938 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18939 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18940 }
18941frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18942 {
18943 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18944 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18945 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18946 }
18947}
18948
18949 return vpc;
18950#undef FLD
18951}
18952
18953/* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18954
18955static SEM_PC
18956SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18957{
18958#define FLD(f) abuf->fields.sfmt_nfdcmps.f
18959 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18960 int UNUSED written = 0;
18961 IADDR UNUSED pc = abuf->addr;
18962 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18963
18964{
18965frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18966if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
18967 {
18968 UQI opval = 2;
18969 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18970 written |= (1 << 8);
18971 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18972 }
18973} else {
18974if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
18975 {
18976 UQI opval = 8;
18977 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18978 written |= (1 << 8);
18979 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18980 }
18981} else {
18982if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
18983 {
18984 UQI opval = 4;
18985 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18986 written |= (1 << 8);
18987 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18988 }
18989} else {
18990 {
18991 UQI opval = 1;
18992 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18993 written |= (1 << 8);
18994 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18995 }
18996}
18997}
18998}
18999frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
19000if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
19001 {
19002 UQI opval = 2;
19003 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19004 written |= (1 << 9);
19005 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19006 }
19007} else {
19008if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
19009 {
19010 UQI opval = 8;
19011 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19012 written |= (1 << 9);
19013 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19014 }
19015} else {
19016if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
19017 {
19018 UQI opval = 4;
19019 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19020 written |= (1 << 9);
19021 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19022 }
19023} else {
19024 {
19025 UQI opval = 1;
19026 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19027 written |= (1 << 9);
19028 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19029 }
19030}
19031}
19032}
19033}
19034
19035 abuf->written = written;
19036 return vpc;
19037#undef FLD
19038}
19039
19040/* mhsetlos: mhsetlos$pack $u12,$FRklo */
19041
19042static SEM_PC
19043SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19044{
19045#define FLD(f) abuf->fields.sfmt_mhsetlos.f
19046 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19047 int UNUSED written = 0;
19048 IADDR UNUSED pc = abuf->addr;
19049 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19050
19051 {
19052 UHI opval = FLD (f_u12);
19053 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19054 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19055 }
19056
19057 return vpc;
19058#undef FLD
19059}
19060
19061/* mhsethis: mhsethis$pack $u12,$FRkhi */
19062
19063static SEM_PC
19064SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19065{
19066#define FLD(f) abuf->fields.sfmt_mhsethis.f
19067 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19068 int UNUSED written = 0;
19069 IADDR UNUSED pc = abuf->addr;
19070 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19071
19072 {
19073 UHI opval = FLD (f_u12);
19074 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19075 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19076 }
19077
19078 return vpc;
19079#undef FLD
19080}
19081
19082/* mhdsets: mhdsets$pack $u12,$FRintk */
19083
19084static SEM_PC
19085SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19086{
19087#define FLD(f) abuf->fields.sfmt_mhdsets.f
19088 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19089 int UNUSED written = 0;
19090 IADDR UNUSED pc = abuf->addr;
19091 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19092
19093{
19094 {
19095 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19096 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19097 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19098 }
19099 {
19100 UHI opval = FLD (f_u12);
19101 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19102 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19103 }
19104 {
19105 UHI opval = FLD (f_u12);
19106 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19107 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19108 }
19109}
19110
19111 return vpc;
19112#undef FLD
19113}
19114
19115/* mhsetloh: mhsetloh$pack $s5,$FRklo */
19116
19117static SEM_PC
19118SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19119{
19120#define FLD(f) abuf->fields.sfmt_mhsetloh.f
19121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19122 int UNUSED written = 0;
19123 IADDR UNUSED pc = abuf->addr;
19124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19125
19126{
19127 HI tmp_tmp;
19128 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19129 tmp_tmp = ANDHI (tmp_tmp, 2047);
19130 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19131 {
19132 UHI opval = tmp_tmp;
19133 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19134 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19135 }
19136}
19137
19138 return vpc;
19139#undef FLD
19140}
19141
19142/* mhsethih: mhsethih$pack $s5,$FRkhi */
19143
19144static SEM_PC
19145SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19146{
19147#define FLD(f) abuf->fields.sfmt_mhsethih.f
19148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19149 int UNUSED written = 0;
19150 IADDR UNUSED pc = abuf->addr;
19151 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19152
19153{
19154 HI tmp_tmp;
19155 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19156 tmp_tmp = ANDHI (tmp_tmp, 2047);
19157 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19158 {
19159 UHI opval = tmp_tmp;
19160 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19161 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19162 }
19163}
19164
19165 return vpc;
19166#undef FLD
19167}
19168
19169/* mhdseth: mhdseth$pack $s5,$FRintk */
19170
19171static SEM_PC
19172SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19173{
19174#define FLD(f) abuf->fields.sfmt_mhdseth.f
19175 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19176 int UNUSED written = 0;
19177 IADDR UNUSED pc = abuf->addr;
19178 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19179
19180{
19181 {
19182 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19183 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19184 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19185 }
19186{
19187 HI tmp_tmp;
19188 tmp_tmp = GET_H_FR_HI (((FLD (f_FRk)) + (0)));
19189 tmp_tmp = ANDHI (tmp_tmp, 2047);
19190 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19191 {
19192 UHI opval = tmp_tmp;
19193 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19194 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19195 }
19196}
19197{
19198 HI tmp_tmp;
19199 tmp_tmp = GET_H_FR_LO (((FLD (f_FRk)) + (0)));
19200 tmp_tmp = ANDHI (tmp_tmp, 2047);
19201 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19202 {
19203 UHI opval = tmp_tmp;
19204 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19205 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19206 }
19207}
19208}
19209
19210 return vpc;
19211#undef FLD
19212}
19213
19214/* mand: mand$pack $FRinti,$FRintj,$FRintk */
19215
19216static SEM_PC
19217SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19218{
19219#define FLD(f) abuf->fields.sfmt_mwcut.f
19220 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19221 int UNUSED written = 0;
19222 IADDR UNUSED pc = abuf->addr;
19223 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19224
19225 {
19226 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19227 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19228 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19229 }
19230
19231 return vpc;
19232#undef FLD
19233}
19234
19235/* mor: mor$pack $FRinti,$FRintj,$FRintk */
19236
19237static SEM_PC
19238SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19239{
19240#define FLD(f) abuf->fields.sfmt_mwcut.f
19241 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19242 int UNUSED written = 0;
19243 IADDR UNUSED pc = abuf->addr;
19244 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19245
19246 {
19247 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19248 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19249 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19250 }
19251
19252 return vpc;
19253#undef FLD
19254}
19255
19256/* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19257
19258static SEM_PC
19259SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19260{
19261#define FLD(f) abuf->fields.sfmt_mwcut.f
19262 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19263 int UNUSED written = 0;
19264 IADDR UNUSED pc = abuf->addr;
19265 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19266
19267 {
19268 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19269 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19270 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19271 }
19272
19273 return vpc;
19274#undef FLD
19275}
19276
19277/* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19278
19279static SEM_PC
19280SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19281{
19282#define FLD(f) abuf->fields.sfmt_cmand.f
19283 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19284 int UNUSED written = 0;
19285 IADDR UNUSED pc = abuf->addr;
19286 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19287
19288if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19289 {
19290 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19291 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19292 written |= (1 << 4);
19293 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19294 }
19295}
19296
19297 abuf->written = written;
19298 return vpc;
19299#undef FLD
19300}
19301
19302/* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19303
19304static SEM_PC
19305SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19306{
19307#define FLD(f) abuf->fields.sfmt_cmand.f
19308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19309 int UNUSED written = 0;
19310 IADDR UNUSED pc = abuf->addr;
19311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19312
19313if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19314 {
19315 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19316 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19317 written |= (1 << 4);
19318 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19319 }
19320}
19321
19322 abuf->written = written;
19323 return vpc;
19324#undef FLD
19325}
19326
19327/* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19328
19329static SEM_PC
19330SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19331{
19332#define FLD(f) abuf->fields.sfmt_cmand.f
19333 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19334 int UNUSED written = 0;
19335 IADDR UNUSED pc = abuf->addr;
19336 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19337
19338if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19339 {
19340 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19341 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19342 written |= (1 << 4);
19343 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19344 }
19345}
19346
19347 abuf->written = written;
19348 return vpc;
19349#undef FLD
19350}
19351
19352/* mnot: mnot$pack $FRintj,$FRintk */
19353
19354static SEM_PC
19355SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19356{
19357#define FLD(f) abuf->fields.sfmt_mcut.f
19358 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19359 int UNUSED written = 0;
19360 IADDR UNUSED pc = abuf->addr;
19361 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19362
19363 {
19364 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19365 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19366 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19367 }
19368
19369 return vpc;
19370#undef FLD
19371}
19372
19373/* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19374
19375static SEM_PC
19376SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19377{
19378#define FLD(f) abuf->fields.sfmt_cmand.f
19379 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19380 int UNUSED written = 0;
19381 IADDR UNUSED pc = abuf->addr;
19382 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19383
19384if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19385 {
19386 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19387 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19388 written |= (1 << 3);
19389 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19390 }
19391}
19392
19393 abuf->written = written;
19394 return vpc;
19395#undef FLD
19396}
19397
19398/* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19399
19400static SEM_PC
19401SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19402{
19403#define FLD(f) abuf->fields.sfmt_mwcuti.f
19404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19405 int UNUSED written = 0;
19406 IADDR UNUSED pc = abuf->addr;
19407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19408
19409 {
19410 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19411 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19412 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19413 }
19414
19415 return vpc;
19416#undef FLD
19417}
19418
19419/* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19420
19421static SEM_PC
19422SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19423{
19424#define FLD(f) abuf->fields.sfmt_mwcuti.f
19425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19426 int UNUSED written = 0;
19427 IADDR UNUSED pc = abuf->addr;
19428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19429
19430 {
19431 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19432 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19433 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19434 }
19435
19436 return vpc;
19437#undef FLD
19438}
19439
19440/* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19441
19442static SEM_PC
19443SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19444{
19445#define FLD(f) abuf->fields.sfmt_mwcut.f
19446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19447 int UNUSED written = 0;
19448 IADDR UNUSED pc = abuf->addr;
19449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19450
19451 {
19452 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), GET_H_FR_INT (FLD (f_FRj)));
19453 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19454 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19455 }
19456
19457 return vpc;
19458#undef FLD
19459}
19460
19461/* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19462
19463static SEM_PC
19464SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19465{
19466#define FLD(f) abuf->fields.sfmt_mwcuti.f
19467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19468 int UNUSED written = 0;
19469 IADDR UNUSED pc = abuf->addr;
19470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19471
19472 {
19473 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), FLD (f_u6));
19474 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19475 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19476 }
19477
19478 return vpc;
19479#undef FLD
19480}
19481
19482/* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19483
19484static SEM_PC
19485SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19486{
19487#define FLD(f) abuf->fields.sfmt_mcut.f
19488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19489 int UNUSED written = 0;
19490 IADDR UNUSED pc = abuf->addr;
19491 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19492
19493 {
19494 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19495 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19496 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19497 }
19498
19499 return vpc;
19500#undef FLD
19501}
19502
19503/* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19504
19505static SEM_PC
19506SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19507{
19508#define FLD(f) abuf->fields.sfmt_mcuti.f
19509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19510 int UNUSED written = 0;
19511 IADDR UNUSED pc = abuf->addr;
19512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19513
19514 {
19515 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19516 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19517 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19518 }
19519
19520 return vpc;
19521#undef FLD
19522}
19523
19524/* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19525
19526static SEM_PC
19527SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19528{
19529#define FLD(f) abuf->fields.sfmt_mcut.f
19530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19531 int UNUSED written = 0;
19532 IADDR UNUSED pc = abuf->addr;
19533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19534
19535 {
19536 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19537 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19538 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19539 }
19540
19541 return vpc;
19542#undef FLD
19543}
19544
19545/* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19546
19547static SEM_PC
19548SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19549{
19550#define FLD(f) abuf->fields.sfmt_mcuti.f
19551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19552 int UNUSED written = 0;
19553 IADDR UNUSED pc = abuf->addr;
19554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19555
19556 {
19557 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19558 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19559 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19560 }
19561
19562 return vpc;
19563#undef FLD
19564}
19565
19566/* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19567
19568static SEM_PC
19569SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19570{
19571#define FLD(f) abuf->fields.sfmt_mdcutssi.f
19572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19573 int UNUSED written = 0;
19574 IADDR UNUSED pc = abuf->addr;
19575 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19576
19577if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19578frvbf_media_acc_not_aligned (current_cpu);
19579} else {
19580if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19581frvbf_media_register_not_aligned (current_cpu);
19582} else {
19583{
19584 {
19585 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19586 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19587 written |= (1 << 5);
19588 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19589 }
19590 {
19591 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))), FLD (f_s6));
19592 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19593 written |= (1 << 6);
19594 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19595 }
19596}
19597}
19598}
19599
19600 abuf->written = written;
19601 return vpc;
19602#undef FLD
19603}
19604
19605/* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19606
19607static SEM_PC
19608SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19609{
19610#define FLD(f) abuf->fields.sfmt_mwcut.f
19611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19612 int UNUSED written = 0;
19613 IADDR UNUSED pc = abuf->addr;
19614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19615
19616 {
19617 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19618 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19619 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19620 }
19621
19622 return vpc;
19623#undef FLD
19624}
19625
19626/* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19627
19628static SEM_PC
19629SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19630{
19631#define FLD(f) abuf->fields.sfmt_msllhi.f
19632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19633 int UNUSED written = 0;
19634 IADDR UNUSED pc = abuf->addr;
19635 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19636
19637{
19638 {
19639 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19640 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19641 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19642 }
19643 {
19644 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19645 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19646 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19647 }
19648 {
19649 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19650 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19651 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19652 }
19653 {
19654 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19655 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19656 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19657 }
19658}
19659
19660 return vpc;
19661#undef FLD
19662}
19663
19664/* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19665
19666static SEM_PC
19667SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19668{
19669#define FLD(f) abuf->fields.sfmt_msllhi.f
19670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19671 int UNUSED written = 0;
19672 IADDR UNUSED pc = abuf->addr;
19673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19674
19675{
19676 {
19677 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19678 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19679 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19680 }
19681 {
19682 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19683 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19684 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19685 }
19686 {
19687 UHI opval = SRLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19688 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19689 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19690 }
19691 {
19692 UHI opval = SRLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19693 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19694 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19695 }
19696}
19697
19698 return vpc;
19699#undef FLD
19700}
19701
19702/* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19703
19704static SEM_PC
19705SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19706{
19707#define FLD(f) abuf->fields.sfmt_msllhi.f
19708 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19709 int UNUSED written = 0;
19710 IADDR UNUSED pc = abuf->addr;
19711 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19712
19713{
19714 {
19715 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19716 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19717 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19718 }
19719 {
19720 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19721 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19722 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19723 }
19724 {
19725 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19726 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19727 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19728 }
19729 {
19730 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19731 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19732 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19733 }
19734}
19735
19736 return vpc;
19737#undef FLD
19738}
19739
19740/* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19741
19742static SEM_PC
19743SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19744{
19745#define FLD(f) abuf->fields.sfmt_mdrotli.f
19746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19747 int UNUSED written = 0;
19748 IADDR UNUSED pc = abuf->addr;
19749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19750
19751if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19752frvbf_media_register_not_aligned (current_cpu);
19753} else {
19754{
19755 {
19756 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19757 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19758 written |= (1 << 5);
19759 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19760 }
19761 {
19762 USI opval = ROLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_s6), 31));
19763 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19764 written |= (1 << 6);
19765 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19766 }
19767}
19768}
19769
19770 abuf->written = written;
19771 return vpc;
19772#undef FLD
19773}
19774
19775/* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19776
19777static SEM_PC
19778SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19779{
19780#define FLD(f) abuf->fields.sfmt_mcplhi.f
19781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19782 int UNUSED written = 0;
19783 IADDR UNUSED pc = abuf->addr;
19784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19785
19786{
19787 HI tmp_arg1;
19788 HI tmp_arg2;
19789 HI tmp_shift;
19790 {
19791 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19792 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19793 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19794 }
19795 {
19796 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19797 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19798 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19799 }
19800 tmp_shift = ANDSI (FLD (f_u6), 15);
19801 tmp_arg1 = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), tmp_shift);
19802if (NEHI (tmp_shift, 0)) {
19803{
19804 tmp_arg2 = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
19805 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19806 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19807}
19808}
19809 {
19810 UHI opval = tmp_arg1;
19811 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19812 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19813 }
19814}
19815
19816 return vpc;
19817#undef FLD
19818}
19819
19820/* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19821
19822static SEM_PC
19823SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19824{
19825#define FLD(f) abuf->fields.sfmt_mwcuti.f
19826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19827 int UNUSED written = 0;
19828 IADDR UNUSED pc = abuf->addr;
19829 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19830
19831{
19832 SI tmp_tmp;
19833 SI tmp_shift;
19834 tmp_shift = ANDSI (FLD (f_u6), 31);
19835 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19836if (NESI (tmp_shift, 0)) {
19837{
19838 SI tmp_tmp1;
19839 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
19840 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19841}
19842}
19843 {
19844 SI opval = tmp_tmp;
19845 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19846 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19847 }
19848}
19849
19850 return vpc;
19851#undef FLD
19852}
19853
19854/* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19855
19856static SEM_PC
19857SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19858{
19859#define FLD(f) abuf->fields.sfmt_cmaddhss.f
19860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19861 int UNUSED written = 0;
19862 IADDR UNUSED pc = abuf->addr;
19863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19864
19865{
19866 HI tmp_argihi;
19867 HI tmp_argilo;
19868 HI tmp_argjhi;
19869 HI tmp_argjlo;
19870{
19871 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19872 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19873 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19874 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19875}
19876if (GTHI (tmp_argihi, tmp_argjhi)) {
19877 {
19878 UHI opval = tmp_argjhi;
19879 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19880 written |= (1 << 9);
19881 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19882 }
19883} else {
19884if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19885 {
19886 UHI opval = INVHI (tmp_argjhi);
19887 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19888 written |= (1 << 9);
19889 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19890 }
19891} else {
19892 {
19893 UHI opval = tmp_argihi;
19894 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19895 written |= (1 << 9);
19896 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19897 }
19898}
19899}
19900if (GTHI (tmp_argilo, tmp_argjlo)) {
19901 {
19902 UHI opval = tmp_argjlo;
19903 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19904 written |= (1 << 10);
19905 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19906 }
19907} else {
19908if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19909 {
19910 UHI opval = INVHI (tmp_argjlo);
19911 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19912 written |= (1 << 10);
19913 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19914 }
19915} else {
19916 {
19917 UHI opval = tmp_argilo;
19918 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19919 written |= (1 << 10);
19920 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19921 }
19922}
19923}
19924}
19925
19926 abuf->written = written;
19927 return vpc;
19928#undef FLD
19929}
19930
19931/* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19932
19933static SEM_PC
19934SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19935{
19936#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19938 int UNUSED written = 0;
19939 IADDR UNUSED pc = abuf->addr;
19940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19941
19942if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19943frvbf_media_register_not_aligned (current_cpu);
19944} else {
19945{
19946 HI tmp_argihi;
19947 HI tmp_argilo;
19948 HI tmp_argjhi;
19949 HI tmp_argjlo;
19950 {
19951 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19952 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19953 written |= (1 << 14);
19954 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19955 }
19956{
19957 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19958 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19959 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19960 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19961}
19962if (GTHI (tmp_argihi, tmp_argjhi)) {
19963 {
19964 UHI opval = tmp_argjhi;
19965 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19966 written |= (1 << 15);
19967 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19968 }
19969} else {
19970if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19971 {
19972 UHI opval = INVHI (tmp_argjhi);
19973 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19974 written |= (1 << 15);
19975 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19976 }
19977} else {
19978 {
19979 UHI opval = tmp_argihi;
19980 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19981 written |= (1 << 15);
19982 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19983 }
19984}
19985}
19986if (GTHI (tmp_argilo, tmp_argjlo)) {
19987 {
19988 UHI opval = tmp_argjlo;
19989 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19990 written |= (1 << 17);
19991 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19992 }
19993} else {
19994if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19995 {
19996 UHI opval = INVHI (tmp_argjlo);
19997 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19998 written |= (1 << 17);
19999 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20000 }
20001} else {
20002 {
20003 UHI opval = tmp_argilo;
20004 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20005 written |= (1 << 17);
20006 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20007 }
20008}
20009}
20010{
20011 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20012 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20013 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20014 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20015}
20016if (GTHI (tmp_argihi, tmp_argjhi)) {
20017 {
20018 UHI opval = tmp_argjhi;
20019 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20020 written |= (1 << 16);
20021 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20022 }
20023} else {
20024if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20025 {
20026 UHI opval = INVHI (tmp_argjhi);
20027 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20028 written |= (1 << 16);
20029 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20030 }
20031} else {
20032 {
20033 UHI opval = tmp_argihi;
20034 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20035 written |= (1 << 16);
20036 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20037 }
20038}
20039}
20040if (GTHI (tmp_argilo, tmp_argjlo)) {
20041 {
20042 UHI opval = tmp_argjlo;
20043 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20044 written |= (1 << 18);
20045 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20046 }
20047} else {
20048if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20049 {
20050 UHI opval = INVHI (tmp_argjlo);
20051 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20052 written |= (1 << 18);
20053 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20054 }
20055} else {
20056 {
20057 UHI opval = tmp_argilo;
20058 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20059 written |= (1 << 18);
20060 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20061 }
20062}
20063}
20064}
20065}
20066
20067 abuf->written = written;
20068 return vpc;
20069#undef FLD
20070}
20071
20072/* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20073
20074static SEM_PC
20075SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20076{
20077#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20079 int UNUSED written = 0;
20080 IADDR UNUSED pc = abuf->addr;
20081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20082
20083{
20084 UHI tmp_argihi;
20085 UHI tmp_argilo;
20086 UHI tmp_argjhi;
20087 UHI tmp_argjlo;
20088{
20089 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20090 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20091 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20092 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20093}
20094if (GTUHI (tmp_argihi, tmp_argjhi)) {
20095 {
20096 UHI opval = tmp_argjhi;
20097 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20098 written |= (1 << 9);
20099 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20100 }
20101} else {
20102 {
20103 UHI opval = tmp_argihi;
20104 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20105 written |= (1 << 9);
20106 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20107 }
20108}
20109if (GTUHI (tmp_argilo, tmp_argjlo)) {
20110 {
20111 UHI opval = tmp_argjlo;
20112 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20113 written |= (1 << 10);
20114 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20115 }
20116} else {
20117 {
20118 UHI opval = tmp_argilo;
20119 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20120 written |= (1 << 10);
20121 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20122 }
20123}
20124}
20125
20126 abuf->written = written;
20127 return vpc;
20128#undef FLD
20129}
20130
20131/* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20132
20133static SEM_PC
20134SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20135{
20136#define FLD(f) abuf->fields.sfmt_mcmpsh.f
20137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20138 int UNUSED written = 0;
20139 IADDR UNUSED pc = abuf->addr;
20140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20141
20142if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20143frvbf_media_cr_not_aligned (current_cpu);
20144} else {
20145{
20146 HI tmp_argihi;
20147 HI tmp_argilo;
20148 HI tmp_argjhi;
20149 HI tmp_argjlo;
20150{
20151 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20152 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20153 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20154 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20155}
20156if (GTHI (tmp_argihi, tmp_argjhi)) {
20157 {
20158 UQI opval = 2;
20159 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20160 written |= (1 << 9);
20161 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20162 }
20163} else {
20164if (EQHI (tmp_argihi, tmp_argjhi)) {
20165 {
20166 UQI opval = 8;
20167 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20168 written |= (1 << 9);
20169 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20170 }
20171} else {
20172if (LTHI (tmp_argihi, tmp_argjhi)) {
20173 {
20174 UQI opval = 4;
20175 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20176 written |= (1 << 9);
20177 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20178 }
20179} else {
20180 {
20181 UQI opval = 1;
20182 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20183 written |= (1 << 9);
20184 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20185 }
20186}
20187}
20188}
20189if (GTHI (tmp_argilo, tmp_argjlo)) {
20190 {
20191 UQI opval = 2;
20192 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20193 written |= (1 << 10);
20194 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20195 }
20196} else {
20197if (EQHI (tmp_argilo, tmp_argjlo)) {
20198 {
20199 UQI opval = 8;
20200 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20201 written |= (1 << 10);
20202 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20203 }
20204} else {
20205if (LTHI (tmp_argilo, tmp_argjlo)) {
20206 {
20207 UQI opval = 4;
20208 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20209 written |= (1 << 10);
20210 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20211 }
20212} else {
20213 {
20214 UQI opval = 1;
20215 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20216 written |= (1 << 10);
20217 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20218 }
20219}
20220}
20221}
20222}
20223}
20224
20225 abuf->written = written;
20226 return vpc;
20227#undef FLD
20228}
20229
20230/* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20231
20232static SEM_PC
20233SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20234{
20235#define FLD(f) abuf->fields.sfmt_mcmpsh.f
20236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20237 int UNUSED written = 0;
20238 IADDR UNUSED pc = abuf->addr;
20239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20240
20241if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20242frvbf_media_cr_not_aligned (current_cpu);
20243} else {
20244{
20245 UHI tmp_argihi;
20246 UHI tmp_argilo;
20247 UHI tmp_argjhi;
20248 UHI tmp_argjlo;
20249{
20250 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20251 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20252 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20253 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20254}
20255if (GTUHI (tmp_argihi, tmp_argjhi)) {
20256 {
20257 UQI opval = 2;
20258 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20259 written |= (1 << 9);
20260 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20261 }
20262} else {
20263if (EQHI (tmp_argihi, tmp_argjhi)) {
20264 {
20265 UQI opval = 8;
20266 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20267 written |= (1 << 9);
20268 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20269 }
20270} else {
20271if (LTUHI (tmp_argihi, tmp_argjhi)) {
20272 {
20273 UQI opval = 4;
20274 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20275 written |= (1 << 9);
20276 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20277 }
20278} else {
20279 {
20280 UQI opval = 1;
20281 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20282 written |= (1 << 9);
20283 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20284 }
20285}
20286}
20287}
20288if (GTUHI (tmp_argilo, tmp_argjlo)) {
20289 {
20290 UQI opval = 2;
20291 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20292 written |= (1 << 10);
20293 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20294 }
20295} else {
20296if (EQHI (tmp_argilo, tmp_argjlo)) {
20297 {
20298 UQI opval = 8;
20299 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20300 written |= (1 << 10);
20301 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20302 }
20303} else {
20304if (LTUHI (tmp_argilo, tmp_argjlo)) {
20305 {
20306 UQI opval = 4;
20307 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20308 written |= (1 << 10);
20309 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20310 }
20311} else {
20312 {
20313 UQI opval = 1;
20314 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20315 written |= (1 << 10);
20316 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20317 }
20318}
20319}
20320}
20321}
20322}
20323
20324 abuf->written = written;
20325 return vpc;
20326#undef FLD
20327}
20328
20329/* mabshs: mabshs$pack $FRintj,$FRintk */
20330
20331static SEM_PC
20332SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20333{
20334#define FLD(f) abuf->fields.sfmt_mabshs.f
20335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20336 int UNUSED written = 0;
20337 IADDR UNUSED pc = abuf->addr;
20338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20339
20340{
20341 HI tmp_arghi;
20342 HI tmp_arglo;
20343 {
20344 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20345 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20346 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20347 }
20348 {
20349 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20350 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20351 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20352 }
20353 tmp_arghi = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
20354 tmp_arglo = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
20355if (GTDI (ABSHI (tmp_arghi), 32767)) {
20356{
20357 {
20358 UHI opval = 32767;
20359 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20360 written |= (1 << 8);
20361 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20362 }
20363frvbf_media_overflow (current_cpu, 8);
20364}
20365} else {
20366if (LTDI (ABSHI (tmp_arghi), -32768)) {
20367{
20368 {
20369 UHI opval = -32768;
20370 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20371 written |= (1 << 8);
20372 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20373 }
20374frvbf_media_overflow (current_cpu, 8);
20375}
20376} else {
20377 {
20378 UHI opval = ABSHI (tmp_arghi);
20379 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20380 written |= (1 << 8);
20381 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20382 }
20383}
20384}
20385if (GTDI (ABSHI (tmp_arglo), 32767)) {
20386{
20387 {
20388 UHI opval = 32767;
20389 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20390 written |= (1 << 9);
20391 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20392 }
20393frvbf_media_overflow (current_cpu, 4);
20394}
20395} else {
20396if (LTDI (ABSHI (tmp_arglo), -32768)) {
20397{
20398 {
20399 UHI opval = -32768;
20400 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20401 written |= (1 << 9);
20402 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20403 }
20404frvbf_media_overflow (current_cpu, 4);
20405}
20406} else {
20407 {
20408 UHI opval = ABSHI (tmp_arglo);
20409 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20410 written |= (1 << 9);
20411 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20412 }
20413}
20414}
20415}
20416
20417 abuf->written = written;
20418 return vpc;
20419#undef FLD
20420}
20421
20422/* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20423
20424static SEM_PC
20425SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20426{
20427#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20429 int UNUSED written = 0;
20430 IADDR UNUSED pc = abuf->addr;
20431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20432
20433{
20434 HI tmp_argihi;
20435 HI tmp_argilo;
20436 HI tmp_argjhi;
20437 HI tmp_argjlo;
20438{
20439 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20440 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20441 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20442 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20443}
20444{
20445 DI tmp_tmp;
20446 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20447if (GTDI (tmp_tmp, 32767)) {
20448{
20449 {
20450 UHI opval = 32767;
20451 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20452 written |= (1 << 9);
20453 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20454 }
20455frvbf_media_overflow (current_cpu, 8);
20456}
20457} else {
20458if (LTDI (tmp_tmp, -32768)) {
20459{
20460 {
20461 UHI opval = -32768;
20462 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20463 written |= (1 << 9);
20464 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20465 }
20466frvbf_media_overflow (current_cpu, 8);
20467}
20468} else {
20469 {
20470 UHI opval = tmp_tmp;
20471 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20472 written |= (1 << 9);
20473 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20474 }
20475}
20476}
20477}
20478{
20479 DI tmp_tmp;
20480 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20481if (GTDI (tmp_tmp, 32767)) {
20482{
20483 {
20484 UHI opval = 32767;
20485 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20486 written |= (1 << 10);
20487 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20488 }
20489frvbf_media_overflow (current_cpu, 4);
20490}
20491} else {
20492if (LTDI (tmp_tmp, -32768)) {
20493{
20494 {
20495 UHI opval = -32768;
20496 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20497 written |= (1 << 10);
20498 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20499 }
20500frvbf_media_overflow (current_cpu, 4);
20501}
20502} else {
20503 {
20504 UHI opval = tmp_tmp;
20505 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20506 written |= (1 << 10);
20507 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20508 }
20509}
20510}
20511}
20512}
20513
20514 abuf->written = written;
20515 return vpc;
20516#undef FLD
20517}
20518
20519/* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20520
20521static SEM_PC
20522SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20523{
20524#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20526 int UNUSED written = 0;
20527 IADDR UNUSED pc = abuf->addr;
20528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20529
20530{
20531 UHI tmp_argihi;
20532 UHI tmp_argilo;
20533 UHI tmp_argjhi;
20534 UHI tmp_argjlo;
20535{
20536 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20537 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20538 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20539 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20540}
20541{
20542 DI tmp_tmp;
20543 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20544if (GTDI (tmp_tmp, 65535)) {
20545{
20546 {
20547 UHI opval = 65535;
20548 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20549 written |= (1 << 9);
20550 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20551 }
20552frvbf_media_overflow (current_cpu, 8);
20553}
20554} else {
20555if (LTDI (tmp_tmp, 0)) {
20556{
20557 {
20558 UHI opval = 0;
20559 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20560 written |= (1 << 9);
20561 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20562 }
20563frvbf_media_overflow (current_cpu, 8);
20564}
20565} else {
20566 {
20567 UHI opval = tmp_tmp;
20568 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20569 written |= (1 << 9);
20570 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20571 }
20572}
20573}
20574}
20575{
20576 DI tmp_tmp;
20577 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20578if (GTDI (tmp_tmp, 65535)) {
20579{
20580 {
20581 UHI opval = 65535;
20582 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20583 written |= (1 << 10);
20584 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20585 }
20586frvbf_media_overflow (current_cpu, 4);
20587}
20588} else {
20589if (LTDI (tmp_tmp, 0)) {
20590{
20591 {
20592 UHI opval = 0;
20593 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20594 written |= (1 << 10);
20595 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20596 }
20597frvbf_media_overflow (current_cpu, 4);
20598}
20599} else {
20600 {
20601 UHI opval = tmp_tmp;
20602 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20603 written |= (1 << 10);
20604 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20605 }
20606}
20607}
20608}
20609}
20610
20611 abuf->written = written;
20612 return vpc;
20613#undef FLD
20614}
20615
20616/* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20617
20618static SEM_PC
20619SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20620{
20621#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20623 int UNUSED written = 0;
20624 IADDR UNUSED pc = abuf->addr;
20625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20626
20627{
20628 HI tmp_argihi;
20629 HI tmp_argilo;
20630 HI tmp_argjhi;
20631 HI tmp_argjlo;
20632{
20633 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20634 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20635 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20636 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20637}
20638{
20639 DI tmp_tmp;
20640 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20641if (GTDI (tmp_tmp, 32767)) {
20642{
20643 {
20644 UHI opval = 32767;
20645 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20646 written |= (1 << 9);
20647 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20648 }
20649frvbf_media_overflow (current_cpu, 8);
20650}
20651} else {
20652if (LTDI (tmp_tmp, -32768)) {
20653{
20654 {
20655 UHI opval = -32768;
20656 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20657 written |= (1 << 9);
20658 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20659 }
20660frvbf_media_overflow (current_cpu, 8);
20661}
20662} else {
20663 {
20664 UHI opval = tmp_tmp;
20665 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20666 written |= (1 << 9);
20667 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20668 }
20669}
20670}
20671}
20672{
20673 DI tmp_tmp;
20674 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20675if (GTDI (tmp_tmp, 32767)) {
20676{
20677 {
20678 UHI opval = 32767;
20679 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20680 written |= (1 << 10);
20681 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20682 }
20683frvbf_media_overflow (current_cpu, 4);
20684}
20685} else {
20686if (LTDI (tmp_tmp, -32768)) {
20687{
20688 {
20689 UHI opval = -32768;
20690 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20691 written |= (1 << 10);
20692 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20693 }
20694frvbf_media_overflow (current_cpu, 4);
20695}
20696} else {
20697 {
20698 UHI opval = tmp_tmp;
20699 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20700 written |= (1 << 10);
20701 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20702 }
20703}
20704}
20705}
20706}
20707
20708 abuf->written = written;
20709 return vpc;
20710#undef FLD
20711}
20712
20713/* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20714
20715static SEM_PC
20716SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20717{
20718#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20720 int UNUSED written = 0;
20721 IADDR UNUSED pc = abuf->addr;
20722 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20723
20724{
20725 UHI tmp_argihi;
20726 UHI tmp_argilo;
20727 UHI tmp_argjhi;
20728 UHI tmp_argjlo;
20729{
20730 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20731 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20732 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20733 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20734}
20735{
20736 DI tmp_tmp;
20737 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20738if (GTDI (tmp_tmp, 65535)) {
20739{
20740 {
20741 UHI opval = 65535;
20742 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20743 written |= (1 << 9);
20744 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20745 }
20746frvbf_media_overflow (current_cpu, 8);
20747}
20748} else {
20749if (LTDI (tmp_tmp, 0)) {
20750{
20751 {
20752 UHI opval = 0;
20753 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20754 written |= (1 << 9);
20755 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20756 }
20757frvbf_media_overflow (current_cpu, 8);
20758}
20759} else {
20760 {
20761 UHI opval = tmp_tmp;
20762 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20763 written |= (1 << 9);
20764 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20765 }
20766}
20767}
20768}
20769{
20770 DI tmp_tmp;
20771 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20772if (GTDI (tmp_tmp, 65535)) {
20773{
20774 {
20775 UHI opval = 65535;
20776 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20777 written |= (1 << 10);
20778 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20779 }
20780frvbf_media_overflow (current_cpu, 4);
20781}
20782} else {
20783if (LTDI (tmp_tmp, 0)) {
20784{
20785 {
20786 UHI opval = 0;
20787 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20788 written |= (1 << 10);
20789 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20790 }
20791frvbf_media_overflow (current_cpu, 4);
20792}
20793} else {
20794 {
20795 UHI opval = tmp_tmp;
20796 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20797 written |= (1 << 10);
20798 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20799 }
20800}
20801}
20802}
20803}
20804
20805 abuf->written = written;
20806 return vpc;
20807#undef FLD
20808}
20809
20810/* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20811
20812static SEM_PC
20813SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20814{
20815#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20817 int UNUSED written = 0;
20818 IADDR UNUSED pc = abuf->addr;
20819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20820
20821if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20822{
20823 HI tmp_argihi;
20824 HI tmp_argilo;
20825 HI tmp_argjhi;
20826 HI tmp_argjlo;
20827{
20828 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20829 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20830 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20831 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20832}
20833{
20834 DI tmp_tmp;
20835 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20836if (GTDI (tmp_tmp, 32767)) {
20837{
20838 {
20839 UHI opval = 32767;
20840 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20841 written |= (1 << 11);
20842 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20843 }
20844frvbf_media_overflow (current_cpu, 8);
20845}
20846} else {
20847if (LTDI (tmp_tmp, -32768)) {
20848{
20849 {
20850 UHI opval = -32768;
20851 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20852 written |= (1 << 11);
20853 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20854 }
20855frvbf_media_overflow (current_cpu, 8);
20856}
20857} else {
20858 {
20859 UHI opval = tmp_tmp;
20860 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20861 written |= (1 << 11);
20862 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20863 }
20864}
20865}
20866}
20867{
20868 DI tmp_tmp;
20869 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20870if (GTDI (tmp_tmp, 32767)) {
20871{
20872 {
20873 UHI opval = 32767;
20874 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20875 written |= (1 << 12);
20876 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20877 }
20878frvbf_media_overflow (current_cpu, 4);
20879}
20880} else {
20881if (LTDI (tmp_tmp, -32768)) {
20882{
20883 {
20884 UHI opval = -32768;
20885 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20886 written |= (1 << 12);
20887 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20888 }
20889frvbf_media_overflow (current_cpu, 4);
20890}
20891} else {
20892 {
20893 UHI opval = tmp_tmp;
20894 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20895 written |= (1 << 12);
20896 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20897 }
20898}
20899}
20900}
20901}
20902}
20903
20904 abuf->written = written;
20905 return vpc;
20906#undef FLD
20907}
20908
20909/* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20910
20911static SEM_PC
20912SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20913{
20914#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20916 int UNUSED written = 0;
20917 IADDR UNUSED pc = abuf->addr;
20918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20919
20920if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20921{
20922 UHI tmp_argihi;
20923 UHI tmp_argilo;
20924 UHI tmp_argjhi;
20925 UHI tmp_argjlo;
20926{
20927 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20928 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20929 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20930 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20931}
20932{
20933 DI tmp_tmp;
20934 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20935if (GTDI (tmp_tmp, 65535)) {
20936{
20937 {
20938 UHI opval = 65535;
20939 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20940 written |= (1 << 11);
20941 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20942 }
20943frvbf_media_overflow (current_cpu, 8);
20944}
20945} else {
20946if (LTDI (tmp_tmp, 0)) {
20947{
20948 {
20949 UHI opval = 0;
20950 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20951 written |= (1 << 11);
20952 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20953 }
20954frvbf_media_overflow (current_cpu, 8);
20955}
20956} else {
20957 {
20958 UHI opval = tmp_tmp;
20959 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20960 written |= (1 << 11);
20961 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20962 }
20963}
20964}
20965}
20966{
20967 DI tmp_tmp;
20968 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20969if (GTDI (tmp_tmp, 65535)) {
20970{
20971 {
20972 UHI opval = 65535;
20973 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20974 written |= (1 << 12);
20975 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20976 }
20977frvbf_media_overflow (current_cpu, 4);
20978}
20979} else {
20980if (LTDI (tmp_tmp, 0)) {
20981{
20982 {
20983 UHI opval = 0;
20984 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20985 written |= (1 << 12);
20986 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20987 }
20988frvbf_media_overflow (current_cpu, 4);
20989}
20990} else {
20991 {
20992 UHI opval = tmp_tmp;
20993 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20994 written |= (1 << 12);
20995 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20996 }
20997}
20998}
20999}
21000}
21001}
21002
21003 abuf->written = written;
21004 return vpc;
21005#undef FLD
21006}
21007
21008/* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21009
21010static SEM_PC
21011SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21012{
21013#define FLD(f) abuf->fields.sfmt_cmaddhss.f
21014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21015 int UNUSED written = 0;
21016 IADDR UNUSED pc = abuf->addr;
21017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21018
21019if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21020{
21021 HI tmp_argihi;
21022 HI tmp_argilo;
21023 HI tmp_argjhi;
21024 HI tmp_argjlo;
21025{
21026 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21027 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21028 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21029 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21030}
21031{
21032 DI tmp_tmp;
21033 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21034if (GTDI (tmp_tmp, 32767)) {
21035{
21036 {
21037 UHI opval = 32767;
21038 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21039 written |= (1 << 11);
21040 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21041 }
21042frvbf_media_overflow (current_cpu, 8);
21043}
21044} else {
21045if (LTDI (tmp_tmp, -32768)) {
21046{
21047 {
21048 UHI opval = -32768;
21049 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21050 written |= (1 << 11);
21051 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21052 }
21053frvbf_media_overflow (current_cpu, 8);
21054}
21055} else {
21056 {
21057 UHI opval = tmp_tmp;
21058 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21059 written |= (1 << 11);
21060 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21061 }
21062}
21063}
21064}
21065{
21066 DI tmp_tmp;
21067 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21068if (GTDI (tmp_tmp, 32767)) {
21069{
21070 {
21071 UHI opval = 32767;
21072 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21073 written |= (1 << 12);
21074 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21075 }
21076frvbf_media_overflow (current_cpu, 4);
21077}
21078} else {
21079if (LTDI (tmp_tmp, -32768)) {
21080{
21081 {
21082 UHI opval = -32768;
21083 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21084 written |= (1 << 12);
21085 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21086 }
21087frvbf_media_overflow (current_cpu, 4);
21088}
21089} else {
21090 {
21091 UHI opval = tmp_tmp;
21092 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21093 written |= (1 << 12);
21094 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21095 }
21096}
21097}
21098}
21099}
21100}
21101
21102 abuf->written = written;
21103 return vpc;
21104#undef FLD
21105}
21106
21107/* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21108
21109static SEM_PC
21110SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21111{
21112#define FLD(f) abuf->fields.sfmt_cmaddhss.f
21113 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21114 int UNUSED written = 0;
21115 IADDR UNUSED pc = abuf->addr;
21116 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21117
21118if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21119{
21120 UHI tmp_argihi;
21121 UHI tmp_argilo;
21122 UHI tmp_argjhi;
21123 UHI tmp_argjlo;
21124{
21125 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21126 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21127 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21128 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21129}
21130{
21131 DI tmp_tmp;
21132 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21133if (GTDI (tmp_tmp, 65535)) {
21134{
21135 {
21136 UHI opval = 65535;
21137 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21138 written |= (1 << 11);
21139 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21140 }
21141frvbf_media_overflow (current_cpu, 8);
21142}
21143} else {
21144if (LTDI (tmp_tmp, 0)) {
21145{
21146 {
21147 UHI opval = 0;
21148 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21149 written |= (1 << 11);
21150 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21151 }
21152frvbf_media_overflow (current_cpu, 8);
21153}
21154} else {
21155 {
21156 UHI opval = tmp_tmp;
21157 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21158 written |= (1 << 11);
21159 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21160 }
21161}
21162}
21163}
21164{
21165 DI tmp_tmp;
21166 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21167if (GTDI (tmp_tmp, 65535)) {
21168{
21169 {
21170 UHI opval = 65535;
21171 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21172 written |= (1 << 12);
21173 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21174 }
21175frvbf_media_overflow (current_cpu, 4);
21176}
21177} else {
21178if (LTDI (tmp_tmp, 0)) {
21179{
21180 {
21181 UHI opval = 0;
21182 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21183 written |= (1 << 12);
21184 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21185 }
21186frvbf_media_overflow (current_cpu, 4);
21187}
21188} else {
21189 {
21190 UHI opval = tmp_tmp;
21191 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21192 written |= (1 << 12);
21193 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21194 }
21195}
21196}
21197}
21198}
21199}
21200
21201 abuf->written = written;
21202 return vpc;
21203#undef FLD
21204}
21205
21206/* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21207
21208static SEM_PC
21209SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21210{
21211#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21213 int UNUSED written = 0;
21214 IADDR UNUSED pc = abuf->addr;
21215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21216
21217if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21218frvbf_media_register_not_aligned (current_cpu);
21219} else {
21220{
21221 HI tmp_argihi;
21222 HI tmp_argilo;
21223 HI tmp_argjhi;
21224 HI tmp_argjlo;
21225 {
21226 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21227 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21228 written |= (1 << 14);
21229 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21230 }
21231{
21232 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21233 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21234 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21235 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21236}
21237{
21238 DI tmp_tmp;
21239 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21240if (GTDI (tmp_tmp, 32767)) {
21241{
21242 {
21243 UHI opval = 32767;
21244 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21245 written |= (1 << 15);
21246 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21247 }
21248frvbf_media_overflow (current_cpu, 8);
21249}
21250} else {
21251if (LTDI (tmp_tmp, -32768)) {
21252{
21253 {
21254 UHI opval = -32768;
21255 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21256 written |= (1 << 15);
21257 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21258 }
21259frvbf_media_overflow (current_cpu, 8);
21260}
21261} else {
21262 {
21263 UHI opval = tmp_tmp;
21264 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21265 written |= (1 << 15);
21266 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21267 }
21268}
21269}
21270}
21271{
21272 DI tmp_tmp;
21273 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21274if (GTDI (tmp_tmp, 32767)) {
21275{
21276 {
21277 UHI opval = 32767;
21278 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21279 written |= (1 << 17);
21280 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21281 }
21282frvbf_media_overflow (current_cpu, 4);
21283}
21284} else {
21285if (LTDI (tmp_tmp, -32768)) {
21286{
21287 {
21288 UHI opval = -32768;
21289 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21290 written |= (1 << 17);
21291 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21292 }
21293frvbf_media_overflow (current_cpu, 4);
21294}
21295} else {
21296 {
21297 UHI opval = tmp_tmp;
21298 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21299 written |= (1 << 17);
21300 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21301 }
21302}
21303}
21304}
21305{
21306 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21307 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21308 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21309 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21310}
21311{
21312 DI tmp_tmp;
21313 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21314if (GTDI (tmp_tmp, 32767)) {
21315{
21316 {
21317 UHI opval = 32767;
21318 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21319 written |= (1 << 16);
21320 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21321 }
21322frvbf_media_overflow (current_cpu, 2);
21323}
21324} else {
21325if (LTDI (tmp_tmp, -32768)) {
21326{
21327 {
21328 UHI opval = -32768;
21329 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21330 written |= (1 << 16);
21331 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21332 }
21333frvbf_media_overflow (current_cpu, 2);
21334}
21335} else {
21336 {
21337 UHI opval = tmp_tmp;
21338 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21339 written |= (1 << 16);
21340 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21341 }
21342}
21343}
21344}
21345{
21346 DI tmp_tmp;
21347 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21348if (GTDI (tmp_tmp, 32767)) {
21349{
21350 {
21351 UHI opval = 32767;
21352 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21353 written |= (1 << 18);
21354 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21355 }
21356frvbf_media_overflow (current_cpu, 1);
21357}
21358} else {
21359if (LTDI (tmp_tmp, -32768)) {
21360{
21361 {
21362 UHI opval = -32768;
21363 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21364 written |= (1 << 18);
21365 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21366 }
21367frvbf_media_overflow (current_cpu, 1);
21368}
21369} else {
21370 {
21371 UHI opval = tmp_tmp;
21372 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21373 written |= (1 << 18);
21374 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21375 }
21376}
21377}
21378}
21379}
21380}
21381
21382 abuf->written = written;
21383 return vpc;
21384#undef FLD
21385}
21386
21387/* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21388
21389static SEM_PC
21390SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21391{
21392#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21393 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21394 int UNUSED written = 0;
21395 IADDR UNUSED pc = abuf->addr;
21396 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21397
21398if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21399frvbf_media_register_not_aligned (current_cpu);
21400} else {
21401{
21402 UHI tmp_argihi;
21403 UHI tmp_argilo;
21404 UHI tmp_argjhi;
21405 UHI tmp_argjlo;
21406 {
21407 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21408 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21409 written |= (1 << 14);
21410 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21411 }
21412{
21413 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21414 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21415 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21416 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21417}
21418{
21419 DI tmp_tmp;
21420 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21421if (GTDI (tmp_tmp, 65535)) {
21422{
21423 {
21424 UHI opval = 65535;
21425 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21426 written |= (1 << 15);
21427 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21428 }
21429frvbf_media_overflow (current_cpu, 8);
21430}
21431} else {
21432if (LTDI (tmp_tmp, 0)) {
21433{
21434 {
21435 UHI opval = 0;
21436 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21437 written |= (1 << 15);
21438 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21439 }
21440frvbf_media_overflow (current_cpu, 8);
21441}
21442} else {
21443 {
21444 UHI opval = tmp_tmp;
21445 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21446 written |= (1 << 15);
21447 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21448 }
21449}
21450}
21451}
21452{
21453 DI tmp_tmp;
21454 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21455if (GTDI (tmp_tmp, 65535)) {
21456{
21457 {
21458 UHI opval = 65535;
21459 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21460 written |= (1 << 17);
21461 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21462 }
21463frvbf_media_overflow (current_cpu, 4);
21464}
21465} else {
21466if (LTDI (tmp_tmp, 0)) {
21467{
21468 {
21469 UHI opval = 0;
21470 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21471 written |= (1 << 17);
21472 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21473 }
21474frvbf_media_overflow (current_cpu, 4);
21475}
21476} else {
21477 {
21478 UHI opval = tmp_tmp;
21479 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21480 written |= (1 << 17);
21481 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21482 }
21483}
21484}
21485}
21486{
21487 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21488 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21489 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21490 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21491}
21492{
21493 DI tmp_tmp;
21494 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21495if (GTDI (tmp_tmp, 65535)) {
21496{
21497 {
21498 UHI opval = 65535;
21499 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21500 written |= (1 << 16);
21501 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21502 }
21503frvbf_media_overflow (current_cpu, 2);
21504}
21505} else {
21506if (LTDI (tmp_tmp, 0)) {
21507{
21508 {
21509 UHI opval = 0;
21510 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21511 written |= (1 << 16);
21512 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21513 }
21514frvbf_media_overflow (current_cpu, 2);
21515}
21516} else {
21517 {
21518 UHI opval = tmp_tmp;
21519 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21520 written |= (1 << 16);
21521 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21522 }
21523}
21524}
21525}
21526{
21527 DI tmp_tmp;
21528 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21529if (GTDI (tmp_tmp, 65535)) {
21530{
21531 {
21532 UHI opval = 65535;
21533 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21534 written |= (1 << 18);
21535 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21536 }
21537frvbf_media_overflow (current_cpu, 1);
21538}
21539} else {
21540if (LTDI (tmp_tmp, 0)) {
21541{
21542 {
21543 UHI opval = 0;
21544 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21545 written |= (1 << 18);
21546 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21547 }
21548frvbf_media_overflow (current_cpu, 1);
21549}
21550} else {
21551 {
21552 UHI opval = tmp_tmp;
21553 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21554 written |= (1 << 18);
21555 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21556 }
21557}
21558}
21559}
21560}
21561}
21562
21563 abuf->written = written;
21564 return vpc;
21565#undef FLD
21566}
21567
21568/* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21569
21570static SEM_PC
21571SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21572{
21573#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21574 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21575 int UNUSED written = 0;
21576 IADDR UNUSED pc = abuf->addr;
21577 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21578
21579if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21580frvbf_media_register_not_aligned (current_cpu);
21581} else {
21582{
21583 HI tmp_argihi;
21584 HI tmp_argilo;
21585 HI tmp_argjhi;
21586 HI tmp_argjlo;
21587 {
21588 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21589 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21590 written |= (1 << 14);
21591 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21592 }
21593{
21594 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21595 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21596 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21597 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21598}
21599{
21600 DI tmp_tmp;
21601 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21602if (GTDI (tmp_tmp, 32767)) {
21603{
21604 {
21605 UHI opval = 32767;
21606 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21607 written |= (1 << 15);
21608 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21609 }
21610frvbf_media_overflow (current_cpu, 8);
21611}
21612} else {
21613if (LTDI (tmp_tmp, -32768)) {
21614{
21615 {
21616 UHI opval = -32768;
21617 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21618 written |= (1 << 15);
21619 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21620 }
21621frvbf_media_overflow (current_cpu, 8);
21622}
21623} else {
21624 {
21625 UHI opval = tmp_tmp;
21626 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21627 written |= (1 << 15);
21628 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21629 }
21630}
21631}
21632}
21633{
21634 DI tmp_tmp;
21635 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21636if (GTDI (tmp_tmp, 32767)) {
21637{
21638 {
21639 UHI opval = 32767;
21640 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21641 written |= (1 << 17);
21642 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21643 }
21644frvbf_media_overflow (current_cpu, 4);
21645}
21646} else {
21647if (LTDI (tmp_tmp, -32768)) {
21648{
21649 {
21650 UHI opval = -32768;
21651 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21652 written |= (1 << 17);
21653 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21654 }
21655frvbf_media_overflow (current_cpu, 4);
21656}
21657} else {
21658 {
21659 UHI opval = tmp_tmp;
21660 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21661 written |= (1 << 17);
21662 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21663 }
21664}
21665}
21666}
21667{
21668 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21669 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21670 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21671 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21672}
21673{
21674 DI tmp_tmp;
21675 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21676if (GTDI (tmp_tmp, 32767)) {
21677{
21678 {
21679 UHI opval = 32767;
21680 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21681 written |= (1 << 16);
21682 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21683 }
21684frvbf_media_overflow (current_cpu, 2);
21685}
21686} else {
21687if (LTDI (tmp_tmp, -32768)) {
21688{
21689 {
21690 UHI opval = -32768;
21691 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21692 written |= (1 << 16);
21693 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21694 }
21695frvbf_media_overflow (current_cpu, 2);
21696}
21697} else {
21698 {
21699 UHI opval = tmp_tmp;
21700 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21701 written |= (1 << 16);
21702 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21703 }
21704}
21705}
21706}
21707{
21708 DI tmp_tmp;
21709 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21710if (GTDI (tmp_tmp, 32767)) {
21711{
21712 {
21713 UHI opval = 32767;
21714 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21715 written |= (1 << 18);
21716 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21717 }
21718frvbf_media_overflow (current_cpu, 1);
21719}
21720} else {
21721if (LTDI (tmp_tmp, -32768)) {
21722{
21723 {
21724 UHI opval = -32768;
21725 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21726 written |= (1 << 18);
21727 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21728 }
21729frvbf_media_overflow (current_cpu, 1);
21730}
21731} else {
21732 {
21733 UHI opval = tmp_tmp;
21734 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21735 written |= (1 << 18);
21736 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21737 }
21738}
21739}
21740}
21741}
21742}
21743
21744 abuf->written = written;
21745 return vpc;
21746#undef FLD
21747}
21748
21749/* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21750
21751static SEM_PC
21752SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21753{
21754#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21756 int UNUSED written = 0;
21757 IADDR UNUSED pc = abuf->addr;
21758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21759
21760if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21761frvbf_media_register_not_aligned (current_cpu);
21762} else {
21763{
21764 UHI tmp_argihi;
21765 UHI tmp_argilo;
21766 UHI tmp_argjhi;
21767 UHI tmp_argjlo;
21768 {
21769 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21770 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21771 written |= (1 << 14);
21772 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21773 }
21774{
21775 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21776 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21777 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21778 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21779}
21780{
21781 DI tmp_tmp;
21782 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21783if (GTDI (tmp_tmp, 65535)) {
21784{
21785 {
21786 UHI opval = 65535;
21787 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21788 written |= (1 << 15);
21789 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21790 }
21791frvbf_media_overflow (current_cpu, 8);
21792}
21793} else {
21794if (LTDI (tmp_tmp, 0)) {
21795{
21796 {
21797 UHI opval = 0;
21798 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21799 written |= (1 << 15);
21800 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21801 }
21802frvbf_media_overflow (current_cpu, 8);
21803}
21804} else {
21805 {
21806 UHI opval = tmp_tmp;
21807 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21808 written |= (1 << 15);
21809 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21810 }
21811}
21812}
21813}
21814{
21815 DI tmp_tmp;
21816 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21817if (GTDI (tmp_tmp, 65535)) {
21818{
21819 {
21820 UHI opval = 65535;
21821 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21822 written |= (1 << 17);
21823 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21824 }
21825frvbf_media_overflow (current_cpu, 4);
21826}
21827} else {
21828if (LTDI (tmp_tmp, 0)) {
21829{
21830 {
21831 UHI opval = 0;
21832 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21833 written |= (1 << 17);
21834 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21835 }
21836frvbf_media_overflow (current_cpu, 4);
21837}
21838} else {
21839 {
21840 UHI opval = tmp_tmp;
21841 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21842 written |= (1 << 17);
21843 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21844 }
21845}
21846}
21847}
21848{
21849 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21850 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21851 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21852 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21853}
21854{
21855 DI tmp_tmp;
21856 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21857if (GTDI (tmp_tmp, 65535)) {
21858{
21859 {
21860 UHI opval = 65535;
21861 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21862 written |= (1 << 16);
21863 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21864 }
21865frvbf_media_overflow (current_cpu, 2);
21866}
21867} else {
21868if (LTDI (tmp_tmp, 0)) {
21869{
21870 {
21871 UHI opval = 0;
21872 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21873 written |= (1 << 16);
21874 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21875 }
21876frvbf_media_overflow (current_cpu, 2);
21877}
21878} else {
21879 {
21880 UHI opval = tmp_tmp;
21881 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21882 written |= (1 << 16);
21883 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21884 }
21885}
21886}
21887}
21888{
21889 DI tmp_tmp;
21890 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21891if (GTDI (tmp_tmp, 65535)) {
21892{
21893 {
21894 UHI opval = 65535;
21895 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21896 written |= (1 << 18);
21897 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21898 }
21899frvbf_media_overflow (current_cpu, 1);
21900}
21901} else {
21902if (LTDI (tmp_tmp, 0)) {
21903{
21904 {
21905 UHI opval = 0;
21906 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21907 written |= (1 << 18);
21908 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21909 }
21910frvbf_media_overflow (current_cpu, 1);
21911}
21912} else {
21913 {
21914 UHI opval = tmp_tmp;
21915 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21916 written |= (1 << 18);
21917 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21918 }
21919}
21920}
21921}
21922}
21923}
21924
21925 abuf->written = written;
21926 return vpc;
21927#undef FLD
21928}
21929
21930/* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21931
21932static SEM_PC
21933SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21934{
21935#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21937 int UNUSED written = 0;
21938 IADDR UNUSED pc = abuf->addr;
21939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21940
21941if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21942frvbf_media_register_not_aligned (current_cpu);
21943} else {
21944if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21945{
21946 HI tmp_argihi;
21947 HI tmp_argilo;
21948 HI tmp_argjhi;
21949 HI tmp_argjlo;
21950 {
21951 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21952 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21953 written |= (1 << 16);
21954 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21955 }
21956{
21957 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21958 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21959 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21960 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21961}
21962{
21963 DI tmp_tmp;
21964 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21965if (GTDI (tmp_tmp, 32767)) {
21966{
21967 {
21968 UHI opval = 32767;
21969 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21970 written |= (1 << 17);
21971 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21972 }
21973frvbf_media_overflow (current_cpu, 8);
21974}
21975} else {
21976if (LTDI (tmp_tmp, -32768)) {
21977{
21978 {
21979 UHI opval = -32768;
21980 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21981 written |= (1 << 17);
21982 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21983 }
21984frvbf_media_overflow (current_cpu, 8);
21985}
21986} else {
21987 {
21988 UHI opval = tmp_tmp;
21989 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21990 written |= (1 << 17);
21991 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21992 }
21993}
21994}
21995}
21996{
21997 DI tmp_tmp;
21998 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21999if (GTDI (tmp_tmp, 32767)) {
22000{
22001 {
22002 UHI opval = 32767;
22003 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22004 written |= (1 << 19);
22005 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22006 }
22007frvbf_media_overflow (current_cpu, 4);
22008}
22009} else {
22010if (LTDI (tmp_tmp, -32768)) {
22011{
22012 {
22013 UHI opval = -32768;
22014 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22015 written |= (1 << 19);
22016 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22017 }
22018frvbf_media_overflow (current_cpu, 4);
22019}
22020} else {
22021 {
22022 UHI opval = tmp_tmp;
22023 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22024 written |= (1 << 19);
22025 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22026 }
22027}
22028}
22029}
22030{
22031 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22032 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22033 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22034 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22035}
22036{
22037 DI tmp_tmp;
22038 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22039if (GTDI (tmp_tmp, 32767)) {
22040{
22041 {
22042 UHI opval = 32767;
22043 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22044 written |= (1 << 18);
22045 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22046 }
22047frvbf_media_overflow (current_cpu, 2);
22048}
22049} else {
22050if (LTDI (tmp_tmp, -32768)) {
22051{
22052 {
22053 UHI opval = -32768;
22054 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22055 written |= (1 << 18);
22056 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22057 }
22058frvbf_media_overflow (current_cpu, 2);
22059}
22060} else {
22061 {
22062 UHI opval = tmp_tmp;
22063 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22064 written |= (1 << 18);
22065 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22066 }
22067}
22068}
22069}
22070{
22071 DI tmp_tmp;
22072 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22073if (GTDI (tmp_tmp, 32767)) {
22074{
22075 {
22076 UHI opval = 32767;
22077 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22078 written |= (1 << 20);
22079 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22080 }
22081frvbf_media_overflow (current_cpu, 1);
22082}
22083} else {
22084if (LTDI (tmp_tmp, -32768)) {
22085{
22086 {
22087 UHI opval = -32768;
22088 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22089 written |= (1 << 20);
22090 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22091 }
22092frvbf_media_overflow (current_cpu, 1);
22093}
22094} else {
22095 {
22096 UHI opval = tmp_tmp;
22097 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22098 written |= (1 << 20);
22099 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22100 }
22101}
22102}
22103}
22104}
22105}
22106}
22107
22108 abuf->written = written;
22109 return vpc;
22110#undef FLD
22111}
22112
22113/* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22114
22115static SEM_PC
22116SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22117{
22118#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22120 int UNUSED written = 0;
22121 IADDR UNUSED pc = abuf->addr;
22122 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22123
22124if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22125frvbf_media_register_not_aligned (current_cpu);
22126} else {
22127if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22128{
22129 UHI tmp_argihi;
22130 UHI tmp_argilo;
22131 UHI tmp_argjhi;
22132 UHI tmp_argjlo;
22133 {
22134 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22135 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22136 written |= (1 << 16);
22137 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22138 }
22139{
22140 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22141 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22142 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22143 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22144}
22145{
22146 DI tmp_tmp;
22147 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22148if (GTDI (tmp_tmp, 65535)) {
22149{
22150 {
22151 UHI opval = 65535;
22152 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22153 written |= (1 << 17);
22154 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22155 }
22156frvbf_media_overflow (current_cpu, 8);
22157}
22158} else {
22159if (LTDI (tmp_tmp, 0)) {
22160{
22161 {
22162 UHI opval = 0;
22163 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22164 written |= (1 << 17);
22165 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22166 }
22167frvbf_media_overflow (current_cpu, 8);
22168}
22169} else {
22170 {
22171 UHI opval = tmp_tmp;
22172 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22173 written |= (1 << 17);
22174 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22175 }
22176}
22177}
22178}
22179{
22180 DI tmp_tmp;
22181 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22182if (GTDI (tmp_tmp, 65535)) {
22183{
22184 {
22185 UHI opval = 65535;
22186 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22187 written |= (1 << 19);
22188 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22189 }
22190frvbf_media_overflow (current_cpu, 4);
22191}
22192} else {
22193if (LTDI (tmp_tmp, 0)) {
22194{
22195 {
22196 UHI opval = 0;
22197 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22198 written |= (1 << 19);
22199 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22200 }
22201frvbf_media_overflow (current_cpu, 4);
22202}
22203} else {
22204 {
22205 UHI opval = tmp_tmp;
22206 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22207 written |= (1 << 19);
22208 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22209 }
22210}
22211}
22212}
22213{
22214 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22215 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22216 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22217 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22218}
22219{
22220 DI tmp_tmp;
22221 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22222if (GTDI (tmp_tmp, 65535)) {
22223{
22224 {
22225 UHI opval = 65535;
22226 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22227 written |= (1 << 18);
22228 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22229 }
22230frvbf_media_overflow (current_cpu, 2);
22231}
22232} else {
22233if (LTDI (tmp_tmp, 0)) {
22234{
22235 {
22236 UHI opval = 0;
22237 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22238 written |= (1 << 18);
22239 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22240 }
22241frvbf_media_overflow (current_cpu, 2);
22242}
22243} else {
22244 {
22245 UHI opval = tmp_tmp;
22246 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22247 written |= (1 << 18);
22248 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22249 }
22250}
22251}
22252}
22253{
22254 DI tmp_tmp;
22255 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22256if (GTDI (tmp_tmp, 65535)) {
22257{
22258 {
22259 UHI opval = 65535;
22260 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22261 written |= (1 << 20);
22262 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22263 }
22264frvbf_media_overflow (current_cpu, 1);
22265}
22266} else {
22267if (LTDI (tmp_tmp, 0)) {
22268{
22269 {
22270 UHI opval = 0;
22271 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22272 written |= (1 << 20);
22273 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22274 }
22275frvbf_media_overflow (current_cpu, 1);
22276}
22277} else {
22278 {
22279 UHI opval = tmp_tmp;
22280 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22281 written |= (1 << 20);
22282 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22283 }
22284}
22285}
22286}
22287}
22288}
22289}
22290
22291 abuf->written = written;
22292 return vpc;
22293#undef FLD
22294}
22295
22296/* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22297
22298static SEM_PC
22299SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22300{
22301#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22303 int UNUSED written = 0;
22304 IADDR UNUSED pc = abuf->addr;
22305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22306
22307if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22308frvbf_media_register_not_aligned (current_cpu);
22309} else {
22310if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22311{
22312 HI tmp_argihi;
22313 HI tmp_argilo;
22314 HI tmp_argjhi;
22315 HI tmp_argjlo;
22316 {
22317 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22318 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22319 written |= (1 << 16);
22320 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22321 }
22322{
22323 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22324 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22325 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22326 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22327}
22328{
22329 DI tmp_tmp;
22330 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22331if (GTDI (tmp_tmp, 32767)) {
22332{
22333 {
22334 UHI opval = 32767;
22335 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22336 written |= (1 << 17);
22337 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22338 }
22339frvbf_media_overflow (current_cpu, 8);
22340}
22341} else {
22342if (LTDI (tmp_tmp, -32768)) {
22343{
22344 {
22345 UHI opval = -32768;
22346 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22347 written |= (1 << 17);
22348 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22349 }
22350frvbf_media_overflow (current_cpu, 8);
22351}
22352} else {
22353 {
22354 UHI opval = tmp_tmp;
22355 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22356 written |= (1 << 17);
22357 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22358 }
22359}
22360}
22361}
22362{
22363 DI tmp_tmp;
22364 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22365if (GTDI (tmp_tmp, 32767)) {
22366{
22367 {
22368 UHI opval = 32767;
22369 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22370 written |= (1 << 19);
22371 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22372 }
22373frvbf_media_overflow (current_cpu, 4);
22374}
22375} else {
22376if (LTDI (tmp_tmp, -32768)) {
22377{
22378 {
22379 UHI opval = -32768;
22380 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22381 written |= (1 << 19);
22382 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22383 }
22384frvbf_media_overflow (current_cpu, 4);
22385}
22386} else {
22387 {
22388 UHI opval = tmp_tmp;
22389 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22390 written |= (1 << 19);
22391 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22392 }
22393}
22394}
22395}
22396{
22397 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22398 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22399 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22400 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22401}
22402{
22403 DI tmp_tmp;
22404 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22405if (GTDI (tmp_tmp, 32767)) {
22406{
22407 {
22408 UHI opval = 32767;
22409 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22410 written |= (1 << 18);
22411 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22412 }
22413frvbf_media_overflow (current_cpu, 2);
22414}
22415} else {
22416if (LTDI (tmp_tmp, -32768)) {
22417{
22418 {
22419 UHI opval = -32768;
22420 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22421 written |= (1 << 18);
22422 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22423 }
22424frvbf_media_overflow (current_cpu, 2);
22425}
22426} else {
22427 {
22428 UHI opval = tmp_tmp;
22429 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22430 written |= (1 << 18);
22431 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22432 }
22433}
22434}
22435}
22436{
22437 DI tmp_tmp;
22438 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22439if (GTDI (tmp_tmp, 32767)) {
22440{
22441 {
22442 UHI opval = 32767;
22443 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22444 written |= (1 << 20);
22445 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22446 }
22447frvbf_media_overflow (current_cpu, 1);
22448}
22449} else {
22450if (LTDI (tmp_tmp, -32768)) {
22451{
22452 {
22453 UHI opval = -32768;
22454 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22455 written |= (1 << 20);
22456 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22457 }
22458frvbf_media_overflow (current_cpu, 1);
22459}
22460} else {
22461 {
22462 UHI opval = tmp_tmp;
22463 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22464 written |= (1 << 20);
22465 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22466 }
22467}
22468}
22469}
22470}
22471}
22472}
22473
22474 abuf->written = written;
22475 return vpc;
22476#undef FLD
22477}
22478
22479/* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22480
22481static SEM_PC
22482SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22483{
22484#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22486 int UNUSED written = 0;
22487 IADDR UNUSED pc = abuf->addr;
22488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22489
22490if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22491frvbf_media_register_not_aligned (current_cpu);
22492} else {
22493if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22494{
22495 UHI tmp_argihi;
22496 UHI tmp_argilo;
22497 UHI tmp_argjhi;
22498 UHI tmp_argjlo;
22499 {
22500 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22501 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22502 written |= (1 << 16);
22503 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22504 }
22505{
22506 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22507 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22508 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22509 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22510}
22511{
22512 DI tmp_tmp;
22513 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22514if (GTDI (tmp_tmp, 65535)) {
22515{
22516 {
22517 UHI opval = 65535;
22518 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22519 written |= (1 << 17);
22520 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22521 }
22522frvbf_media_overflow (current_cpu, 8);
22523}
22524} else {
22525if (LTDI (tmp_tmp, 0)) {
22526{
22527 {
22528 UHI opval = 0;
22529 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22530 written |= (1 << 17);
22531 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22532 }
22533frvbf_media_overflow (current_cpu, 8);
22534}
22535} else {
22536 {
22537 UHI opval = tmp_tmp;
22538 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22539 written |= (1 << 17);
22540 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22541 }
22542}
22543}
22544}
22545{
22546 DI tmp_tmp;
22547 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22548if (GTDI (tmp_tmp, 65535)) {
22549{
22550 {
22551 UHI opval = 65535;
22552 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22553 written |= (1 << 19);
22554 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22555 }
22556frvbf_media_overflow (current_cpu, 4);
22557}
22558} else {
22559if (LTDI (tmp_tmp, 0)) {
22560{
22561 {
22562 UHI opval = 0;
22563 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22564 written |= (1 << 19);
22565 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22566 }
22567frvbf_media_overflow (current_cpu, 4);
22568}
22569} else {
22570 {
22571 UHI opval = tmp_tmp;
22572 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22573 written |= (1 << 19);
22574 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22575 }
22576}
22577}
22578}
22579{
22580 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22581 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22582 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22583 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22584}
22585{
22586 DI tmp_tmp;
22587 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22588if (GTDI (tmp_tmp, 65535)) {
22589{
22590 {
22591 UHI opval = 65535;
22592 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22593 written |= (1 << 18);
22594 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22595 }
22596frvbf_media_overflow (current_cpu, 2);
22597}
22598} else {
22599if (LTDI (tmp_tmp, 0)) {
22600{
22601 {
22602 UHI opval = 0;
22603 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22604 written |= (1 << 18);
22605 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22606 }
22607frvbf_media_overflow (current_cpu, 2);
22608}
22609} else {
22610 {
22611 UHI opval = tmp_tmp;
22612 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22613 written |= (1 << 18);
22614 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22615 }
22616}
22617}
22618}
22619{
22620 DI tmp_tmp;
22621 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22622if (GTDI (tmp_tmp, 65535)) {
22623{
22624 {
22625 UHI opval = 65535;
22626 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22627 written |= (1 << 20);
22628 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22629 }
22630frvbf_media_overflow (current_cpu, 1);
22631}
22632} else {
22633if (LTDI (tmp_tmp, 0)) {
22634{
22635 {
22636 UHI opval = 0;
22637 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22638 written |= (1 << 20);
22639 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22640 }
22641frvbf_media_overflow (current_cpu, 1);
22642}
22643} else {
22644 {
22645 UHI opval = tmp_tmp;
22646 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22647 written |= (1 << 20);
22648 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22649 }
22650}
22651}
22652}
22653}
22654}
22655}
22656
22657 abuf->written = written;
22658 return vpc;
22659#undef FLD
22660}
22661
676a64f4
RS
22662/* mqlclrhs: mqlclrhs$pack $FRintieven,$FRintjeven,$FRintkeven */
22663
22664static SEM_PC
22665SEM_FN_NAME (frvbf,mqlclrhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22666{
22667#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22669 int UNUSED written = 0;
22670 IADDR UNUSED pc = abuf->addr;
22671 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22672
22673if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22674frvbf_media_register_not_aligned (current_cpu);
22675} else {
22676{
22677 HI tmp_a1;
22678 HI tmp_a2;
22679 HI tmp_a3;
22680 HI tmp_a4;
22681 HI tmp_b1;
22682 HI tmp_b2;
22683 HI tmp_b3;
22684 HI tmp_b4;
22685 {
22686 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22687 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22688 written |= (1 << 14);
22689 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22690 }
22691{
22692 tmp_a1 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22693 tmp_a2 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22694 tmp_b1 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22695 tmp_b2 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22696}
22697{
22698 tmp_a3 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22699 tmp_a4 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22700 tmp_b3 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22701 tmp_b4 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22702}
22703 {
22704 UHI opval = (LEUHI (ABSHI (tmp_a1), ABSHI (tmp_b1))) ? (0) : (LEHI (0, tmp_b1)) ? (tmp_a1) : (EQHI (tmp_a1, -32768)) ? (32767) : (NEGHI (tmp_a1));
22705 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22706 written |= (1 << 15);
22707 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22708 }
22709 {
22710 UHI opval = (LEUHI (ABSHI (tmp_a2), ABSHI (tmp_b2))) ? (0) : (LEHI (0, tmp_b2)) ? (tmp_a2) : (EQHI (tmp_a2, -32768)) ? (32767) : (NEGHI (tmp_a2));
22711 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22712 written |= (1 << 17);
22713 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22714 }
22715 {
22716 UHI opval = (LEUHI (ABSHI (tmp_a3), ABSHI (tmp_b3))) ? (0) : (LEHI (0, tmp_b3)) ? (tmp_a3) : (EQHI (tmp_a3, -32768)) ? (32767) : (NEGHI (tmp_a3));
22717 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22718 written |= (1 << 16);
22719 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22720 }
22721 {
22722 UHI opval = (LEUHI (ABSHI (tmp_a4), ABSHI (tmp_b4))) ? (0) : (LEHI (0, tmp_b4)) ? (tmp_a4) : (EQHI (tmp_a4, -32768)) ? (32767) : (NEGHI (tmp_a4));
22723 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22724 written |= (1 << 18);
22725 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22726 }
22727}
22728}
22729
22730 abuf->written = written;
22731 return vpc;
22732#undef FLD
22733}
22734
22735/* mqlmths: mqlmths$pack $FRintieven,$FRintjeven,$FRintkeven */
22736
22737static SEM_PC
22738SEM_FN_NAME (frvbf,mqlmths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22739{
22740#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22741 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22742 int UNUSED written = 0;
22743 IADDR UNUSED pc = abuf->addr;
22744 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22745
22746if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22747frvbf_media_register_not_aligned (current_cpu);
22748} else {
22749{
22750 HI tmp_a1;
22751 HI tmp_a2;
22752 HI tmp_a3;
22753 HI tmp_a4;
22754 HI tmp_b1;
22755 HI tmp_b2;
22756 HI tmp_b3;
22757 HI tmp_b4;
22758 {
22759 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22760 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22761 written |= (1 << 14);
22762 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22763 }
22764{
22765 tmp_a1 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22766 tmp_a2 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22767 tmp_b1 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22768 tmp_b2 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22769}
22770{
22771 tmp_a3 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22772 tmp_a4 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22773 tmp_b3 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22774 tmp_b4 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22775}
22776 {
22777 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));
22778 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22779 written |= (1 << 15);
22780 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22781 }
22782 {
22783 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));
22784 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22785 written |= (1 << 17);
22786 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22787 }
22788 {
22789 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));
22790 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22791 written |= (1 << 16);
22792 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22793 }
22794 {
22795 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));
22796 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22797 written |= (1 << 18);
22798 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22799 }
22800}
22801}
22802
22803 abuf->written = written;
22804 return vpc;
22805#undef FLD
22806}
22807
22808/* mqsllhi: mqsllhi$pack $FRintieven,$u6,$FRintkeven */
22809
22810static SEM_PC
22811SEM_FN_NAME (frvbf,mqsllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22812{
22813#define FLD(f) abuf->fields.sfmt_mqsllhi.f
22814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22815 int UNUSED written = 0;
22816 IADDR UNUSED pc = abuf->addr;
22817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22818
22819if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22820frvbf_media_register_not_aligned (current_cpu);
22821} else {
22822{
22823 {
22824 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22825 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22826 written |= (1 << 9);
22827 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22828 }
22829 {
22830 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22831 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22832 written |= (1 << 10);
22833 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22834 }
22835 {
22836 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22837 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22838 written |= (1 << 11);
22839 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22840 }
22841 {
22842 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22843 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22844 written |= (1 << 13);
22845 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22846 }
22847 {
22848 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22849 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22850 written |= (1 << 12);
22851 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22852 }
22853 {
22854 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22855 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22856 written |= (1 << 14);
22857 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22858 }
22859}
22860}
22861
22862 abuf->written = written;
22863 return vpc;
22864#undef FLD
22865}
22866
22867/* mqsrahi: mqsrahi$pack $FRintieven,$u6,$FRintkeven */
22868
22869static SEM_PC
22870SEM_FN_NAME (frvbf,mqsrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22871{
22872#define FLD(f) abuf->fields.sfmt_mqsllhi.f
22873 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22874 int UNUSED written = 0;
22875 IADDR UNUSED pc = abuf->addr;
22876 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22877
22878if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22879frvbf_media_register_not_aligned (current_cpu);
22880} else {
22881{
22882 {
22883 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22884 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22885 written |= (1 << 9);
22886 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22887 }
22888 {
22889 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22890 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22891 written |= (1 << 10);
22892 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22893 }
22894 {
22895 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22896 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22897 written |= (1 << 11);
22898 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22899 }
22900 {
22901 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22902 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22903 written |= (1 << 13);
22904 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22905 }
22906 {
22907 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22908 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22909 written |= (1 << 12);
22910 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22911 }
22912 {
22913 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22914 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22915 written |= (1 << 14);
22916 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22917 }
22918}
22919}
22920
22921 abuf->written = written;
22922 return vpc;
22923#undef FLD
22924}
22925
b34f6357
DB
22926/* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22927
22928static SEM_PC
22929SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22930{
22931#define FLD(f) abuf->fields.sfmt_mdasaccs.f
22932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22933 int UNUSED written = 0;
22934 IADDR UNUSED pc = abuf->addr;
22935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22936
e930b1f5
DB
22937if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22938if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
22939if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22940frvbf_media_acc_not_aligned (current_cpu);
22941} else {
22942{
22943 DI tmp_tmp;
22944 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22945if (GTDI (tmp_tmp, 549755813887)) {
22946{
22947 {
22948 DI opval = 549755813887;
22949 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22950 written |= (1 << 4);
b34f6357
DB
22951 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22952 }
22953frvbf_media_overflow (current_cpu, 8);
22954}
22955} else {
22956if (LTDI (tmp_tmp, INVDI (549755813887))) {
22957{
22958 {
22959 DI opval = INVDI (549755813887);
22960 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22961 written |= (1 << 4);
b34f6357
DB
22962 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22963 }
22964frvbf_media_overflow (current_cpu, 8);
22965}
22966} else {
22967 {
22968 DI opval = tmp_tmp;
22969 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22970 written |= (1 << 4);
b34f6357
DB
22971 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22972 }
22973}
22974}
22975}
e930b1f5
DB
22976}
22977}
b34f6357
DB
22978}
22979
22980 abuf->written = written;
22981 return vpc;
22982#undef FLD
22983}
22984
22985/* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22986
22987static SEM_PC
22988SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22989{
22990#define FLD(f) abuf->fields.sfmt_mdasaccs.f
22991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22992 int UNUSED written = 0;
22993 IADDR UNUSED pc = abuf->addr;
22994 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22995
e930b1f5
DB
22996if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22997if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
22998if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22999frvbf_media_acc_not_aligned (current_cpu);
23000} else {
23001{
23002 DI tmp_tmp;
23003 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23004if (GTDI (tmp_tmp, 549755813887)) {
23005{
23006 {
23007 DI opval = 549755813887;
23008 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23009 written |= (1 << 4);
b34f6357
DB
23010 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23011 }
23012frvbf_media_overflow (current_cpu, 8);
23013}
23014} else {
23015if (LTDI (tmp_tmp, INVDI (549755813887))) {
23016{
23017 {
23018 DI opval = INVDI (549755813887);
23019 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23020 written |= (1 << 4);
b34f6357
DB
23021 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23022 }
23023frvbf_media_overflow (current_cpu, 8);
23024}
23025} else {
23026 {
23027 DI opval = tmp_tmp;
23028 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23029 written |= (1 << 4);
b34f6357
DB
23030 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23031 }
23032}
23033}
23034}
e930b1f5
DB
23035}
23036}
b34f6357
DB
23037}
23038
23039 abuf->written = written;
23040 return vpc;
23041#undef FLD
23042}
23043
23044/* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
23045
23046static SEM_PC
23047SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23048{
23049#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23051 int UNUSED written = 0;
23052 IADDR UNUSED pc = abuf->addr;
23053 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23054
e930b1f5
DB
23055if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23056if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23057if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23058frvbf_media_acc_not_aligned (current_cpu);
23059} else {
23060if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23061frvbf_media_acc_not_aligned (current_cpu);
23062} else {
23063{
23064{
23065 DI tmp_tmp;
23066 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23067if (GTDI (tmp_tmp, 549755813887)) {
23068{
23069 {
23070 DI opval = 549755813887;
23071 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23072 written |= (1 << 6);
23073 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23074 }
23075frvbf_media_overflow (current_cpu, 8);
23076}
23077} else {
23078if (LTDI (tmp_tmp, INVDI (549755813887))) {
23079{
23080 {
23081 DI opval = INVDI (549755813887);
23082 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23083 written |= (1 << 6);
23084 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23085 }
23086frvbf_media_overflow (current_cpu, 8);
23087}
23088} else {
23089 {
23090 DI opval = tmp_tmp;
23091 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23092 written |= (1 << 6);
23093 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23094 }
23095}
23096}
23097}
23098{
23099 DI tmp_tmp;
23100 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23101if (GTDI (tmp_tmp, 549755813887)) {
23102{
23103 {
23104 DI opval = 549755813887;
23105 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23106 written |= (1 << 7);
23107 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23108 }
23109frvbf_media_overflow (current_cpu, 4);
23110}
23111} else {
23112if (LTDI (tmp_tmp, INVDI (549755813887))) {
23113{
23114 {
23115 DI opval = INVDI (549755813887);
23116 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23117 written |= (1 << 7);
23118 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23119 }
23120frvbf_media_overflow (current_cpu, 4);
23121}
23122} else {
23123 {
23124 DI opval = tmp_tmp;
23125 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23126 written |= (1 << 7);
23127 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23128 }
23129}
23130}
23131}
23132}
23133}
e930b1f5
DB
23134}
23135}
b34f6357
DB
23136}
23137
23138 abuf->written = written;
23139 return vpc;
23140#undef FLD
23141}
23142
23143/* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23144
23145static SEM_PC
23146SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23147{
23148#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23149 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23150 int UNUSED written = 0;
23151 IADDR UNUSED pc = abuf->addr;
23152 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23153
e930b1f5
DB
23154if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23155if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23156if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23157frvbf_media_acc_not_aligned (current_cpu);
23158} else {
23159if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23160frvbf_media_acc_not_aligned (current_cpu);
23161} else {
23162{
23163{
23164 DI tmp_tmp;
23165 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23166if (GTDI (tmp_tmp, 549755813887)) {
23167{
23168 {
23169 DI opval = 549755813887;
23170 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23171 written |= (1 << 6);
23172 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23173 }
23174frvbf_media_overflow (current_cpu, 8);
23175}
23176} else {
23177if (LTDI (tmp_tmp, INVDI (549755813887))) {
23178{
23179 {
23180 DI opval = INVDI (549755813887);
23181 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23182 written |= (1 << 6);
23183 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23184 }
23185frvbf_media_overflow (current_cpu, 8);
23186}
23187} else {
23188 {
23189 DI opval = tmp_tmp;
23190 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23191 written |= (1 << 6);
23192 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23193 }
23194}
23195}
23196}
23197{
23198 DI tmp_tmp;
23199 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23200if (GTDI (tmp_tmp, 549755813887)) {
23201{
23202 {
23203 DI opval = 549755813887;
23204 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23205 written |= (1 << 7);
23206 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23207 }
23208frvbf_media_overflow (current_cpu, 4);
23209}
23210} else {
23211if (LTDI (tmp_tmp, INVDI (549755813887))) {
23212{
23213 {
23214 DI opval = INVDI (549755813887);
23215 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23216 written |= (1 << 7);
23217 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23218 }
23219frvbf_media_overflow (current_cpu, 4);
23220}
23221} else {
23222 {
23223 DI opval = tmp_tmp;
23224 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23225 written |= (1 << 7);
23226 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23227 }
23228}
23229}
23230}
23231}
23232}
e930b1f5
DB
23233}
23234}
b34f6357
DB
23235}
23236
23237 abuf->written = written;
23238 return vpc;
23239#undef FLD
23240}
23241
23242/* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23243
23244static SEM_PC
23245SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23246{
23247#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23249 int UNUSED written = 0;
23250 IADDR UNUSED pc = abuf->addr;
23251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23252
e930b1f5
DB
23253if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23254if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23255if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23256frvbf_media_acc_not_aligned (current_cpu);
23257} else {
23258if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23259frvbf_media_acc_not_aligned (current_cpu);
23260} else {
23261{
23262{
23263 DI tmp_tmp;
23264 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23265if (GTDI (tmp_tmp, 549755813887)) {
23266{
23267 {
23268 DI opval = 549755813887;
23269 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23270 written |= (1 << 4);
23271 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23272 }
23273frvbf_media_overflow (current_cpu, 8);
23274}
23275} else {
23276if (LTDI (tmp_tmp, INVDI (549755813887))) {
23277{
23278 {
23279 DI opval = INVDI (549755813887);
23280 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23281 written |= (1 << 4);
23282 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23283 }
23284frvbf_media_overflow (current_cpu, 8);
23285}
23286} else {
23287 {
23288 DI opval = tmp_tmp;
23289 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23290 written |= (1 << 4);
23291 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23292 }
23293}
23294}
23295}
23296{
23297 DI tmp_tmp;
23298 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23299if (GTDI (tmp_tmp, 549755813887)) {
23300{
23301 {
23302 DI opval = 549755813887;
23303 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23304 written |= (1 << 5);
23305 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23306 }
23307frvbf_media_overflow (current_cpu, 4);
23308}
23309} else {
23310if (LTDI (tmp_tmp, INVDI (549755813887))) {
23311{
23312 {
23313 DI opval = INVDI (549755813887);
23314 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23315 written |= (1 << 5);
23316 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23317 }
23318frvbf_media_overflow (current_cpu, 4);
23319}
23320} else {
23321 {
23322 DI opval = tmp_tmp;
23323 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23324 written |= (1 << 5);
23325 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23326 }
23327}
23328}
23329}
23330}
23331}
e930b1f5
DB
23332}
23333}
b34f6357
DB
23334}
23335
23336 abuf->written = written;
23337 return vpc;
23338#undef FLD
23339}
23340
23341/* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23342
23343static SEM_PC
23344SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23345{
23346#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23348 int UNUSED written = 0;
23349 IADDR UNUSED pc = abuf->addr;
23350 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23351
e930b1f5
DB
23352if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23353if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23354if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23355frvbf_media_acc_not_aligned (current_cpu);
23356} else {
23357if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23358frvbf_media_acc_not_aligned (current_cpu);
23359} else {
23360{
23361{
23362 DI tmp_tmp;
23363 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23364if (GTDI (tmp_tmp, 549755813887)) {
23365{
23366 {
23367 DI opval = 549755813887;
23368 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23369 written |= (1 << 6);
23370 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23371 }
23372frvbf_media_overflow (current_cpu, 8);
23373}
23374} else {
23375if (LTDI (tmp_tmp, INVDI (549755813887))) {
23376{
23377 {
23378 DI opval = INVDI (549755813887);
23379 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23380 written |= (1 << 6);
23381 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23382 }
23383frvbf_media_overflow (current_cpu, 8);
23384}
23385} else {
23386 {
23387 DI opval = tmp_tmp;
23388 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23389 written |= (1 << 6);
23390 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23391 }
23392}
23393}
23394}
23395{
23396 DI tmp_tmp;
23397 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23398if (GTDI (tmp_tmp, 549755813887)) {
23399{
23400 {
23401 DI opval = 549755813887;
23402 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23403 written |= (1 << 7);
23404 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23405 }
23406frvbf_media_overflow (current_cpu, 4);
23407}
23408} else {
23409if (LTDI (tmp_tmp, INVDI (549755813887))) {
23410{
23411 {
23412 DI opval = INVDI (549755813887);
23413 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23414 written |= (1 << 7);
23415 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23416 }
23417frvbf_media_overflow (current_cpu, 4);
23418}
23419} else {
23420 {
23421 DI opval = tmp_tmp;
23422 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23423 written |= (1 << 7);
23424 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23425 }
23426}
23427}
23428}
23429{
23430 DI tmp_tmp;
23431 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23432if (GTDI (tmp_tmp, 549755813887)) {
23433{
23434 {
23435 DI opval = 549755813887;
23436 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23437 written |= (1 << 8);
23438 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23439 }
23440frvbf_media_overflow (current_cpu, 2);
23441}
23442} else {
23443if (LTDI (tmp_tmp, INVDI (549755813887))) {
23444{
23445 {
23446 DI opval = INVDI (549755813887);
23447 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23448 written |= (1 << 8);
23449 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23450 }
23451frvbf_media_overflow (current_cpu, 2);
23452}
23453} else {
23454 {
23455 DI opval = tmp_tmp;
23456 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23457 written |= (1 << 8);
23458 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23459 }
23460}
23461}
23462}
23463{
23464 DI tmp_tmp;
23465 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23466if (GTDI (tmp_tmp, 549755813887)) {
23467{
23468 {
23469 DI opval = 549755813887;
23470 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23471 written |= (1 << 9);
23472 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23473 }
23474frvbf_media_overflow (current_cpu, 1);
23475}
23476} else {
23477if (LTDI (tmp_tmp, INVDI (549755813887))) {
23478{
23479 {
23480 DI opval = INVDI (549755813887);
23481 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23482 written |= (1 << 9);
23483 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23484 }
23485frvbf_media_overflow (current_cpu, 1);
23486}
23487} else {
23488 {
23489 DI opval = tmp_tmp;
23490 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23491 written |= (1 << 9);
23492 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23493 }
23494}
23495}
23496}
23497}
23498}
e930b1f5
DB
23499}
23500}
b34f6357
DB
23501}
23502
23503 abuf->written = written;
23504 return vpc;
23505#undef FLD
23506}
23507
23508/* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23509
23510static SEM_PC
23511SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23512{
23513#define FLD(f) abuf->fields.sfmt_cmmachs.f
23514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23515 int UNUSED written = 0;
23516 IADDR UNUSED pc = abuf->addr;
23517 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23518
e930b1f5 23519if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23520if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23521frvbf_media_acc_not_aligned (current_cpu);
23522} else {
23523{
23524 HI tmp_argihi;
23525 HI tmp_argilo;
23526 HI tmp_argjhi;
23527 HI tmp_argjlo;
23528{
23529 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23530 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23531 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23532 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23533}
23534 {
23535 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23536 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23537 written |= (1 << 9);
23538 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23539 }
23540 {
23541 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23542 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23543 written |= (1 << 10);
23544 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23545 }
23546}
e930b1f5 23547}
b34f6357
DB
23548}
23549
23550 abuf->written = written;
23551 return vpc;
23552#undef FLD
23553}
23554
23555/* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23556
23557static SEM_PC
23558SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23559{
23560#define FLD(f) abuf->fields.sfmt_cmmachs.f
23561 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23562 int UNUSED written = 0;
23563 IADDR UNUSED pc = abuf->addr;
23564 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23565
e930b1f5 23566if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23567if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23568frvbf_media_acc_not_aligned (current_cpu);
23569} else {
23570{
23571 UHI tmp_argihi;
23572 UHI tmp_argilo;
23573 UHI tmp_argjhi;
23574 UHI tmp_argjlo;
23575{
23576 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23577 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23578 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23579 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23580}
23581 {
23582 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23583 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23584 written |= (1 << 9);
23585 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23586 }
23587 {
23588 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23589 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23590 written |= (1 << 10);
23591 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23592 }
23593}
e930b1f5 23594}
b34f6357
DB
23595}
23596
23597 abuf->written = written;
23598 return vpc;
23599#undef FLD
23600}
23601
23602/* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23603
23604static SEM_PC
23605SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23606{
23607#define FLD(f) abuf->fields.sfmt_cmmachs.f
23608 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23609 int UNUSED written = 0;
23610 IADDR UNUSED pc = abuf->addr;
23611 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23612
e930b1f5 23613if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23614if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23615frvbf_media_acc_not_aligned (current_cpu);
23616} else {
23617{
23618 HI tmp_argihi;
23619 HI tmp_argilo;
23620 HI tmp_argjhi;
23621 HI tmp_argjlo;
23622{
23623 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23624 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23625 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23626 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23627}
23628 {
23629 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23630 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23631 written |= (1 << 9);
23632 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23633 }
23634 {
23635 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23636 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23637 written |= (1 << 10);
23638 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23639 }
23640}
e930b1f5 23641}
b34f6357
DB
23642}
23643
23644 abuf->written = written;
23645 return vpc;
23646#undef FLD
23647}
23648
23649/* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23650
23651static SEM_PC
23652SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23653{
23654#define FLD(f) abuf->fields.sfmt_cmmachs.f
23655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23656 int UNUSED written = 0;
23657 IADDR UNUSED pc = abuf->addr;
23658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23659
e930b1f5 23660if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23661if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23662frvbf_media_acc_not_aligned (current_cpu);
23663} else {
23664{
23665 UHI tmp_argihi;
23666 UHI tmp_argilo;
23667 UHI tmp_argjhi;
23668 UHI tmp_argjlo;
23669{
23670 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23671 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23672 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23673 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23674}
23675 {
23676 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23677 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23678 written |= (1 << 9);
23679 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23680 }
23681 {
23682 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23683 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23684 written |= (1 << 10);
23685 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23686 }
23687}
e930b1f5 23688}
b34f6357
DB
23689}
23690
23691 abuf->written = written;
23692 return vpc;
23693#undef FLD
23694}
23695
23696/* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23697
23698static SEM_PC
23699SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23700{
23701#define FLD(f) abuf->fields.sfmt_cmmachs.f
23702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23703 int UNUSED written = 0;
23704 IADDR UNUSED pc = abuf->addr;
23705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23706
e930b1f5 23707if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23708if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23709frvbf_media_acc_not_aligned (current_cpu);
23710} else {
23711if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23712{
23713 HI tmp_argihi;
23714 HI tmp_argilo;
23715 HI tmp_argjhi;
23716 HI tmp_argjlo;
23717{
23718 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23719 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23720 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23721 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23722}
23723 {
23724 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23725 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23726 written |= (1 << 11);
23727 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23728 }
23729 {
23730 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23731 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23732 written |= (1 << 12);
23733 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23734 }
23735}
23736}
e930b1f5 23737}
b34f6357
DB
23738}
23739
23740 abuf->written = written;
23741 return vpc;
23742#undef FLD
23743}
23744
23745/* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23746
23747static SEM_PC
23748SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23749{
23750#define FLD(f) abuf->fields.sfmt_cmmachs.f
23751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23752 int UNUSED written = 0;
23753 IADDR UNUSED pc = abuf->addr;
23754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23755
e930b1f5 23756if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23757if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23758frvbf_media_acc_not_aligned (current_cpu);
23759} else {
23760if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23761{
23762 UHI tmp_argihi;
23763 UHI tmp_argilo;
23764 UHI tmp_argjhi;
23765 UHI tmp_argjlo;
23766{
23767 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23768 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23769 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23770 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23771}
23772 {
23773 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23774 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23775 written |= (1 << 11);
23776 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23777 }
23778 {
23779 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23780 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23781 written |= (1 << 12);
23782 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23783 }
23784}
23785}
e930b1f5 23786}
b34f6357
DB
23787}
23788
23789 abuf->written = written;
23790 return vpc;
23791#undef FLD
23792}
23793
23794/* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23795
23796static SEM_PC
23797SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23798{
23799#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23800 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23801 int UNUSED written = 0;
23802 IADDR UNUSED pc = abuf->addr;
23803 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23804
e930b1f5 23805if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23806if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23807frvbf_media_acc_not_aligned (current_cpu);
23808} else {
23809if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23810frvbf_media_register_not_aligned (current_cpu);
23811} else {
23812{
23813 HI tmp_argihi;
23814 HI tmp_argilo;
23815 HI tmp_argjhi;
23816 HI tmp_argjlo;
23817{
23818 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23819 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23820 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23821 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23822}
23823 {
23824 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23825 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23826 written |= (1 << 13);
23827 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23828 }
23829 {
23830 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23831 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23832 written |= (1 << 14);
23833 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23834 }
23835{
23836 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23837 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23838 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23839 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23840}
23841 {
23842 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23843 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23844 written |= (1 << 15);
23845 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23846 }
23847 {
23848 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23849 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23850 written |= (1 << 16);
23851 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23852 }
23853}
23854}
e930b1f5 23855}
b34f6357
DB
23856}
23857
23858 abuf->written = written;
23859 return vpc;
23860#undef FLD
23861}
23862
23863/* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23864
23865static SEM_PC
23866SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23867{
23868#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23870 int UNUSED written = 0;
23871 IADDR UNUSED pc = abuf->addr;
23872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23873
e930b1f5 23874if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23875if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23876frvbf_media_acc_not_aligned (current_cpu);
23877} else {
23878if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23879frvbf_media_register_not_aligned (current_cpu);
23880} else {
23881{
23882 UHI tmp_argihi;
23883 UHI tmp_argilo;
23884 UHI tmp_argjhi;
23885 UHI tmp_argjlo;
23886{
23887 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23888 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23889 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23890 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23891}
23892 {
23893 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23894 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23895 written |= (1 << 13);
23896 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23897 }
23898 {
23899 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23900 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23901 written |= (1 << 14);
23902 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23903 }
23904{
23905 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23906 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23907 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23908 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23909}
23910 {
23911 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23912 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23913 written |= (1 << 15);
23914 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23915 }
23916 {
23917 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23918 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23919 written |= (1 << 16);
23920 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23921 }
23922}
23923}
e930b1f5 23924}
b34f6357
DB
23925}
23926
23927 abuf->written = written;
23928 return vpc;
23929#undef FLD
23930}
23931
23932/* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23933
23934static SEM_PC
23935SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23936{
23937#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23938 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23939 int UNUSED written = 0;
23940 IADDR UNUSED pc = abuf->addr;
23941 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23942
e930b1f5 23943if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23944if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23945frvbf_media_acc_not_aligned (current_cpu);
23946} else {
23947if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23948frvbf_media_register_not_aligned (current_cpu);
23949} else {
23950{
23951 HI tmp_argihi;
23952 HI tmp_argilo;
23953 HI tmp_argjhi;
23954 HI tmp_argjlo;
23955{
23956 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23957 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23958 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23959 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23960}
23961 {
23962 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23963 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23964 written |= (1 << 13);
23965 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23966 }
23967 {
23968 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23969 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23970 written |= (1 << 14);
23971 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23972 }
23973{
23974 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23975 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23976 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23977 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23978}
23979 {
23980 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23981 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23982 written |= (1 << 15);
23983 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23984 }
23985 {
23986 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23987 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23988 written |= (1 << 16);
23989 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23990 }
23991}
23992}
e930b1f5 23993}
b34f6357
DB
23994}
23995
23996 abuf->written = written;
23997 return vpc;
23998#undef FLD
23999}
24000
24001/* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
24002
24003static SEM_PC
24004SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24005{
24006#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24008 int UNUSED written = 0;
24009 IADDR UNUSED pc = abuf->addr;
24010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24011
e930b1f5 24012if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24013if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24014frvbf_media_acc_not_aligned (current_cpu);
24015} else {
24016if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24017frvbf_media_register_not_aligned (current_cpu);
24018} else {
24019{
24020 UHI tmp_argihi;
24021 UHI tmp_argilo;
24022 UHI tmp_argjhi;
24023 UHI tmp_argjlo;
24024{
24025 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24026 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24027 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24028 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24029}
24030 {
24031 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24032 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24033 written |= (1 << 13);
24034 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24035 }
24036 {
24037 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24038 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24039 written |= (1 << 14);
24040 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24041 }
24042{
24043 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24044 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24045 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24046 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24047}
24048 {
24049 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24050 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24051 written |= (1 << 15);
24052 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24053 }
24054 {
24055 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24056 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24057 written |= (1 << 16);
24058 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24059 }
24060}
24061}
e930b1f5 24062}
b34f6357
DB
24063}
24064
24065 abuf->written = written;
24066 return vpc;
24067#undef FLD
24068}
24069
24070/* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24071
24072static SEM_PC
24073SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24074{
24075#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24076 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24077 int UNUSED written = 0;
24078 IADDR UNUSED pc = abuf->addr;
24079 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24080
e930b1f5 24081if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24082if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24083frvbf_media_acc_not_aligned (current_cpu);
24084} else {
24085if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24086frvbf_media_register_not_aligned (current_cpu);
24087} else {
24088if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24089{
24090 HI tmp_argihi;
24091 HI tmp_argilo;
24092 HI tmp_argjhi;
24093 HI tmp_argjlo;
24094{
24095 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24096 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24097 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24098 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24099}
24100 {
24101 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24102 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24103 written |= (1 << 15);
24104 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24105 }
24106 {
24107 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24108 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24109 written |= (1 << 16);
24110 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24111 }
24112{
24113 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24114 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24115 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24116 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24117}
24118 {
24119 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24120 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24121 written |= (1 << 17);
24122 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24123 }
24124 {
24125 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24126 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24127 written |= (1 << 18);
24128 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24129 }
24130}
24131}
24132}
e930b1f5 24133}
b34f6357
DB
24134}
24135
24136 abuf->written = written;
24137 return vpc;
24138#undef FLD
24139}
24140
24141/* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24142
24143static SEM_PC
24144SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24145{
24146#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24148 int UNUSED written = 0;
24149 IADDR UNUSED pc = abuf->addr;
24150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24151
e930b1f5 24152if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24153if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24154frvbf_media_acc_not_aligned (current_cpu);
24155} else {
24156if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24157frvbf_media_register_not_aligned (current_cpu);
24158} else {
24159if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24160{
24161 UHI tmp_argihi;
24162 UHI tmp_argilo;
24163 UHI tmp_argjhi;
24164 UHI tmp_argjlo;
24165{
24166 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24167 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24168 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24169 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24170}
24171 {
24172 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24173 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24174 written |= (1 << 15);
24175 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24176 }
24177 {
24178 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24179 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24180 written |= (1 << 16);
24181 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24182 }
24183{
24184 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24185 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24186 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24187 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24188}
24189 {
24190 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24191 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24192 written |= (1 << 17);
24193 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24194 }
24195 {
24196 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24197 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24198 written |= (1 << 18);
24199 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24200 }
24201}
24202}
24203}
e930b1f5 24204}
b34f6357
DB
24205}
24206
24207 abuf->written = written;
24208 return vpc;
24209#undef FLD
24210}
24211
24212/* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24213
24214static SEM_PC
24215SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24216{
24217#define FLD(f) abuf->fields.sfmt_cmmachs.f
24218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24219 int UNUSED written = 0;
24220 IADDR UNUSED pc = abuf->addr;
24221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24222
e930b1f5 24223if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24224if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24225frvbf_media_acc_not_aligned (current_cpu);
24226} else {
24227{
24228 HI tmp_argihi;
24229 HI tmp_argilo;
24230 HI tmp_argjhi;
24231 HI tmp_argjlo;
24232{
24233 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24234 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24235 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24236 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24237}
24238{
24239 DI tmp_tmp;
24240 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24241if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24242{
24243 {
24244 DI opval = MAKEDI (127, 0xffffffff);
24245 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24246 written |= (1 << 11);
24247 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24248 }
24249frvbf_media_overflow (current_cpu, 8);
24250}
24251} else {
24252if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24253{
24254 {
24255 DI opval = MAKEDI (0xffffff80, 0);
24256 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24257 written |= (1 << 11);
24258 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24259 }
24260frvbf_media_overflow (current_cpu, 8);
24261}
24262} else {
24263 {
24264 DI opval = tmp_tmp;
24265 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24266 written |= (1 << 11);
24267 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24268 }
24269}
24270}
24271}
24272{
24273 DI tmp_tmp;
24274 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24275if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24276{
24277 {
24278 DI opval = MAKEDI (127, 0xffffffff);
24279 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24280 written |= (1 << 12);
24281 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24282 }
24283frvbf_media_overflow (current_cpu, 4);
24284}
24285} else {
24286if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24287{
24288 {
24289 DI opval = MAKEDI (0xffffff80, 0);
24290 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24291 written |= (1 << 12);
24292 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24293 }
24294frvbf_media_overflow (current_cpu, 4);
24295}
24296} else {
24297 {
24298 DI opval = tmp_tmp;
24299 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24300 written |= (1 << 12);
24301 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24302 }
24303}
24304}
24305}
24306}
e930b1f5 24307}
b34f6357
DB
24308}
24309
24310 abuf->written = written;
24311 return vpc;
24312#undef FLD
24313}
24314
24315/* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24316
24317static SEM_PC
24318SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24319{
24320#define FLD(f) abuf->fields.sfmt_cmmachu.f
24321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24322 int UNUSED written = 0;
24323 IADDR UNUSED pc = abuf->addr;
24324 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24325
e930b1f5 24326if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24327if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24328frvbf_media_acc_not_aligned (current_cpu);
24329} else {
24330{
24331 UHI tmp_argihi;
24332 UHI tmp_argilo;
24333 UHI tmp_argjhi;
24334 UHI tmp_argjlo;
24335{
24336 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24337 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24338 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24339 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24340}
24341{
24342 DI tmp_tmp;
24343 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24344if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24345{
24346 {
24347 UDI opval = MAKEDI (255, 0xffffffff);
24348 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24349 written |= (1 << 11);
24350 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24351 }
24352frvbf_media_overflow (current_cpu, 8);
24353}
24354} else {
24355if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24356{
24357 {
24358 UDI opval = MAKEDI (0, 0);
24359 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24360 written |= (1 << 11);
24361 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24362 }
24363frvbf_media_overflow (current_cpu, 8);
24364}
24365} else {
24366 {
24367 UDI opval = tmp_tmp;
24368 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24369 written |= (1 << 11);
24370 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24371 }
24372}
24373}
24374}
24375{
24376 DI tmp_tmp;
24377 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24378if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24379{
24380 {
24381 UDI opval = MAKEDI (255, 0xffffffff);
24382 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24383 written |= (1 << 12);
24384 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24385 }
24386frvbf_media_overflow (current_cpu, 4);
24387}
24388} else {
24389if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24390{
24391 {
24392 UDI opval = MAKEDI (0, 0);
24393 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24394 written |= (1 << 12);
24395 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24396 }
24397frvbf_media_overflow (current_cpu, 4);
24398}
24399} else {
24400 {
24401 UDI opval = tmp_tmp;
24402 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24403 written |= (1 << 12);
24404 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24405 }
24406}
24407}
24408}
24409}
e930b1f5 24410}
b34f6357
DB
24411}
24412
24413 abuf->written = written;
24414 return vpc;
24415#undef FLD
24416}
24417
24418/* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24419
24420static SEM_PC
24421SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24422{
24423#define FLD(f) abuf->fields.sfmt_cmmachs.f
24424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24425 int UNUSED written = 0;
24426 IADDR UNUSED pc = abuf->addr;
24427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24428
e930b1f5 24429if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24430if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24431frvbf_media_acc_not_aligned (current_cpu);
24432} else {
24433{
24434 HI tmp_argihi;
24435 HI tmp_argilo;
24436 HI tmp_argjhi;
24437 HI tmp_argjlo;
24438{
24439 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24440 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24441 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24442 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24443}
24444{
24445 DI tmp_tmp;
24446 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24447if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24448{
24449 {
24450 DI opval = MAKEDI (127, 0xffffffff);
24451 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24452 written |= (1 << 11);
24453 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24454 }
24455frvbf_media_overflow (current_cpu, 8);
24456}
24457} else {
24458if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24459{
24460 {
24461 DI opval = MAKEDI (0xffffff80, 0);
24462 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24463 written |= (1 << 11);
24464 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24465 }
24466frvbf_media_overflow (current_cpu, 8);
24467}
24468} else {
24469 {
24470 DI opval = tmp_tmp;
24471 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24472 written |= (1 << 11);
24473 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24474 }
24475}
24476}
24477}
24478{
24479 DI tmp_tmp;
24480 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24481if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24482{
24483 {
24484 DI opval = MAKEDI (127, 0xffffffff);
24485 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24486 written |= (1 << 12);
24487 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24488 }
24489frvbf_media_overflow (current_cpu, 4);
24490}
24491} else {
24492if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24493{
24494 {
24495 DI opval = MAKEDI (0xffffff80, 0);
24496 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24497 written |= (1 << 12);
24498 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24499 }
24500frvbf_media_overflow (current_cpu, 4);
24501}
24502} else {
24503 {
24504 DI opval = tmp_tmp;
24505 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24506 written |= (1 << 12);
24507 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24508 }
24509}
24510}
24511}
24512}
e930b1f5 24513}
b34f6357
DB
24514}
24515
24516 abuf->written = written;
24517 return vpc;
24518#undef FLD
24519}
24520
24521/* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24522
24523static SEM_PC
24524SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24525{
24526#define FLD(f) abuf->fields.sfmt_cmmachu.f
24527 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24528 int UNUSED written = 0;
24529 IADDR UNUSED pc = abuf->addr;
24530 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24531
e930b1f5 24532if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24533if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24534frvbf_media_acc_not_aligned (current_cpu);
24535} else {
24536{
24537 UHI tmp_argihi;
24538 UHI tmp_argilo;
24539 UHI tmp_argjhi;
24540 UHI tmp_argjlo;
24541{
24542 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24543 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24544 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24545 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24546}
24547{
24548 DI tmp_tmp;
24549 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24550if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24551{
24552 {
24553 UDI opval = MAKEDI (255, 0xffffffff);
24554 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24555 written |= (1 << 11);
24556 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24557 }
24558frvbf_media_overflow (current_cpu, 8);
24559}
24560} else {
24561if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24562{
24563 {
24564 UDI opval = MAKEDI (0, 0);
24565 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24566 written |= (1 << 11);
24567 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24568 }
24569frvbf_media_overflow (current_cpu, 8);
24570}
24571} else {
24572 {
24573 UDI opval = tmp_tmp;
24574 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24575 written |= (1 << 11);
24576 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24577 }
24578}
24579}
24580}
24581{
24582 DI tmp_tmp;
24583 tmp_tmp = SUBDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24584if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24585{
24586 {
24587 UDI opval = MAKEDI (255, 0xffffffff);
24588 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24589 written |= (1 << 12);
24590 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24591 }
24592frvbf_media_overflow (current_cpu, 4);
24593}
24594} else {
24595if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24596{
24597 {
24598 UDI opval = MAKEDI (0, 0);
24599 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24600 written |= (1 << 12);
24601 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24602 }
24603frvbf_media_overflow (current_cpu, 4);
24604}
24605} else {
24606 {
24607 UDI opval = tmp_tmp;
24608 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24609 written |= (1 << 12);
24610 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24611 }
24612}
24613}
24614}
24615}
e930b1f5 24616}
b34f6357
DB
24617}
24618
24619 abuf->written = written;
24620 return vpc;
24621#undef FLD
24622}
24623
24624/* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24625
24626static SEM_PC
24627SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24628{
24629#define FLD(f) abuf->fields.sfmt_cmmachs.f
24630 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24631 int UNUSED written = 0;
24632 IADDR UNUSED pc = abuf->addr;
24633 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24634
e930b1f5 24635if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24636if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24637frvbf_media_acc_not_aligned (current_cpu);
24638} else {
24639if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24640{
24641 HI tmp_argihi;
24642 HI tmp_argilo;
24643 HI tmp_argjhi;
24644 HI tmp_argjlo;
24645{
24646 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24647 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24648 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24649 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24650}
24651{
24652 DI tmp_tmp;
24653 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24654if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24655{
24656 {
24657 DI opval = MAKEDI (127, 0xffffffff);
24658 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24659 written |= (1 << 13);
24660 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24661 }
24662frvbf_media_overflow (current_cpu, 8);
24663}
24664} else {
24665if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24666{
24667 {
24668 DI opval = MAKEDI (0xffffff80, 0);
24669 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24670 written |= (1 << 13);
24671 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24672 }
24673frvbf_media_overflow (current_cpu, 8);
24674}
24675} else {
24676 {
24677 DI opval = tmp_tmp;
24678 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24679 written |= (1 << 13);
24680 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24681 }
24682}
24683}
24684}
24685{
24686 DI tmp_tmp;
24687 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24688if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24689{
24690 {
24691 DI opval = MAKEDI (127, 0xffffffff);
24692 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24693 written |= (1 << 14);
24694 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24695 }
24696frvbf_media_overflow (current_cpu, 4);
24697}
24698} else {
24699if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24700{
24701 {
24702 DI opval = MAKEDI (0xffffff80, 0);
24703 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24704 written |= (1 << 14);
24705 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24706 }
24707frvbf_media_overflow (current_cpu, 4);
24708}
24709} else {
24710 {
24711 DI opval = tmp_tmp;
24712 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24713 written |= (1 << 14);
24714 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24715 }
24716}
24717}
24718}
24719}
24720}
e930b1f5 24721}
b34f6357
DB
24722}
24723
24724 abuf->written = written;
24725 return vpc;
24726#undef FLD
24727}
24728
24729/* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24730
24731static SEM_PC
24732SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24733{
24734#define FLD(f) abuf->fields.sfmt_cmmachu.f
24735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24736 int UNUSED written = 0;
24737 IADDR UNUSED pc = abuf->addr;
24738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24739
e930b1f5 24740if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24741if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24742frvbf_media_acc_not_aligned (current_cpu);
24743} else {
24744if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24745{
24746 UHI tmp_argihi;
24747 UHI tmp_argilo;
24748 UHI tmp_argjhi;
24749 UHI tmp_argjlo;
24750{
24751 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24752 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24753 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24754 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24755}
24756{
24757 DI tmp_tmp;
24758 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24759if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24760{
24761 {
24762 UDI opval = MAKEDI (255, 0xffffffff);
24763 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24764 written |= (1 << 13);
24765 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24766 }
24767frvbf_media_overflow (current_cpu, 8);
24768}
24769} else {
24770if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24771{
24772 {
24773 UDI opval = MAKEDI (0, 0);
24774 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24775 written |= (1 << 13);
24776 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24777 }
24778frvbf_media_overflow (current_cpu, 8);
24779}
24780} else {
24781 {
24782 UDI opval = tmp_tmp;
24783 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24784 written |= (1 << 13);
24785 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24786 }
24787}
24788}
24789}
24790{
24791 DI tmp_tmp;
24792 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24793if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24794{
24795 {
24796 UDI opval = MAKEDI (255, 0xffffffff);
24797 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24798 written |= (1 << 14);
24799 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24800 }
24801frvbf_media_overflow (current_cpu, 4);
24802}
24803} else {
24804if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24805{
24806 {
24807 UDI opval = MAKEDI (0, 0);
24808 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24809 written |= (1 << 14);
24810 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24811 }
24812frvbf_media_overflow (current_cpu, 4);
24813}
24814} else {
24815 {
24816 UDI opval = tmp_tmp;
24817 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24818 written |= (1 << 14);
24819 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24820 }
24821}
24822}
24823}
24824}
24825}
e930b1f5 24826}
b34f6357
DB
24827}
24828
24829 abuf->written = written;
24830 return vpc;
24831#undef FLD
24832}
24833
24834/* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24835
24836static SEM_PC
24837SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24838{
24839#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24840 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24841 int UNUSED written = 0;
24842 IADDR UNUSED pc = abuf->addr;
24843 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24844
e930b1f5 24845if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24846if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24847frvbf_media_acc_not_aligned (current_cpu);
24848} else {
24849if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24850frvbf_media_register_not_aligned (current_cpu);
24851} else {
24852{
24853 HI tmp_argihi;
24854 HI tmp_argilo;
24855 HI tmp_argjhi;
24856 HI tmp_argjlo;
24857{
24858 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24859 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24860 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24861 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24862}
24863{
24864 DI tmp_tmp;
24865 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24866if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24867{
24868 {
24869 DI opval = MAKEDI (127, 0xffffffff);
24870 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24871 written |= (1 << 17);
24872 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24873 }
24874frvbf_media_overflow (current_cpu, 8);
24875}
24876} else {
24877if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24878{
24879 {
24880 DI opval = MAKEDI (0xffffff80, 0);
24881 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24882 written |= (1 << 17);
24883 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24884 }
24885frvbf_media_overflow (current_cpu, 8);
24886}
24887} else {
24888 {
24889 DI opval = tmp_tmp;
24890 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24891 written |= (1 << 17);
24892 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24893 }
24894}
24895}
24896}
24897{
24898 DI tmp_tmp;
24899 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24900if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24901{
24902 {
24903 DI opval = MAKEDI (127, 0xffffffff);
24904 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24905 written |= (1 << 18);
24906 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24907 }
24908frvbf_media_overflow (current_cpu, 4);
24909}
24910} else {
24911if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24912{
24913 {
24914 DI opval = MAKEDI (0xffffff80, 0);
24915 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24916 written |= (1 << 18);
24917 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24918 }
24919frvbf_media_overflow (current_cpu, 4);
24920}
24921} else {
24922 {
24923 DI opval = tmp_tmp;
24924 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24925 written |= (1 << 18);
24926 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24927 }
24928}
24929}
24930}
24931{
24932 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24933 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24934 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24935 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24936}
24937{
24938 DI tmp_tmp;
24939 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24940if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24941{
24942 {
24943 DI opval = MAKEDI (127, 0xffffffff);
24944 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24945 written |= (1 << 19);
24946 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24947 }
24948frvbf_media_overflow (current_cpu, 2);
24949}
24950} else {
24951if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24952{
24953 {
24954 DI opval = MAKEDI (0xffffff80, 0);
24955 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24956 written |= (1 << 19);
24957 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24958 }
24959frvbf_media_overflow (current_cpu, 2);
24960}
24961} else {
24962 {
24963 DI opval = tmp_tmp;
24964 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24965 written |= (1 << 19);
24966 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24967 }
24968}
24969}
24970}
24971{
24972 DI tmp_tmp;
24973 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24974if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24975{
24976 {
24977 DI opval = MAKEDI (127, 0xffffffff);
24978 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24979 written |= (1 << 20);
24980 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24981 }
24982frvbf_media_overflow (current_cpu, 1);
24983}
24984} else {
24985if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24986{
24987 {
24988 DI opval = MAKEDI (0xffffff80, 0);
24989 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24990 written |= (1 << 20);
24991 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24992 }
24993frvbf_media_overflow (current_cpu, 1);
24994}
24995} else {
24996 {
24997 DI opval = tmp_tmp;
24998 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24999 written |= (1 << 20);
25000 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25001 }
25002}
25003}
25004}
25005}
25006}
e930b1f5 25007}
b34f6357
DB
25008}
25009
25010 abuf->written = written;
25011 return vpc;
25012#undef FLD
25013}
25014
25015/* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
25016
25017static SEM_PC
25018SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25019{
25020#define FLD(f) abuf->fields.sfmt_cmqmachu.f
25021 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25022 int UNUSED written = 0;
25023 IADDR UNUSED pc = abuf->addr;
25024 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25025
e930b1f5 25026if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
25027if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25028frvbf_media_acc_not_aligned (current_cpu);
25029} else {
25030if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25031frvbf_media_register_not_aligned (current_cpu);
25032} else {
25033{
25034 UHI tmp_argihi;
25035 UHI tmp_argilo;
25036 UHI tmp_argjhi;
25037 UHI tmp_argjlo;
25038{
25039 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25040 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25041 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25042 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25043}
25044{
25045 DI tmp_tmp;
25046 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25047if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25048{
25049 {
25050 UDI opval = MAKEDI (255, 0xffffffff);
25051 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25052 written |= (1 << 17);
25053 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25054 }
25055frvbf_media_overflow (current_cpu, 8);
25056}
25057} else {
25058if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25059{
25060 {
25061 UDI opval = MAKEDI (0, 0);
25062 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25063 written |= (1 << 17);
25064 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25065 }
25066frvbf_media_overflow (current_cpu, 8);
25067}
25068} else {
25069 {
25070 UDI opval = tmp_tmp;
25071 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25072 written |= (1 << 17);
25073 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25074 }
25075}
25076}
25077}
25078{
25079 DI tmp_tmp;
25080 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25081if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25082{
25083 {
25084 UDI opval = MAKEDI (255, 0xffffffff);
25085 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25086 written |= (1 << 18);
25087 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25088 }
25089frvbf_media_overflow (current_cpu, 4);
25090}
25091} else {
25092if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25093{
25094 {
25095 UDI opval = MAKEDI (0, 0);
25096 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25097 written |= (1 << 18);
25098 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25099 }
25100frvbf_media_overflow (current_cpu, 4);
25101}
25102} else {
25103 {
25104 UDI opval = tmp_tmp;
25105 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25106 written |= (1 << 18);
25107 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25108 }
25109}
25110}
25111}
25112{
25113 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25114 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25115 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25116 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25117}
25118{
25119 DI tmp_tmp;
25120 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25121if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25122{
25123 {
25124 UDI opval = MAKEDI (255, 0xffffffff);
25125 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25126 written |= (1 << 19);
25127 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25128 }
25129frvbf_media_overflow (current_cpu, 2);
25130}
25131} else {
25132if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25133{
25134 {
25135 UDI opval = MAKEDI (0, 0);
25136 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25137 written |= (1 << 19);
25138 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25139 }
25140frvbf_media_overflow (current_cpu, 2);
25141}
25142} else {
25143 {
25144 UDI opval = tmp_tmp;
25145 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25146 written |= (1 << 19);
25147 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25148 }
25149}
25150}
25151}
25152{
25153 DI tmp_tmp;
25154 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25155if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25156{
25157 {
25158 UDI opval = MAKEDI (255, 0xffffffff);
25159 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25160 written |= (1 << 20);
25161 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25162 }
25163frvbf_media_overflow (current_cpu, 1);
25164}
25165} else {
25166if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25167{
25168 {
25169 UDI opval = MAKEDI (0, 0);
25170 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25171 written |= (1 << 20);
25172 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25173 }
25174frvbf_media_overflow (current_cpu, 1);
25175}
25176} else {
25177 {
25178 UDI opval = tmp_tmp;
25179 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25180 written |= (1 << 20);
25181 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25182 }
25183}
25184}
25185}
25186}
25187}
e930b1f5 25188}
b34f6357
DB
25189}
25190
25191 abuf->written = written;
25192 return vpc;
25193#undef FLD
25194}
25195
25196/* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25197
25198static SEM_PC
25199SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25200{
25201#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25203 int UNUSED written = 0;
25204 IADDR UNUSED pc = abuf->addr;
25205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25206
e930b1f5 25207if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25208if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25209frvbf_media_acc_not_aligned (current_cpu);
25210} else {
25211if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25212frvbf_media_register_not_aligned (current_cpu);
25213} else {
25214if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25215{
25216 HI tmp_argihi;
25217 HI tmp_argilo;
25218 HI tmp_argjhi;
25219 HI tmp_argjlo;
25220{
25221 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25222 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25223 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25224 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25225}
25226{
25227 DI tmp_tmp;
25228 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25229if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25230{
25231 {
25232 DI opval = MAKEDI (127, 0xffffffff);
25233 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25234 written |= (1 << 19);
25235 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25236 }
25237frvbf_media_overflow (current_cpu, 8);
25238}
25239} else {
25240if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25241{
25242 {
25243 DI opval = MAKEDI (0xffffff80, 0);
25244 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25245 written |= (1 << 19);
25246 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25247 }
25248frvbf_media_overflow (current_cpu, 8);
25249}
25250} else {
25251 {
25252 DI opval = tmp_tmp;
25253 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25254 written |= (1 << 19);
25255 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25256 }
25257}
25258}
25259}
25260{
25261 DI tmp_tmp;
25262 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25263if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25264{
25265 {
25266 DI opval = MAKEDI (127, 0xffffffff);
25267 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25268 written |= (1 << 20);
25269 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25270 }
25271frvbf_media_overflow (current_cpu, 4);
25272}
25273} else {
25274if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25275{
25276 {
25277 DI opval = MAKEDI (0xffffff80, 0);
25278 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25279 written |= (1 << 20);
25280 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25281 }
25282frvbf_media_overflow (current_cpu, 4);
25283}
25284} else {
25285 {
25286 DI opval = tmp_tmp;
25287 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25288 written |= (1 << 20);
25289 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25290 }
25291}
25292}
25293}
25294{
25295 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25296 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25297 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25298 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25299}
25300{
25301 DI tmp_tmp;
25302 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25303if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25304{
25305 {
25306 DI opval = MAKEDI (127, 0xffffffff);
25307 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25308 written |= (1 << 21);
25309 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25310 }
25311frvbf_media_overflow (current_cpu, 2);
25312}
25313} else {
25314if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25315{
25316 {
25317 DI opval = MAKEDI (0xffffff80, 0);
25318 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25319 written |= (1 << 21);
25320 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25321 }
25322frvbf_media_overflow (current_cpu, 2);
25323}
25324} else {
25325 {
25326 DI opval = tmp_tmp;
25327 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25328 written |= (1 << 21);
25329 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25330 }
25331}
25332}
25333}
25334{
25335 DI tmp_tmp;
25336 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25337if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25338{
25339 {
25340 DI opval = MAKEDI (127, 0xffffffff);
25341 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25342 written |= (1 << 22);
25343 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25344 }
25345frvbf_media_overflow (current_cpu, 1);
25346}
25347} else {
25348if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25349{
25350 {
25351 DI opval = MAKEDI (0xffffff80, 0);
25352 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25353 written |= (1 << 22);
25354 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25355 }
25356frvbf_media_overflow (current_cpu, 1);
25357}
25358} else {
25359 {
25360 DI opval = tmp_tmp;
25361 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25362 written |= (1 << 22);
25363 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25364 }
25365}
25366}
25367}
25368}
25369}
25370}
e930b1f5 25371}
b34f6357
DB
25372}
25373
25374 abuf->written = written;
25375 return vpc;
25376#undef FLD
25377}
25378
25379/* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25380
25381static SEM_PC
25382SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25383{
25384#define FLD(f) abuf->fields.sfmt_cmqmachu.f
25385 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25386 int UNUSED written = 0;
25387 IADDR UNUSED pc = abuf->addr;
25388 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25389
e930b1f5 25390if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
25391if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25392frvbf_media_acc_not_aligned (current_cpu);
25393} else {
25394if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25395frvbf_media_register_not_aligned (current_cpu);
25396} else {
25397if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25398{
25399 UHI tmp_argihi;
25400 UHI tmp_argilo;
25401 UHI tmp_argjhi;
25402 UHI tmp_argjlo;
25403{
25404 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25405 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25406 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25407 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25408}
25409{
25410 DI tmp_tmp;
25411 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25412if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25413{
25414 {
25415 UDI opval = MAKEDI (255, 0xffffffff);
25416 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25417 written |= (1 << 19);
25418 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25419 }
25420frvbf_media_overflow (current_cpu, 8);
25421}
25422} else {
25423if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25424{
25425 {
25426 UDI opval = MAKEDI (0, 0);
25427 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25428 written |= (1 << 19);
25429 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25430 }
25431frvbf_media_overflow (current_cpu, 8);
25432}
25433} else {
25434 {
25435 UDI opval = tmp_tmp;
25436 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25437 written |= (1 << 19);
25438 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25439 }
25440}
25441}
25442}
25443{
25444 DI tmp_tmp;
25445 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25446if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25447{
25448 {
25449 UDI opval = MAKEDI (255, 0xffffffff);
25450 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25451 written |= (1 << 20);
25452 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25453 }
25454frvbf_media_overflow (current_cpu, 4);
25455}
25456} else {
25457if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25458{
25459 {
25460 UDI opval = MAKEDI (0, 0);
25461 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25462 written |= (1 << 20);
25463 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25464 }
25465frvbf_media_overflow (current_cpu, 4);
25466}
25467} else {
25468 {
25469 UDI opval = tmp_tmp;
25470 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25471 written |= (1 << 20);
25472 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25473 }
25474}
25475}
25476}
25477{
25478 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25479 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25480 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25481 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25482}
25483{
25484 DI tmp_tmp;
25485 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25486if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25487{
25488 {
25489 UDI opval = MAKEDI (255, 0xffffffff);
25490 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25491 written |= (1 << 21);
25492 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25493 }
25494frvbf_media_overflow (current_cpu, 2);
25495}
25496} else {
25497if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25498{
25499 {
25500 UDI opval = MAKEDI (0, 0);
25501 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25502 written |= (1 << 21);
25503 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25504 }
25505frvbf_media_overflow (current_cpu, 2);
25506}
25507} else {
25508 {
25509 UDI opval = tmp_tmp;
25510 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25511 written |= (1 << 21);
25512 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25513 }
25514}
25515}
25516}
25517{
25518 DI tmp_tmp;
25519 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25520if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25521{
25522 {
25523 UDI opval = MAKEDI (255, 0xffffffff);
25524 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25525 written |= (1 << 22);
25526 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25527 }
25528frvbf_media_overflow (current_cpu, 1);
25529}
25530} else {
25531if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25532{
25533 {
25534 UDI opval = MAKEDI (0, 0);
25535 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25536 written |= (1 << 22);
25537 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25538 }
25539frvbf_media_overflow (current_cpu, 1);
25540}
25541} else {
25542 {
25543 UDI opval = tmp_tmp;
25544 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25545 written |= (1 << 22);
25546 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25547 }
25548}
25549}
25550}
25551}
25552}
25553}
e930b1f5 25554}
b34f6357
DB
25555}
25556
25557 abuf->written = written;
25558 return vpc;
25559#undef FLD
25560}
25561
25562/* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25563
25564static SEM_PC
25565SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25566{
25567#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25569 int UNUSED written = 0;
25570 IADDR UNUSED pc = abuf->addr;
25571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25572
e930b1f5 25573if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25574if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25575frvbf_media_acc_not_aligned (current_cpu);
25576} else {
25577if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25578frvbf_media_register_not_aligned (current_cpu);
25579} else {
25580{
25581 HI tmp_argihi;
25582 HI tmp_argilo;
25583 HI tmp_argjhi;
25584 HI tmp_argjlo;
25585{
25586 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25587 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25588 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25589 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25590}
25591{
25592 DI tmp_tmp;
25593 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25594if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25595{
25596 {
25597 DI opval = MAKEDI (127, 0xffffffff);
25598 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25599 written |= (1 << 19);
25600 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25601 }
25602frvbf_media_overflow (current_cpu, 2);
25603}
25604} else {
25605if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25606{
25607 {
25608 DI opval = MAKEDI (0xffffff80, 0);
25609 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25610 written |= (1 << 19);
25611 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25612 }
25613frvbf_media_overflow (current_cpu, 2);
25614}
25615} else {
25616 {
25617 DI opval = tmp_tmp;
25618 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25619 written |= (1 << 19);
25620 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25621 }
25622}
25623}
25624}
25625{
25626 DI tmp_tmp;
25627 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25628if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25629{
25630 {
25631 DI opval = MAKEDI (127, 0xffffffff);
25632 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25633 written |= (1 << 20);
25634 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25635 }
25636frvbf_media_overflow (current_cpu, 1);
25637}
25638} else {
25639if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25640{
25641 {
25642 DI opval = MAKEDI (0xffffff80, 0);
25643 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25644 written |= (1 << 20);
25645 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25646 }
25647frvbf_media_overflow (current_cpu, 1);
25648}
25649} else {
25650 {
25651 DI opval = tmp_tmp;
25652 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25653 written |= (1 << 20);
25654 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25655 }
25656}
25657}
25658}
25659{
25660 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25661 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25662 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25663 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25664}
25665{
25666 DI tmp_tmp;
25667 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25668if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25669{
25670 {
25671 DI opval = MAKEDI (127, 0xffffffff);
25672 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25673 written |= (1 << 17);
25674 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25675 }
25676frvbf_media_overflow (current_cpu, 8);
25677}
25678} else {
25679if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25680{
25681 {
25682 DI opval = MAKEDI (0xffffff80, 0);
25683 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25684 written |= (1 << 17);
25685 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25686 }
25687frvbf_media_overflow (current_cpu, 8);
25688}
25689} else {
25690 {
25691 DI opval = tmp_tmp;
25692 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25693 written |= (1 << 17);
25694 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25695 }
25696}
25697}
25698}
25699{
25700 DI tmp_tmp;
25701 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25702if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25703{
25704 {
25705 DI opval = MAKEDI (127, 0xffffffff);
25706 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25707 written |= (1 << 18);
25708 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25709 }
25710frvbf_media_overflow (current_cpu, 4);
25711}
25712} else {
25713if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25714{
25715 {
25716 DI opval = MAKEDI (0xffffff80, 0);
25717 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25718 written |= (1 << 18);
25719 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25720 }
25721frvbf_media_overflow (current_cpu, 4);
25722}
25723} else {
25724 {
25725 DI opval = tmp_tmp;
25726 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25727 written |= (1 << 18);
25728 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25729 }
25730}
25731}
25732}
25733}
25734}
e930b1f5 25735}
b34f6357
DB
25736}
25737
25738 abuf->written = written;
25739 return vpc;
25740#undef FLD
25741}
25742
25743/* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25744
25745static SEM_PC
25746SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25747{
25748#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25750 int UNUSED written = 0;
25751 IADDR UNUSED pc = abuf->addr;
25752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25753
e930b1f5 25754if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25755if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25756frvbf_media_acc_not_aligned (current_cpu);
25757} else {
25758if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25759frvbf_media_register_not_aligned (current_cpu);
25760} else {
25761{
25762 HI tmp_argihi;
25763 HI tmp_argilo;
25764 HI tmp_argjhi;
25765 HI tmp_argjlo;
25766{
25767 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25768 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25769 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25770 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25771}
25772{
25773 DI tmp_tmp;
25774 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25775if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25776{
25777 {
25778 DI opval = MAKEDI (127, 0xffffffff);
25779 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25780 written |= (1 << 19);
25781 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25782 }
25783frvbf_media_overflow (current_cpu, 2);
25784}
25785} else {
25786if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25787{
25788 {
25789 DI opval = MAKEDI (0xffffff80, 0);
25790 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25791 written |= (1 << 19);
25792 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25793 }
25794frvbf_media_overflow (current_cpu, 2);
25795}
25796} else {
25797 {
25798 DI opval = tmp_tmp;
25799 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25800 written |= (1 << 19);
25801 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25802 }
25803}
25804}
25805}
25806{
25807 DI tmp_tmp;
25808 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25809if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25810{
25811 {
25812 DI opval = MAKEDI (127, 0xffffffff);
25813 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25814 written |= (1 << 20);
25815 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25816 }
25817frvbf_media_overflow (current_cpu, 1);
25818}
25819} else {
25820if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25821{
25822 {
25823 DI opval = MAKEDI (0xffffff80, 0);
25824 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25825 written |= (1 << 20);
25826 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25827 }
25828frvbf_media_overflow (current_cpu, 1);
25829}
25830} else {
25831 {
25832 DI opval = tmp_tmp;
25833 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25834 written |= (1 << 20);
25835 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25836 }
25837}
25838}
25839}
25840{
25841 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25842 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25843 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25844 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25845}
25846{
25847 DI tmp_tmp;
25848 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25849if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25850{
25851 {
25852 DI opval = MAKEDI (127, 0xffffffff);
25853 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25854 written |= (1 << 17);
25855 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25856 }
25857frvbf_media_overflow (current_cpu, 8);
25858}
25859} else {
25860if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25861{
25862 {
25863 DI opval = MAKEDI (0xffffff80, 0);
25864 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25865 written |= (1 << 17);
25866 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25867 }
25868frvbf_media_overflow (current_cpu, 8);
25869}
25870} else {
25871 {
25872 DI opval = tmp_tmp;
25873 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25874 written |= (1 << 17);
25875 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25876 }
25877}
25878}
25879}
25880{
25881 DI tmp_tmp;
25882 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25883if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25884{
25885 {
25886 DI opval = MAKEDI (127, 0xffffffff);
25887 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25888 written |= (1 << 18);
25889 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25890 }
25891frvbf_media_overflow (current_cpu, 4);
25892}
25893} else {
25894if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25895{
25896 {
25897 DI opval = MAKEDI (0xffffff80, 0);
25898 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25899 written |= (1 << 18);
25900 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25901 }
25902frvbf_media_overflow (current_cpu, 4);
25903}
25904} else {
25905 {
25906 DI opval = tmp_tmp;
25907 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25908 written |= (1 << 18);
25909 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25910 }
25911}
25912}
25913}
25914}
25915}
e930b1f5 25916}
b34f6357
DB
25917}
25918
25919 abuf->written = written;
25920 return vpc;
25921#undef FLD
25922}
25923
25924/* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25925
25926static SEM_PC
25927SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25928{
25929#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25931 int UNUSED written = 0;
25932 IADDR UNUSED pc = abuf->addr;
25933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25934
e930b1f5 25935if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25936if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25937frvbf_media_acc_not_aligned (current_cpu);
25938} else {
25939if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25940frvbf_media_register_not_aligned (current_cpu);
25941} else {
25942{
25943 HI tmp_argihi;
25944 HI tmp_argilo;
25945 HI tmp_argjhi;
25946 HI tmp_argjlo;
25947{
25948 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25949 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25950 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25951 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25952}
25953{
25954 DI tmp_tmp;
25955 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25956if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25957{
25958 {
25959 DI opval = MAKEDI (127, 0xffffffff);
25960 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25961 written |= (1 << 17);
25962 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25963 }
25964frvbf_media_overflow (current_cpu, 8);
25965}
25966} else {
25967if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25968{
25969 {
25970 DI opval = MAKEDI (0xffffff80, 0);
25971 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25972 written |= (1 << 17);
25973 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25974 }
25975frvbf_media_overflow (current_cpu, 8);
25976}
25977} else {
25978 {
25979 DI opval = tmp_tmp;
25980 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25981 written |= (1 << 17);
25982 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25983 }
25984}
25985}
25986}
25987{
25988 DI tmp_tmp;
25989 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25990if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25991{
25992 {
25993 DI opval = MAKEDI (127, 0xffffffff);
25994 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25995 written |= (1 << 18);
25996 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25997 }
25998frvbf_media_overflow (current_cpu, 4);
25999}
26000} else {
26001if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26002{
26003 {
26004 DI opval = MAKEDI (0xffffff80, 0);
26005 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26006 written |= (1 << 18);
26007 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26008 }
26009frvbf_media_overflow (current_cpu, 4);
26010}
26011} else {
26012 {
26013 DI opval = tmp_tmp;
26014 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26015 written |= (1 << 18);
26016 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26017 }
26018}
26019}
26020}
26021{
26022 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26023 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26024 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26025 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26026}
26027{
26028 DI tmp_tmp;
26029 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
26030if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26031{
26032 {
26033 DI opval = MAKEDI (127, 0xffffffff);
26034 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26035 written |= (1 << 19);
26036 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26037 }
26038frvbf_media_overflow (current_cpu, 2);
26039}
26040} else {
26041if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26042{
26043 {
26044 DI opval = MAKEDI (0xffffff80, 0);
26045 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26046 written |= (1 << 19);
26047 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26048 }
26049frvbf_media_overflow (current_cpu, 2);
26050}
26051} else {
26052 {
26053 DI opval = tmp_tmp;
26054 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26055 written |= (1 << 19);
26056 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26057 }
26058}
26059}
26060}
26061{
26062 DI tmp_tmp;
26063 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
26064if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26065{
26066 {
26067 DI opval = MAKEDI (127, 0xffffffff);
26068 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26069 written |= (1 << 20);
26070 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26071 }
26072frvbf_media_overflow (current_cpu, 1);
26073}
26074} else {
26075if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26076{
26077 {
26078 DI opval = MAKEDI (0xffffff80, 0);
26079 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26080 written |= (1 << 20);
26081 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26082 }
26083frvbf_media_overflow (current_cpu, 1);
26084}
26085} else {
26086 {
26087 DI opval = tmp_tmp;
26088 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26089 written |= (1 << 20);
26090 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26091 }
26092}
26093}
26094}
26095}
26096}
e930b1f5 26097}
b34f6357
DB
26098}
26099
26100 abuf->written = written;
26101 return vpc;
26102#undef FLD
26103}
26104
26105/* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26106
26107static SEM_PC
26108SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26109{
26110#define FLD(f) abuf->fields.sfmt_cmmachs.f
26111 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26112 int UNUSED written = 0;
26113 IADDR UNUSED pc = abuf->addr;
26114 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26115
e930b1f5 26116if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26117{
26118 HI tmp_argihi;
26119 HI tmp_argilo;
26120 HI tmp_argjhi;
26121 HI tmp_argjlo;
26122{
26123 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26124 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26125 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26126 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26127}
26128{
26129 DI tmp_tmp1;
26130 DI tmp_tmp2;
26131 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26132 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26133 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26134if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26135{
26136 {
26137 DI opval = MAKEDI (127, 0xffffffff);
26138 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26139 written |= (1 << 9);
b34f6357
DB
26140 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26141 }
26142frvbf_media_overflow (current_cpu, 8);
26143}
26144} else {
26145if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26146{
26147 {
26148 DI opval = MAKEDI (0xffffff80, 0);
26149 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26150 written |= (1 << 9);
b34f6357
DB
26151 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26152 }
26153frvbf_media_overflow (current_cpu, 8);
26154}
26155} else {
26156 {
26157 DI opval = tmp_tmp1;
26158 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26159 written |= (1 << 9);
b34f6357
DB
26160 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26161 }
26162}
26163}
26164}
e930b1f5 26165}
b34f6357
DB
26166}
26167
26168 abuf->written = written;
26169 return vpc;
26170#undef FLD
26171}
26172
26173/* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26174
26175static SEM_PC
26176SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26177{
26178#define FLD(f) abuf->fields.sfmt_cmmachs.f
26179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26180 int UNUSED written = 0;
26181 IADDR UNUSED pc = abuf->addr;
26182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26183
e930b1f5 26184if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26185{
26186 UHI tmp_argihi;
26187 UHI tmp_argilo;
26188 UHI tmp_argjhi;
26189 UHI tmp_argjlo;
26190{
26191 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26192 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26193 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26194 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26195}
26196{
26197 DI tmp_tmp1;
26198 DI tmp_tmp2;
26199 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26200 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26201 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26202if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26203{
26204 {
26205 DI opval = MAKEDI (255, 0xffffffff);
26206 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26207 written |= (1 << 9);
b34f6357
DB
26208 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26209 }
26210frvbf_media_overflow (current_cpu, 8);
26211}
26212} else {
26213if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26214{
26215 {
26216 DI opval = MAKEDI (0, 0);
26217 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26218 written |= (1 << 9);
b34f6357
DB
26219 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26220 }
26221frvbf_media_overflow (current_cpu, 8);
26222}
26223} else {
26224 {
26225 DI opval = tmp_tmp1;
26226 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26227 written |= (1 << 9);
b34f6357
DB
26228 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26229 }
26230}
26231}
26232}
e930b1f5 26233}
b34f6357
DB
26234}
26235
26236 abuf->written = written;
26237 return vpc;
26238#undef FLD
26239}
26240
26241/* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26242
26243static SEM_PC
26244SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26245{
26246#define FLD(f) abuf->fields.sfmt_cmmachs.f
26247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26248 int UNUSED written = 0;
26249 IADDR UNUSED pc = abuf->addr;
26250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26251
e930b1f5 26252if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26253{
26254 HI tmp_argihi;
26255 HI tmp_argilo;
26256 HI tmp_argjhi;
26257 HI tmp_argjlo;
26258{
26259 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26260 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26261 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26262 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26263}
26264{
26265 DI tmp_tmp1;
26266 DI tmp_tmp2;
26267 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26268 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26269 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26270if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26271{
26272 {
26273 DI opval = MAKEDI (127, 0xffffffff);
26274 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26275 written |= (1 << 9);
b34f6357
DB
26276 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26277 }
26278frvbf_media_overflow (current_cpu, 8);
26279}
26280} else {
26281if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26282{
26283 {
26284 DI opval = MAKEDI (0xffffff80, 0);
26285 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26286 written |= (1 << 9);
b34f6357
DB
26287 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26288 }
26289frvbf_media_overflow (current_cpu, 8);
26290}
26291} else {
26292 {
26293 DI opval = tmp_tmp1;
26294 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26295 written |= (1 << 9);
b34f6357
DB
26296 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26297 }
26298}
26299}
26300}
e930b1f5 26301}
b34f6357
DB
26302}
26303
26304 abuf->written = written;
26305 return vpc;
26306#undef FLD
26307}
26308
26309/* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26310
26311static SEM_PC
26312SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26313{
26314#define FLD(f) abuf->fields.sfmt_cmmachs.f
26315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26316 int UNUSED written = 0;
26317 IADDR UNUSED pc = abuf->addr;
26318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26319
e930b1f5 26320if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26321{
26322 UHI tmp_argihi;
26323 UHI tmp_argilo;
26324 UHI tmp_argjhi;
26325 UHI tmp_argjlo;
26326{
26327 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26328 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26329 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26330 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26331}
26332{
26333 DI tmp_tmp1;
26334 DI tmp_tmp2;
26335 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26336 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26337 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26338if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26339{
26340 {
26341 DI opval = MAKEDI (255, 0xffffffff);
26342 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26343 written |= (1 << 9);
b34f6357
DB
26344 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26345 }
26346frvbf_media_overflow (current_cpu, 8);
26347}
26348} else {
26349if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26350{
26351 {
26352 DI opval = MAKEDI (0, 0);
26353 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26354 written |= (1 << 9);
b34f6357
DB
26355 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26356 }
26357frvbf_media_overflow (current_cpu, 8);
26358}
26359} else {
26360 {
26361 DI opval = tmp_tmp1;
26362 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26363 written |= (1 << 9);
b34f6357
DB
26364 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26365 }
26366}
26367}
26368}
e930b1f5 26369}
b34f6357
DB
26370}
26371
26372 abuf->written = written;
26373 return vpc;
26374#undef FLD
26375}
26376
26377/* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26378
26379static SEM_PC
26380SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26381{
26382#define FLD(f) abuf->fields.sfmt_cmmachs.f
26383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26384 int UNUSED written = 0;
26385 IADDR UNUSED pc = abuf->addr;
26386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26387
26388if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26389if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26390{
26391 HI tmp_argihi;
26392 HI tmp_argilo;
26393 HI tmp_argjhi;
26394 HI tmp_argjlo;
26395{
26396 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26397 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26398 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26399 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26400}
26401{
26402 DI tmp_tmp1;
26403 DI tmp_tmp2;
26404 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26405 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26406 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26407if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26408{
26409 {
26410 DI opval = MAKEDI (127, 0xffffffff);
26411 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26412 written |= (1 << 11);
b34f6357
DB
26413 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26414 }
26415frvbf_media_overflow (current_cpu, 8);
26416}
26417} else {
26418if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26419{
26420 {
26421 DI opval = MAKEDI (0xffffff80, 0);
26422 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26423 written |= (1 << 11);
b34f6357
DB
26424 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26425 }
26426frvbf_media_overflow (current_cpu, 8);
26427}
26428} else {
26429 {
26430 DI opval = tmp_tmp1;
26431 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26432 written |= (1 << 11);
b34f6357
DB
26433 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26434 }
26435}
26436}
26437}
26438}
e930b1f5 26439}
b34f6357
DB
26440}
26441
26442 abuf->written = written;
26443 return vpc;
26444#undef FLD
26445}
26446
26447/* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26448
26449static SEM_PC
26450SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26451{
26452#define FLD(f) abuf->fields.sfmt_cmmachs.f
26453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26454 int UNUSED written = 0;
26455 IADDR UNUSED pc = abuf->addr;
26456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26457
26458if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26459if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26460{
26461 UHI tmp_argihi;
26462 UHI tmp_argilo;
26463 UHI tmp_argjhi;
26464 UHI tmp_argjlo;
26465{
26466 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26467 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26468 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26469 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26470}
26471{
26472 DI tmp_tmp1;
26473 DI tmp_tmp2;
26474 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26475 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26476 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26477if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26478{
26479 {
26480 DI opval = MAKEDI (255, 0xffffffff);
26481 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26482 written |= (1 << 11);
b34f6357
DB
26483 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26484 }
26485frvbf_media_overflow (current_cpu, 8);
26486}
26487} else {
26488if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26489{
26490 {
26491 DI opval = MAKEDI (0, 0);
26492 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26493 written |= (1 << 11);
b34f6357
DB
26494 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26495 }
26496frvbf_media_overflow (current_cpu, 8);
26497}
26498} else {
26499 {
26500 DI opval = tmp_tmp1;
26501 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26502 written |= (1 << 11);
b34f6357
DB
26503 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26504 }
26505}
26506}
26507}
26508}
e930b1f5 26509}
b34f6357
DB
26510}
26511
26512 abuf->written = written;
26513 return vpc;
26514#undef FLD
26515}
26516
26517/* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26518
26519static SEM_PC
26520SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26521{
26522#define FLD(f) abuf->fields.sfmt_cmmachs.f
26523 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26524 int UNUSED written = 0;
26525 IADDR UNUSED pc = abuf->addr;
26526 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26527
26528if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26529if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26530{
26531 HI tmp_argihi;
26532 HI tmp_argilo;
26533 HI tmp_argjhi;
26534 HI tmp_argjlo;
26535{
26536 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26537 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26538 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26539 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26540}
26541{
26542 DI tmp_tmp1;
26543 DI tmp_tmp2;
26544 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26545 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26546 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26547if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26548{
26549 {
26550 DI opval = MAKEDI (127, 0xffffffff);
26551 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26552 written |= (1 << 11);
b34f6357
DB
26553 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26554 }
26555frvbf_media_overflow (current_cpu, 8);
26556}
26557} else {
26558if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26559{
26560 {
26561 DI opval = MAKEDI (0xffffff80, 0);
26562 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26563 written |= (1 << 11);
b34f6357
DB
26564 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26565 }
26566frvbf_media_overflow (current_cpu, 8);
26567}
26568} else {
26569 {
26570 DI opval = tmp_tmp1;
26571 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26572 written |= (1 << 11);
b34f6357
DB
26573 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26574 }
26575}
26576}
26577}
26578}
e930b1f5 26579}
b34f6357
DB
26580}
26581
26582 abuf->written = written;
26583 return vpc;
26584#undef FLD
26585}
26586
26587/* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26588
26589static SEM_PC
26590SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26591{
26592#define FLD(f) abuf->fields.sfmt_cmmachs.f
26593 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26594 int UNUSED written = 0;
26595 IADDR UNUSED pc = abuf->addr;
26596 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26597
26598if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26599if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26600{
26601 UHI tmp_argihi;
26602 UHI tmp_argilo;
26603 UHI tmp_argjhi;
26604 UHI tmp_argjlo;
26605{
26606 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26607 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26608 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26609 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26610}
26611{
26612 DI tmp_tmp1;
26613 DI tmp_tmp2;
26614 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26615 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26616 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26617if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26618{
26619 {
26620 DI opval = MAKEDI (255, 0xffffffff);
26621 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26622 written |= (1 << 11);
b34f6357
DB
26623 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26624 }
26625frvbf_media_overflow (current_cpu, 8);
26626}
26627} else {
26628if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26629{
26630 {
26631 DI opval = MAKEDI (0, 0);
26632 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26633 written |= (1 << 11);
b34f6357
DB
26634 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26635 }
26636frvbf_media_overflow (current_cpu, 8);
26637}
26638} else {
26639 {
26640 DI opval = tmp_tmp1;
26641 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26642 written |= (1 << 11);
b34f6357
DB
26643 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26644 }
26645}
26646}
26647}
26648}
e930b1f5 26649}
b34f6357
DB
26650}
26651
26652 abuf->written = written;
26653 return vpc;
26654#undef FLD
26655}
26656
26657/* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26658
26659static SEM_PC
26660SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26661{
26662#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26664 int UNUSED written = 0;
26665 IADDR UNUSED pc = abuf->addr;
26666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26667
e930b1f5 26668if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26669if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26670frvbf_media_acc_not_aligned (current_cpu);
26671} else {
26672if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26673frvbf_media_register_not_aligned (current_cpu);
26674} else {
26675{
26676 HI tmp_argihi;
26677 HI tmp_argilo;
26678 HI tmp_argjhi;
26679 HI tmp_argjlo;
26680{
26681 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26682 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26683 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26684 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26685}
26686{
26687 DI tmp_tmp1;
26688 DI tmp_tmp2;
26689 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26690 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26691 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26692if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26693{
26694 {
26695 DI opval = MAKEDI (127, 0xffffffff);
26696 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26697 written |= (1 << 13);
26698 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26699 }
26700frvbf_media_overflow (current_cpu, 8);
26701}
26702} else {
26703if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26704{
26705 {
26706 DI opval = MAKEDI (0xffffff80, 0);
26707 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26708 written |= (1 << 13);
26709 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26710 }
26711frvbf_media_overflow (current_cpu, 8);
26712}
26713} else {
26714 {
26715 DI opval = tmp_tmp1;
26716 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26717 written |= (1 << 13);
26718 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26719 }
26720}
26721}
26722}
26723{
26724 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26725 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26726 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26727 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26728}
26729{
26730 DI tmp_tmp1;
26731 DI tmp_tmp2;
26732 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26733 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26734 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26735if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26736{
26737 {
26738 DI opval = MAKEDI (127, 0xffffffff);
26739 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26740 written |= (1 << 14);
26741 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26742 }
26743frvbf_media_overflow (current_cpu, 4);
26744}
26745} else {
26746if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26747{
26748 {
26749 DI opval = MAKEDI (0xffffff80, 0);
26750 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26751 written |= (1 << 14);
26752 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26753 }
26754frvbf_media_overflow (current_cpu, 4);
26755}
26756} else {
26757 {
26758 DI opval = tmp_tmp1;
26759 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26760 written |= (1 << 14);
26761 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26762 }
26763}
26764}
26765}
26766}
26767}
e930b1f5 26768}
b34f6357
DB
26769}
26770
26771 abuf->written = written;
26772 return vpc;
26773#undef FLD
26774}
26775
26776/* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26777
26778static SEM_PC
26779SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26780{
26781#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26782 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26783 int UNUSED written = 0;
26784 IADDR UNUSED pc = abuf->addr;
26785 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26786
e930b1f5 26787if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26788if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26789frvbf_media_acc_not_aligned (current_cpu);
26790} else {
26791if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26792frvbf_media_register_not_aligned (current_cpu);
26793} else {
26794{
26795 UHI tmp_argihi;
26796 UHI tmp_argilo;
26797 UHI tmp_argjhi;
26798 UHI tmp_argjlo;
26799{
26800 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26801 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26802 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26803 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26804}
26805{
26806 DI tmp_tmp1;
26807 DI tmp_tmp2;
26808 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26809 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26810 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26811if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26812{
26813 {
26814 DI opval = MAKEDI (255, 0xffffffff);
26815 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26816 written |= (1 << 13);
26817 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26818 }
26819frvbf_media_overflow (current_cpu, 8);
26820}
26821} else {
26822if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26823{
26824 {
26825 DI opval = MAKEDI (0, 0);
26826 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26827 written |= (1 << 13);
26828 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26829 }
26830frvbf_media_overflow (current_cpu, 8);
26831}
26832} else {
26833 {
26834 DI opval = tmp_tmp1;
26835 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26836 written |= (1 << 13);
26837 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26838 }
26839}
26840}
26841}
26842{
26843 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26844 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26845 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26846 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26847}
26848{
26849 DI tmp_tmp1;
26850 DI tmp_tmp2;
26851 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26852 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26853 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26854if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26855{
26856 {
26857 DI opval = MAKEDI (255, 0xffffffff);
26858 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26859 written |= (1 << 14);
26860 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26861 }
26862frvbf_media_overflow (current_cpu, 4);
26863}
26864} else {
26865if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26866{
26867 {
26868 DI opval = MAKEDI (0, 0);
26869 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26870 written |= (1 << 14);
26871 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26872 }
26873frvbf_media_overflow (current_cpu, 4);
26874}
26875} else {
26876 {
26877 DI opval = tmp_tmp1;
26878 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26879 written |= (1 << 14);
26880 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26881 }
26882}
26883}
26884}
26885}
26886}
e930b1f5 26887}
b34f6357
DB
26888}
26889
26890 abuf->written = written;
26891 return vpc;
26892#undef FLD
26893}
26894
26895/* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26896
26897static SEM_PC
26898SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26899{
26900#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26901 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26902 int UNUSED written = 0;
26903 IADDR UNUSED pc = abuf->addr;
26904 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26905
e930b1f5 26906if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26907if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26908frvbf_media_acc_not_aligned (current_cpu);
26909} else {
26910if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26911frvbf_media_register_not_aligned (current_cpu);
26912} else {
26913{
26914 HI tmp_argihi;
26915 HI tmp_argilo;
26916 HI tmp_argjhi;
26917 HI tmp_argjlo;
26918{
26919 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26920 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26921 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26922 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26923}
26924{
26925 DI tmp_tmp1;
26926 DI tmp_tmp2;
26927 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26928 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26929 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26930if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26931{
26932 {
26933 DI opval = MAKEDI (127, 0xffffffff);
26934 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26935 written |= (1 << 13);
26936 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26937 }
26938frvbf_media_overflow (current_cpu, 8);
26939}
26940} else {
26941if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26942{
26943 {
26944 DI opval = MAKEDI (0xffffff80, 0);
26945 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26946 written |= (1 << 13);
26947 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26948 }
26949frvbf_media_overflow (current_cpu, 8);
26950}
26951} else {
26952 {
26953 DI opval = tmp_tmp1;
26954 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26955 written |= (1 << 13);
26956 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26957 }
26958}
26959}
26960}
26961{
26962 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26963 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26964 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26965 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26966}
26967{
26968 DI tmp_tmp1;
26969 DI tmp_tmp2;
26970 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26971 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26972 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26973if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26974{
26975 {
26976 DI opval = MAKEDI (127, 0xffffffff);
26977 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26978 written |= (1 << 14);
26979 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26980 }
26981frvbf_media_overflow (current_cpu, 4);
26982}
26983} else {
26984if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26985{
26986 {
26987 DI opval = MAKEDI (0xffffff80, 0);
26988 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26989 written |= (1 << 14);
26990 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26991 }
26992frvbf_media_overflow (current_cpu, 4);
26993}
26994} else {
26995 {
26996 DI opval = tmp_tmp1;
26997 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26998 written |= (1 << 14);
26999 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27000 }
27001}
27002}
27003}
27004}
27005}
e930b1f5 27006}
b34f6357
DB
27007}
27008
27009 abuf->written = written;
27010 return vpc;
27011#undef FLD
27012}
27013
27014/* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
27015
27016static SEM_PC
27017SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27018{
27019#define FLD(f) abuf->fields.sfmt_cmqmachs.f
27020 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27021 int UNUSED written = 0;
27022 IADDR UNUSED pc = abuf->addr;
27023 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27024
e930b1f5 27025if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
27026if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
27027frvbf_media_acc_not_aligned (current_cpu);
27028} else {
27029if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
27030frvbf_media_register_not_aligned (current_cpu);
27031} else {
27032{
27033 UHI tmp_argihi;
27034 UHI tmp_argilo;
27035 UHI tmp_argjhi;
27036 UHI tmp_argjlo;
27037{
27038 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27039 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27040 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27041 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27042}
27043{
27044 DI tmp_tmp1;
27045 DI tmp_tmp2;
27046 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27047 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27048 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27049if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27050{
27051 {
27052 DI opval = MAKEDI (255, 0xffffffff);
27053 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27054 written |= (1 << 13);
27055 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27056 }
27057frvbf_media_overflow (current_cpu, 8);
27058}
27059} else {
27060if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27061{
27062 {
27063 DI opval = MAKEDI (0, 0);
27064 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27065 written |= (1 << 13);
27066 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27067 }
27068frvbf_media_overflow (current_cpu, 8);
27069}
27070} else {
27071 {
27072 DI opval = tmp_tmp1;
27073 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27074 written |= (1 << 13);
27075 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27076 }
27077}
27078}
27079}
27080{
27081 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27082 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27083 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27084 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27085}
27086{
27087 DI tmp_tmp1;
27088 DI tmp_tmp2;
27089 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27090 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27091 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27092if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27093{
27094 {
27095 DI opval = MAKEDI (255, 0xffffffff);
27096 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27097 written |= (1 << 14);
27098 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27099 }
27100frvbf_media_overflow (current_cpu, 4);
27101}
27102} else {
27103if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27104{
27105 {
27106 DI opval = MAKEDI (0, 0);
27107 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27108 written |= (1 << 14);
27109 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27110 }
27111frvbf_media_overflow (current_cpu, 4);
27112}
27113} else {
27114 {
27115 DI opval = tmp_tmp1;
27116 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27117 written |= (1 << 14);
27118 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27119 }
27120}
27121}
27122}
27123}
27124}
e930b1f5 27125}
b34f6357
DB
27126}
27127
27128 abuf->written = written;
27129 return vpc;
27130#undef FLD
27131}
27132
27133/* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27134
27135static SEM_PC
27136SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27137{
27138#define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27140 int UNUSED written = 0;
27141 IADDR UNUSED pc = abuf->addr;
27142 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27143
27144{
27145 UHI tmp_tmp;
27146if (ANDSI (FLD (f_u6), 1)) {
27147 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27148} else {
27149 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27150}
27151 {
27152 UHI opval = tmp_tmp;
27153 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27154 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27155 }
27156 {
27157 UHI opval = tmp_tmp;
27158 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27159 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27160 }
27161}
27162
27163 return vpc;
27164#undef FLD
27165}
27166
27167/* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27168
27169static SEM_PC
27170SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27171{
27172#define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27173 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27174 int UNUSED written = 0;
27175 IADDR UNUSED pc = abuf->addr;
27176 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27177
27178if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27179{
27180 UHI tmp_tmp;
27181if (ANDSI (FLD (f_u6), 1)) {
27182 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27183} else {
27184 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27185}
27186 {
27187 UHI opval = tmp_tmp;
27188 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27189 written |= (1 << 7);
27190 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27191 }
27192 {
27193 UHI opval = tmp_tmp;
27194 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27195 written |= (1 << 8);
27196 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27197 }
27198}
27199}
27200
27201 abuf->written = written;
27202 return vpc;
27203#undef FLD
27204}
27205
27206/* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27207
27208static SEM_PC
27209SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27210{
27211#define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27213 int UNUSED written = 0;
27214 IADDR UNUSED pc = abuf->addr;
27215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27216
27217if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27218frvbf_media_register_not_aligned (current_cpu);
27219} else {
27220{
27221 UHI tmp_tmp;
27222 {
27223 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27224 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27225 written |= (1 << 6);
27226 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27227 }
27228if (ANDSI (FLD (f_u6), 1)) {
27229 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27230} else {
27231 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27232}
27233 {
27234 UHI opval = tmp_tmp;
27235 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27236 written |= (1 << 7);
27237 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27238 }
27239 {
27240 UHI opval = tmp_tmp;
27241 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27242 written |= (1 << 9);
27243 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27244 }
27245 {
27246 UHI opval = tmp_tmp;
27247 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27248 written |= (1 << 8);
27249 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27250 }
27251 {
27252 UHI opval = tmp_tmp;
27253 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27254 written |= (1 << 10);
27255 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27256 }
27257}
27258}
27259
27260 abuf->written = written;
27261 return vpc;
27262#undef FLD
27263}
27264
27265/* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27266
27267static SEM_PC
27268SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27269{
27270#define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27272 int UNUSED written = 0;
27273 IADDR UNUSED pc = abuf->addr;
27274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27275
27276if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27277frvbf_media_register_not_aligned (current_cpu);
27278} else {
27279if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27280{
27281 UHI tmp_tmp;
27282 {
27283 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27284 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27285 written |= (1 << 8);
27286 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27287 }
27288if (ANDSI (FLD (f_u6), 1)) {
27289 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27290} else {
27291 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27292}
27293 {
27294 UHI opval = tmp_tmp;
27295 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27296 written |= (1 << 9);
27297 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27298 }
27299 {
27300 UHI opval = tmp_tmp;
27301 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27302 written |= (1 << 11);
27303 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27304 }
27305 {
27306 UHI opval = tmp_tmp;
27307 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27308 written |= (1 << 10);
27309 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27310 }
27311 {
27312 UHI opval = tmp_tmp;
27313 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27314 written |= (1 << 12);
27315 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27316 }
27317}
27318}
27319}
27320
27321 abuf->written = written;
27322 return vpc;
27323#undef FLD
27324}
27325
27326/* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27327
27328static SEM_PC
27329SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27330{
27331#define FLD(f) abuf->fields.sfmt_cmaddhss.f
27332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27333 int UNUSED written = 0;
27334 IADDR UNUSED pc = abuf->addr;
27335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27336
27337{
27338 {
27339 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27340 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27341 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27342 }
27343 {
27344 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27345 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27346 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27347 }
27348}
27349
27350 return vpc;
27351#undef FLD
27352}
27353
27354/* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27355
27356static SEM_PC
27357SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27358{
27359#define FLD(f) abuf->fields.sfmt_mdpackh.f
27360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27361 int UNUSED written = 0;
27362 IADDR UNUSED pc = abuf->addr;
27363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27364
27365if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27366frvbf_media_register_not_aligned (current_cpu);
27367} else {
27368{
27369 {
27370 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27371 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27372 written |= (1 << 10);
27373 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27374 }
27375 {
27376 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27377 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27378 written |= (1 << 11);
27379 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27380 }
27381 {
27382 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27383 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27384 written |= (1 << 12);
27385 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27386 }
27387{
27388 {
27389 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27390 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27391 written |= (1 << 13);
27392 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27393 }
27394 {
27395 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27396 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27397 written |= (1 << 15);
27398 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27399 }
27400}
27401{
27402 {
27403 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27404 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27405 written |= (1 << 14);
27406 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27407 }
27408 {
27409 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27410 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27411 written |= (1 << 16);
27412 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27413 }
27414}
27415}
27416}
27417
27418 abuf->written = written;
27419 return vpc;
27420#undef FLD
27421}
27422
27423/* munpackh: munpackh$pack $FRinti,$FRintkeven */
27424
27425static SEM_PC
27426SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27427{
27428#define FLD(f) abuf->fields.sfmt_munpackh.f
27429 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27430 int UNUSED written = 0;
27431 IADDR UNUSED pc = abuf->addr;
27432 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27433
27434if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27435frvbf_media_register_not_aligned (current_cpu);
27436} else {
27437{
27438 {
27439 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27440 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27441 written |= (1 << 6);
27442 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27443 }
27444 {
27445 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27446 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27447 written |= (1 << 7);
27448 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27449 }
27450{
27451 {
27452 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27453 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27454 written |= (1 << 8);
27455 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27456 }
27457 {
27458 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27459 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27460 written |= (1 << 10);
27461 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27462 }
27463 {
27464 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27465 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27466 written |= (1 << 9);
27467 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27468 }
27469 {
27470 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27471 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27472 written |= (1 << 11);
27473 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27474 }
27475}
27476}
27477}
27478
27479 abuf->written = written;
27480 return vpc;
27481#undef FLD
27482}
27483
27484/* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27485
27486static SEM_PC
27487SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27488{
27489#define FLD(f) abuf->fields.sfmt_mdunpackh.f
27490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27491 int UNUSED written = 0;
27492 IADDR UNUSED pc = abuf->addr;
27493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27494
27495if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27496frvbf_media_register_not_aligned (current_cpu);
27497} else {
27498{
27499 {
27500 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27501 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27502 written |= (1 << 8);
27503 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27504 }
27505 {
27506 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27507 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27508 written |= (1 << 9);
27509 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27510 }
27511{
27512 {
27513 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27514 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27515 written |= (1 << 10);
27516 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27517 }
27518 {
27519 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27520 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27521 written |= (1 << 14);
27522 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27523 }
27524 {
27525 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27526 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27527 written |= (1 << 12);
27528 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27529 }
27530 {
27531 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27532 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27533 written |= (1 << 16);
27534 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27535 }
27536}
27537{
27538 {
27539 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27540 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27541 written |= (1 << 11);
27542 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27543 }
27544 {
27545 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27546 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27547 written |= (1 << 15);
27548 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27549 }
27550 {
27551 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27552 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27553 written |= (1 << 13);
27554 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27555 }
27556 {
27557 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27558 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27559 written |= (1 << 17);
27560 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27561 }
27562}
27563}
27564}
27565
27566 abuf->written = written;
27567 return vpc;
27568#undef FLD
27569}
27570
27571/* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27572
27573static SEM_PC
27574SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27575{
27576#define FLD(f) abuf->fields.sfmt_cmbtoh.f
27577 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27578 int UNUSED written = 0;
27579 IADDR UNUSED pc = abuf->addr;
27580 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27581
27582{
27583 {
27584 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27585 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27586 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27587 }
27588 {
27589 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27590 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27591 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27592 }
27593if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27594frvbf_media_register_not_aligned (current_cpu);
27595} else {
27596{
27597 {
27598 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27599 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27600 written |= (1 << 10);
27601 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27602 }
27603 {
27604 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27605 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27606 written |= (1 << 12);
27607 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27608 }
27609 {
27610 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27611 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27612 written |= (1 << 11);
27613 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27614 }
27615 {
27616 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27617 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27618 written |= (1 << 13);
27619 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27620 }
27621}
27622}
27623}
27624
27625 abuf->written = written;
27626 return vpc;
27627#undef FLD
27628}
27629
27630/* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27631
27632static SEM_PC
27633SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27634{
27635#define FLD(f) abuf->fields.sfmt_cmbtoh.f
27636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27637 int UNUSED written = 0;
27638 IADDR UNUSED pc = abuf->addr;
27639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27640
27641{
27642 {
27643 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27644 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27645 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27646 }
27647 {
27648 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27649 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27650 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27651 }
27652if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27653frvbf_media_register_not_aligned (current_cpu);
27654} else {
27655if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27656{
27657 {
27658 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27659 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27660 written |= (1 << 12);
27661 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27662 }
27663 {
27664 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27665 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27666 written |= (1 << 14);
27667 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27668 }
27669 {
27670 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27671 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27672 written |= (1 << 13);
27673 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27674 }
27675 {
27676 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27677 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27678 written |= (1 << 15);
27679 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27680 }
27681}
27682}
27683}
27684}
27685
27686 abuf->written = written;
27687 return vpc;
27688#undef FLD
27689}
27690
27691/* mhtob: mhtob$pack $FRintjeven,$FRintk */
27692
27693static SEM_PC
27694SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27695{
27696#define FLD(f) abuf->fields.sfmt_cmhtob.f
27697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27698 int UNUSED written = 0;
27699 IADDR UNUSED pc = abuf->addr;
27700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27701
27702{
27703 {
27704 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27705 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27706 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27707 }
27708 {
27709 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27710 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27711 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27712 }
27713if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27714frvbf_media_register_not_aligned (current_cpu);
27715} else {
27716{
27717 {
27718 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27719 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27720 written |= (1 << 13);
27721 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27722 }
27723 {
27724 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27725 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27726 written |= (1 << 12);
27727 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27728 }
27729 {
27730 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27731 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27732 written |= (1 << 11);
27733 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27734 }
27735 {
27736 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27737 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27738 written |= (1 << 10);
27739 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27740 }
27741}
27742}
27743}
27744
27745 abuf->written = written;
27746 return vpc;
27747#undef FLD
27748}
27749
27750/* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27751
27752static SEM_PC
27753SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27754{
27755#define FLD(f) abuf->fields.sfmt_cmhtob.f
27756 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27757 int UNUSED written = 0;
27758 IADDR UNUSED pc = abuf->addr;
27759 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27760
27761{
27762 {
27763 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27764 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27765 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27766 }
27767 {
27768 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27769 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27770 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27771 }
27772if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27773frvbf_media_register_not_aligned (current_cpu);
27774} else {
27775if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27776{
27777 {
27778 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27779 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27780 written |= (1 << 15);
27781 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27782 }
27783 {
27784 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27785 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27786 written |= (1 << 14);
27787 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27788 }
27789 {
27790 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27791 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27792 written |= (1 << 13);
27793 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27794 }
27795 {
27796 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27797 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27798 written |= (1 << 12);
27799 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27800 }
27801}
27802}
27803}
27804}
27805
27806 abuf->written = written;
27807 return vpc;
27808#undef FLD
27809}
27810
27811/* mbtohe: mbtohe$pack $FRintj,$FRintk */
27812
27813static SEM_PC
27814SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27815{
27816#define FLD(f) abuf->fields.sfmt_cmbtohe.f
27817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27818 int UNUSED written = 0;
27819 IADDR UNUSED pc = abuf->addr;
27820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27821
27822{
27823 {
27824 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27825 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27826 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27827 }
27828 {
27829 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27830 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27831 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27832 }
27833if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27834frvbf_media_register_not_aligned (current_cpu);
27835} else {
27836{
27837 {
27838 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27839 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27840 written |= (1 << 10);
27841 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27842 }
27843 {
27844 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27845 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27846 written |= (1 << 14);
27847 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27848 }
27849 {
27850 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27851 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27852 written |= (1 << 11);
27853 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27854 }
27855 {
27856 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27857 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27858 written |= (1 << 15);
27859 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27860 }
27861 {
27862 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27863 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27864 written |= (1 << 12);
27865 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27866 }
27867 {
27868 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27869 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27870 written |= (1 << 16);
27871 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27872 }
27873 {
27874 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27875 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27876 written |= (1 << 13);
27877 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27878 }
27879 {
27880 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27881 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27882 written |= (1 << 17);
27883 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27884 }
27885}
27886}
27887}
27888
27889 abuf->written = written;
27890 return vpc;
27891#undef FLD
27892}
27893
27894/* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27895
27896static SEM_PC
27897SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27898{
27899#define FLD(f) abuf->fields.sfmt_cmbtohe.f
27900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27901 int UNUSED written = 0;
27902 IADDR UNUSED pc = abuf->addr;
27903 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27904
27905{
27906 {
27907 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27908 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27909 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27910 }
27911 {
27912 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27913 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27914 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27915 }
27916if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27917frvbf_media_register_not_aligned (current_cpu);
27918} else {
27919if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27920{
27921 {
27922 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27923 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27924 written |= (1 << 12);
27925 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27926 }
27927 {
27928 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27929 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27930 written |= (1 << 16);
27931 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27932 }
27933 {
27934 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27935 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27936 written |= (1 << 13);
27937 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27938 }
27939 {
27940 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27941 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27942 written |= (1 << 17);
27943 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27944 }
27945 {
27946 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27947 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27948 written |= (1 << 14);
27949 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27950 }
27951 {
27952 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27953 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27954 written |= (1 << 18);
27955 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27956 }
27957 {
27958 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27959 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27960 written |= (1 << 15);
27961 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27962 }
27963 {
27964 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27965 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27966 written |= (1 << 19);
27967 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27968 }
27969}
27970}
27971}
27972}
27973
27974 abuf->written = written;
27975 return vpc;
27976#undef FLD
27977}
27978
d03ea14f 27979/* mnop: mnop$pack */
b34f6357
DB
27980
27981static SEM_PC
d03ea14f 27982SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
b34f6357 27983{
d03ea14f
DB
27984#define FLD(f) abuf->fields.fmt_empty.f
27985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27986 int UNUSED written = 0;
27987 IADDR UNUSED pc = abuf->addr;
27988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27989
27990((void) 0); /*nop*/
27991
27992 return vpc;
27993#undef FLD
27994}
27995
27996/* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27997
27998static SEM_PC
27999SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28000{
28001#define FLD(f) abuf->fields.sfmt_mdasaccs.f
28002 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28003 int UNUSED written = 0;
28004 IADDR UNUSED pc = abuf->addr;
28005 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28006
28007frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
28008
28009 return vpc;
28010#undef FLD
28011}
28012
28013/* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
28014
28015static SEM_PC
28016SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28017{
28018#define FLD(f) abuf->fields.sfmt_mdasaccs.f
b34f6357
DB
28019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28020 int UNUSED written = 0;
28021 IADDR UNUSED pc = abuf->addr;
28022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28023
d03ea14f 28024frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
b34f6357
DB
28025
28026 return vpc;
28027#undef FLD
28028}
28029
28030/* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
28031
28032static SEM_PC
28033SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28034{
28035#define FLD(f) abuf->fields.sfmt_mcuti.f
28036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28037 int UNUSED written = 0;
28038 IADDR UNUSED pc = abuf->addr;
28039 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28040
28041 {
28042 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
28043 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28044 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28045 }
28046
28047 return vpc;
28048#undef FLD
28049}
28050
28051/* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
28052
28053static SEM_PC
28054SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28055{
28056#define FLD(f) abuf->fields.sfmt_mrdaccg.f
28057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28058 int UNUSED written = 0;
28059 IADDR UNUSED pc = abuf->addr;
28060 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28061
28062 {
28063 SI opval = GET_H_ACCG (FLD (f_ACCGi));
28064 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28065 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28066 }
28067
28068 return vpc;
28069#undef FLD
28070}
28071
28072/* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
28073
28074static SEM_PC
28075SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28076{
28077#define FLD(f) abuf->fields.sfmt_cmmachs.f
28078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28079 int UNUSED written = 0;
28080 IADDR UNUSED pc = abuf->addr;
28081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28082
28083 {
28084 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
28085 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
28086 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28087 }
28088
28089 return vpc;
28090#undef FLD
28091}
28092
28093/* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28094
28095static SEM_PC
28096SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28097{
28098#define FLD(f) abuf->fields.sfmt_mwtaccg.f
28099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28100 int UNUSED written = 0;
28101 IADDR UNUSED pc = abuf->addr;
28102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28103
1c453cd6
DB
28104{
28105frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
b34f6357
DB
28106 {
28107 USI opval = GET_H_FR_INT (FLD (f_FRi));
28108 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28109 TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28110 }
1c453cd6 28111}
b34f6357
DB
28112
28113 return vpc;
28114#undef FLD
28115}
28116
28117/* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28118
28119static SEM_PC
28120SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28121{
28122#define FLD(f) abuf->fields.fmt_empty.f
28123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28124 int UNUSED written = 0;
28125 IADDR UNUSED pc = abuf->addr;
28126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28127
28128frvbf_media_cop (current_cpu, 1);
28129
28130 return vpc;
28131#undef FLD
28132}
28133
28134/* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28135
28136static SEM_PC
28137SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28138{
28139#define FLD(f) abuf->fields.fmt_empty.f
28140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28141 int UNUSED written = 0;
28142 IADDR UNUSED pc = abuf->addr;
28143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28144
28145frvbf_media_cop (current_cpu, 2);
28146
28147 return vpc;
28148#undef FLD
28149}
28150
28151/* fnop: fnop$pack */
28152
28153static SEM_PC
28154SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28155{
28156#define FLD(f) abuf->fields.fmt_empty.f
28157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28158 int UNUSED written = 0;
28159 IADDR UNUSED pc = abuf->addr;
28160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28161
28162((void) 0); /*nop*/
28163
28164 return vpc;
28165#undef FLD
28166}
28167
28168/* Table of all semantic fns. */
28169
28170static const struct sem_fn_desc sem_fns[] = {
28171 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28172 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28173 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28174 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28175 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28176 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28177 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28178 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28179 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28180 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28181 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28182 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28183 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28184 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28185 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28186 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28187 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28188 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
e930b1f5
DB
28189 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28190 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28191 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
b34f6357
DB
28192 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28193 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28194 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
e930b1f5
DB
28195 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28196 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
b34f6357
DB
28197 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28198 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28199 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28200 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28201 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28202 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28203 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28204 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28205 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28206 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28207 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28208 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28209 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28210 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28211 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28212 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28213 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28214 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28215 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28216 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28217 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28218 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28219 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28220 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28221 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28222 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28223 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28224 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28225 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28226 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28227 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28228 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28229 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28230 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28231 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28232 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28233 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
e930b1f5
DB
28234 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28235 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
b34f6357
DB
28236 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28237 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28238 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28239 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28240 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28241 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28242 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28243 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28244 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28245 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28246 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28247 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28248 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28249 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28250 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28251 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28252 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28253 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28254 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28255 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28256 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28257 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28258 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28259 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28260 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28261 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28262 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28263 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28264 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28265 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28266 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28267 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28268 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28269 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28270 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28271 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28272 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28273 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28274 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28275 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28276 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28277 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28278 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28279 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28280 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28281 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28282 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28283 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28284 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28285 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28286 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28287 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28288 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28289 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28290 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28291 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28292 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28293 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28294 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28295 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28296 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28297 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28298 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28299 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28300 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28301 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28302 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28303 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28304 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28305 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28306 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28307 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28308 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28309 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28310 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28311 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28312 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28313 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28314 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28315 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28316 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28317 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28318 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28319 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28320 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28321 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28322 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28323 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28324 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28325 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28326 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28327 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28328 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28329 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28330 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28331 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28332 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28333 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28334 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28335 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28336 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28337 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28338 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28339 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28340 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28341 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28342 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28343 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28344 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28345 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
b34f6357
DB
28346 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28347 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28348 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28349 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28350 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28351 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28352 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28353 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
b34f6357
DB
28354 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28355 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28356 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
b34f6357
DB
28357 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28358 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28359 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
b34f6357
DB
28360 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28361 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28362 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28363 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28364 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28365 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28366 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28367 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28368 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28369 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28370 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28371 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28372 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28373 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28374 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28375 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28376 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28377 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28378 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28379 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28380 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28381 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28382 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28383 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28384 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28385 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28386 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28387 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28388 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28389 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28390 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28391 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28392 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28393 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28394 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28395 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28396 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28397 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28398 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28399 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28400 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28401 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28402 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28403 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28404 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28405 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28406 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28407 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28408 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28409 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28410 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28411 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28412 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28413 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28414 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28415 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28416 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28417 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28418 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28419 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28420 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28421 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28422 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28423 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28424 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28425 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28426 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28427 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28428 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28429 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28430 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28431 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28432 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28433 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28434 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28435 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28436 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28437 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28438 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28439 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28440 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28441 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28442 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28443 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28444 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28445 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28446 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28447 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28448 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28449 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28450 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28451 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28452 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28453 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28454 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28455 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28456 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28457 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28458 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28459 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28460 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28461 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28462 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28463 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28464 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28465 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28466 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28467 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28468 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28469 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28470 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28471 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28472 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28473 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28474 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28475 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28476 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28477 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28478 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28479 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28480 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28481 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28482 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28483 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28484 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28485 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28486 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28487 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28488 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28489 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28490 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28491 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28492 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28493 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28494 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28495 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28496 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28497 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28498 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28499 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28500 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28501 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28502 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28503 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28504 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28505 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28506 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28507 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28508 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28509 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28510 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28511 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28512 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28513 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28514 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28515 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28516 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28517 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28518 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28519 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28520 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28521 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28522 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28523 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28524 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28525 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28526 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28527 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28528 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28529 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28530 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28531 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28532 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28533 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28534 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28535 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28536 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28537 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28538 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28539 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28540 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28541 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28542 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28543 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28544 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28545 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28546 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28547 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28548 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28549 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28550 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28551 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28552 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28553 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28554 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28555 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28556 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28557 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28558 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28559 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28560 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28561 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28562 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28563 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28564 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28565 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28566 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28567 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28568 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28569 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28570 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28571 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28572 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28573 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28574 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28575 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28576 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28577 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28578 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28579 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28580 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28581 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28582 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28583 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28584 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28585 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28586 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28587 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28588 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28589 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28590 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28591 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28592 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28593 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28594 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28595 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28596 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28597 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28598 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28599 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28600 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28601 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28602 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28603 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28604 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28605 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28606 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28607 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28608 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28609 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28610 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28611 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28612 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28613 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28614 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28615 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28616 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28617 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28618 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28619 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28620 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28621 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28622 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28623 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28624 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28625 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28626 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28627 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28628 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28629 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28630 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28631 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28632 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28633 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28634 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28635 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28636 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28637 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28638 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28639 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28640 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28641 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28642 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28643 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28644 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28645 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28646 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28647 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28648 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28649 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28650 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28651 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28652 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28653 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28654 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28655 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28656 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28657 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28658 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28659 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28660 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28661 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28662 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28663 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28664 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28665 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28666 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28667 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28668 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28669 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28670 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28671 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28672 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28673 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28674 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28675 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28676 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28677 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28678 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28679 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28680 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28681 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28682 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28683 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28684 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28685 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28686 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28687 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28688 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28689 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28690 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28691 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28692 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28693 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28694 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28695 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28696 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28697 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28698 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
676a64f4
RS
28699 { FRVBF_INSN_LRAI, SEM_FN_NAME (frvbf,lrai) },
28700 { FRVBF_INSN_LRAD, SEM_FN_NAME (frvbf,lrad) },
28701 { FRVBF_INSN_TLBPR, SEM_FN_NAME (frvbf,tlbpr) },
b34f6357
DB
28702 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28703 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28704 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28705 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28706 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28707 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28708 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28709 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28710 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28711 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28712 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28713 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28714 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28715 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28716 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28717 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28718 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28719 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28720 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28721 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28722 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28723 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28724 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28725 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28726 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28727 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28728 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28729 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28730 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28731 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28732 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28733 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28734 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28735 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28736 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28737 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28738 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28739 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28740 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28741 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28742 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28743 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28744 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28745 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28746 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28747 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28748 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28749 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28750 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28751 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28752 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28753 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28754 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28755 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28756 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28757 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28758 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28759 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28760 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28761 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28762 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28763 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28764 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28765 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28766 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28767 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28768 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28769 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28770 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28771 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28772 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28773 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28774 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28775 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28776 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28777 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28778 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28779 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28780 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28781 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28782 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28783 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28784 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28785 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28786 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28787 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28788 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28789 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28790 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28791 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28792 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28793 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28794 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28795 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28796 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28797 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28798 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28799 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28800 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28801 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28802 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28803 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28804 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28805 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28806 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28807 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28808 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28809 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28810 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28811 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28812 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28813 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28814 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28815 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28816 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28817 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28818 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28819 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28820 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28821 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28822 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28823 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28824 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28825 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28826 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28827 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28828 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28829 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28830 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28831 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28832 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28833 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28834 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28835 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28836 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28837 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28838 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28839 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28840 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28841 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28842 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28843 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28844 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28845 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28846 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28847 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28848 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
676a64f4
RS
28849 { FRVBF_INSN_MQLCLRHS, SEM_FN_NAME (frvbf,mqlclrhs) },
28850 { FRVBF_INSN_MQLMTHS, SEM_FN_NAME (frvbf,mqlmths) },
28851 { FRVBF_INSN_MQSLLHI, SEM_FN_NAME (frvbf,mqsllhi) },
28852 { FRVBF_INSN_MQSRAHI, SEM_FN_NAME (frvbf,mqsrahi) },
b34f6357
DB
28853 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28854 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28855 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28856 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28857 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28858 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28859 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28860 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28861 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28862 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28863 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28864 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28865 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28866 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28867 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28868 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28869 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28870 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28871 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28872 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28873 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28874 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28875 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28876 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28877 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28878 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28879 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28880 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28881 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28882 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28883 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28884 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28885 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28886 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28887 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28888 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28889 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28890 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28891 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28892 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28893 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28894 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28895 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28896 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28897 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28898 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28899 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28900 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28901 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28902 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28903 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28904 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28905 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28906 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28907 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28908 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28909 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
d03ea14f
DB
28910 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28911 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28912 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
b34f6357
DB
28913 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28914 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28915 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28916 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28917 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28918 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28919 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28920 { 0, 0 }
28921};
28922
28923/* Add the semantic fns to IDESC_TABLE. */
28924
28925void
28926SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28927{
28928 IDESC *idesc_table = CPU_IDESC (current_cpu);
28929 const struct sem_fn_desc *sf;
28930 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28931
28932 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28933 {
28934 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28935 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28936 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28937#if FAST_P
28938 if (valid_p)
28939 idesc_table[sf->index].sem_fast = sf->fn;
28940 else
28941 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28942#else
28943 if (valid_p)
28944 idesc_table[sf->index].sem_full = sf->fn;
28945 else
28946 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28947#endif
28948 }
28949}
28950
This page took 1.139858 seconds and 4 git commands to generate.