common/
[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
0f51e9bf 5Copyright 1996-2010 Free Software Foundation, Inc.
b34f6357
DB
6
7This file is part of the GNU simulators.
8
bce3bbcb
HPN
9 This file is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
12 any later version.
b34f6357 13
bce3bbcb
HPN
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
b34f6357 18
bce3bbcb
HPN
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
b34f6357
DB
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 {
bce3bbcb 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 (MAKEDI (2147483647, 0xffffffff), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (SUBDI (MAKEDI (0x80000000, 0), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (ADDDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
e930b1f5
DB
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 {
bce3bbcb 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 (MAKEDI (2147483647, 0xffffffff), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (ADDDI (MAKEDI (0x80000000, 0), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (SUBDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
e930b1f5
DB
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;
b29791a8 1461 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
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;
b29791a8 1492 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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;
b29791a8 1520 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
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;
b29791a8 1551 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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;
b29791a8 1578 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
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;
b29791a8 1598 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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 {
b29791a8
DE
1633 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1634 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1635 written |= (1 << 7);
1636 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1637 }
1638} else {
1639if (LTSI (tmp_tmp, 0)) {
1640 {
b29791a8
DE
1641 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1642 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1643 written |= (1 << 7);
1644 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1645 }
1646} else {
1647 {
b29791a8
DE
1648 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1649 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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 {
b29791a8
DE
1686 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1687 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1688 written |= (1 << 7);
1689 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1690 }
1691} else {
1692if (LTSI (tmp_tmp, 0)) {
1693 {
b29791a8
DE
1694 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1695 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1696 written |= (1 << 7);
1697 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1698 }
1699} else {
1700 {
b29791a8
DE
1701 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1702 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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 {
b29791a8
DE
1739 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1740 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1741 written |= (1 << 7);
1742 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1743 }
1744} else {
1745if (LTSI (tmp_tmp, 0)) {
1746 {
b29791a8
DE
1747 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1748 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1749 written |= (1 << 7);
1750 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1751 }
1752} else {
1753 {
b29791a8
DE
1754 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1755 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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);
b29791a8 1786 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
b34f6357
DB
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;
b29791a8 1805 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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);
b29791a8 1834 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
b34f6357
DB
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;
b29791a8 1853 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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);
b29791a8 1882 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
b34f6357
DB
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;
b29791a8 1901 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
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)));
b29791a8 1971if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
1972 tmp_cc = ANDQI (tmp_cc, 13);
1973} else {
1974 tmp_cc = ORQI (tmp_cc, 2);
1975}
b29791a8 1976if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
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)));
b29791a8 2022if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2023 tmp_cc = ANDQI (tmp_cc, 13);
2024} else {
2025 tmp_cc = ORQI (tmp_cc, 2);
2026}
b29791a8 2027if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
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)));
b29791a8 2963if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2964 tmp_cc = ANDQI (tmp_cc, 13);
2965} else {
2966 tmp_cc = ORQI (tmp_cc, 2);
2967}
b29791a8 2968if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
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)));
b29791a8 3014if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
3015 tmp_cc = ANDQI (tmp_cc, 13);
3016} else {
3017 tmp_cc = ORQI (tmp_cc, 2);
3018}
b29791a8 3019if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
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
79e59fe6 3270/* ld: ld$pack $ldann($GRi,$GRj),$GRk */
b34f6357
DB
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
79e59fe6 3607/* ldd: ldd$pack $lddann($GRi,$GRj),$GRdoublek */
b34f6357
DB
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;
b29791a8 7593 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
7607 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7608 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
7640 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7641 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
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;
b29791a8 7674 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7675 written |= (1 << 7);
7676 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7677 }
7678 {
7679 USI opval = 0;
b29791a8 7680 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
7681 written |= (1 << 8);
7682 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7683 }
7684 {
7685 USI opval = 0;
b29791a8 7686 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
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 {
b29791a8
DE
7700 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7701 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7702 written |= (1 << 7);
7703 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7704 }
7705 {
b29791a8
DE
7706 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 2));
7707 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
7708 written |= (1 << 8);
7709 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7710 }
7711 {
b29791a8
DE
7712 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 3));
7713 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
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 {
b29791a8
DE
7745 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7746 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
7747 written |= (1 << 7);
7748 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7749 }
7750 {
b29791a8
DE
7751 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 2));
7752 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 2), opval);
b34f6357
DB
7753 written |= (1 << 8);
7754 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7755 }
7756 {
b29791a8
DE
7757 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 3));
7758 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 3), opval);
b34f6357
DB
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;
b29791a8 7842 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
7856 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7857 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
7890 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7891 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
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
79e59fe6 11306/* calll: calll$pack $callann($GRi,$GRj) */
b34f6357
DB
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 {
d2c7a1a6 16646 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16667 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16688 DF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsidf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16709 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixdfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16731 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16736 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (ADDSI (FLD (f_FRj), 1)));
b29791a8 16737 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
d2c7a1a6 16759 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16764 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
b29791a8 16765 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
d2c7a1a6 16788 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16794 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (ADDSI (FLD (f_FRj), 1)));
b29791a8 16795 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
d2c7a1a6 16818 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16824 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
b29791a8 16825 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
d2c7a1a6 16847 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16872 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16898 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
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 {
d2c7a1a6 16922 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
b29791a8
DE
16992 SF opval = GET_H_FR (ADDSI (FLD (f_FRj), 1));
16993 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 17039 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17060 DF opval = CGEN_CPU_FPU (current_cpu)->ops->negdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17082 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
b29791a8
DE
17087 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17088 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 17110 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17134 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17155 DF opval = CGEN_CPU_FPU (current_cpu)->ops->absdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17177 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
b29791a8
DE
17182 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17183 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 17205 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17229 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17251 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
b29791a8
DE
17256 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17257 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 17280 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
b29791a8
DE
17286 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17287 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 17308 DF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17330 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 17356 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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))) {
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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{
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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}
b29791a8 17927if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
17928 {
17929 UQI opval = 2;
b29791a8 17930 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17931 written |= (1 << 8);
17932 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17933 }
17934} else {
b29791a8 17935if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
17936 {
17937 UQI opval = 8;
b29791a8 17938 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17939 written |= (1 << 8);
17940 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17941 }
17942} else {
b29791a8 17943if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
17944 {
17945 UQI opval = 4;
b29791a8 17946 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17947 written |= (1 << 8);
17948 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17949 }
17950} else {
17951 {
17952 UQI opval = 1;
b29791a8 17953 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
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 (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18070 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
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 (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18100 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18225 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18226 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18253 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18254 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18281 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18282 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18283 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18284 }
18285 {
b29791a8
DE
18286 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18287 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18288 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18289 }
18290 {
b29791a8
DE
18291 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18292 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18319 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18320 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18321 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18322 }
18323 {
b29791a8
DE
18324 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18325 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18326 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18327 }
18328 {
b29791a8
DE
18329 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18330 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18361 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18362 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18363 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18364 }
18365 {
b29791a8
DE
18366 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18367 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18368 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18369 }
18370 {
b29791a8
DE
18371 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18372 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18403 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18404 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18405 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18406 }
18407 {
b29791a8
DE
18408 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18409 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18410 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18411 }
18412 {
b29791a8
DE
18413 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18414 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18443 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18444 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18476 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18477 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
d2c7a1a6 18502 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)))));
b34f6357
DB
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 {
d2c7a1a6 18507 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRi), 1))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)))));
b29791a8 18508 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
d2c7a1a6 18530 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)))));
b34f6357
DB
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 {
d2c7a1a6 18535 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRi), 1))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)))));
b29791a8 18536 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18565 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18566 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18595 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18596 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18623 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18624 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18651 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18652 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18679 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18680 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18707 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18708 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18735 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18736 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8 18758 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
b34f6357
DB
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 {
b29791a8
DE
18763 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (FLD (f_FRj)));
18764 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8 18787 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
b34f6357
DB
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 {
b29791a8
DE
18793 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (FLD (f_FRj)));
18794 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18823 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18824 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18853 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18854 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18883 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18884 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18913 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18914 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
79e59fe6 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)));
b34f6357
DB
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 {
b29791a8
DE
18943 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18944 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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));
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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 {
79e59fe6 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)))) {
b34f6357
DB
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));
b29791a8 19000if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
19001 {
19002 UQI opval = 2;
b29791a8 19003 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19004 written |= (1 << 9);
19005 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19006 }
19007} else {
b29791a8 19008if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
19009 {
19010 UQI opval = 8;
b29791a8 19011 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19012 written |= (1 << 9);
19013 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19014 }
19015} else {
b29791a8 19016if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
19017 {
19018 UQI opval = 4;
b29791a8 19019 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19020 written |= (1 << 9);
19021 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19022 }
19023} else {
19024 {
19025 UQI opval = 1;
b29791a8 19026 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
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);
b29791a8 19101 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19102 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19103 }
19104 {
19105 UHI opval = FLD (f_u12);
b29791a8 19106 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 19188 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRk), 0));
b34f6357
DB
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;
b29791a8 19193 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19194 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19195 }
19196}
19197{
19198 HI tmp_tmp;
b29791a8 19199 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRk), 0));
b34f6357
DB
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;
b29791a8 19204 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
b29791a8 19452 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
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 {
b29791a8 19473 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), FLD (f_u6));
b34f6357
DB
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 {
b29791a8
DE
19591 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)), FLD (f_s6));
19592 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
19649 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19650 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19651 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19652 }
19653 {
b29791a8
DE
19654 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19655 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
b29791a8
DE
19687 UHI opval = SRLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19688 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19689 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19690 }
19691 {
b29791a8
DE
19692 UHI opval = SRLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19693 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
b29791a8
DE
19725 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19726 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19727 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19728 }
19729 {
b29791a8
DE
19730 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19731 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
b29791a8
DE
19762 USI opval = ROLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_s6), 31));
19763 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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);
b29791a8 19801 tmp_arg1 = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), tmp_shift);
b34f6357
DB
19802if (NEHI (tmp_shift, 0)) {
19803{
b29791a8 19804 tmp_arg2 = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
b34f6357
DB
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;
b29791a8 19811 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 19839 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
b34f6357
DB
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{
b29791a8
DE
19871 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19872 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19873 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19874 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
19875}
19876if (GTHI (tmp_argihi, tmp_argjhi)) {
19877 {
19878 UHI opval = tmp_argjhi;
b29791a8 19879 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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);
b29791a8 19887 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19888 written |= (1 << 9);
19889 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19890 }
19891} else {
19892 {
19893 UHI opval = tmp_argihi;
b29791a8 19894 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 19903 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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);
b29791a8 19911 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19912 written |= (1 << 10);
19913 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19914 }
19915} else {
19916 {
19917 UHI opval = tmp_argilo;
b29791a8 19918 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
19957 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19958 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19959 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19960 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
19961}
19962if (GTHI (tmp_argihi, tmp_argjhi)) {
19963 {
19964 UHI opval = tmp_argjhi;
b29791a8 19965 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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);
b29791a8 19973 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19974 written |= (1 << 15);
19975 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19976 }
19977} else {
19978 {
19979 UHI opval = tmp_argihi;
b29791a8 19980 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 19989 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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);
b29791a8 19997 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19998 written |= (1 << 17);
19999 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20000 }
20001} else {
20002 {
20003 UHI opval = tmp_argilo;
b29791a8 20004 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20005 written |= (1 << 17);
20006 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20007 }
20008}
20009}
20010{
b29791a8
DE
20011 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20012 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20013 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20014 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20015}
20016if (GTHI (tmp_argihi, tmp_argjhi)) {
20017 {
20018 UHI opval = tmp_argjhi;
b29791a8 20019 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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);
b29791a8 20027 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20028 written |= (1 << 16);
20029 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20030 }
20031} else {
20032 {
20033 UHI opval = tmp_argihi;
b29791a8 20034 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 20043 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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);
b29791a8 20051 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20052 written |= (1 << 18);
20053 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20054 }
20055} else {
20056 {
20057 UHI opval = tmp_argilo;
b29791a8 20058 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
20089 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20090 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20091 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20092 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20093}
20094if (GTUHI (tmp_argihi, tmp_argjhi)) {
20095 {
20096 UHI opval = tmp_argjhi;
b29791a8 20097 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20098 written |= (1 << 9);
20099 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20100 }
20101} else {
20102 {
20103 UHI opval = tmp_argihi;
b29791a8 20104 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20112 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20113 written |= (1 << 10);
20114 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20115 }
20116} else {
20117 {
20118 UHI opval = tmp_argilo;
b29791a8 20119 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
20151 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20152 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20153 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20154 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 20192 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
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;
b29791a8 20200 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
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;
b29791a8 20208 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20209 written |= (1 << 10);
20210 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20211 }
20212} else {
20213 {
20214 UQI opval = 1;
b29791a8 20215 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
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{
b29791a8
DE
20250 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20251 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20252 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20253 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 20291 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
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;
b29791a8 20299 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
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;
b29791a8 20307 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20308 written |= (1 << 10);
20309 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20310 }
20311} else {
20312 {
20313 UQI opval = 1;
b29791a8 20314 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
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 }
b29791a8
DE
20353 tmp_arghi = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
20354 tmp_arglo = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
7b1a2840 20355if (GTDI (ABSDI (EXTHIDI (tmp_arghi)), 32767)) {
b34f6357
DB
20356{
20357 {
20358 UHI opval = 32767;
b29791a8 20359 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20360 written |= (1 << 8);
20361 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20362 }
20363frvbf_media_overflow (current_cpu, 8);
20364}
20365} else {
7b1a2840 20366if (LTDI (ABSDI (EXTHIDI (tmp_arghi)), -32768)) {
b34f6357
DB
20367{
20368 {
20369 UHI opval = -32768;
b29791a8 20370 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
7b1a2840 20378 UHI opval = ABSDI (EXTHIDI (tmp_arghi));
b29791a8 20379 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20380 written |= (1 << 8);
20381 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20382 }
20383}
20384}
7b1a2840 20385if (GTDI (ABSDI (EXTHIDI (tmp_arglo)), 32767)) {
b34f6357
DB
20386{
20387 {
20388 UHI opval = 32767;
b29791a8 20389 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20390 written |= (1 << 9);
20391 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20392 }
20393frvbf_media_overflow (current_cpu, 4);
20394}
20395} else {
7b1a2840 20396if (LTDI (ABSDI (EXTHIDI (tmp_arglo)), -32768)) {
b34f6357
DB
20397{
20398 {
20399 UHI opval = -32768;
b29791a8 20400 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
7b1a2840 20408 UHI opval = ABSDI (EXTHIDI (tmp_arglo));
b29791a8 20409 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
20439 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20440 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20441 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20442 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20443}
20444{
20445 DI tmp_tmp;
7b1a2840 20446 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20447if (GTDI (tmp_tmp, 32767)) {
20448{
20449 {
20450 UHI opval = 32767;
b29791a8 20451 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20462 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20471 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20472 written |= (1 << 9);
20473 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20474 }
20475}
20476}
20477}
20478{
20479 DI tmp_tmp;
7b1a2840 20480 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20481if (GTDI (tmp_tmp, 32767)) {
20482{
20483 {
20484 UHI opval = 32767;
b29791a8 20485 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20496 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20505 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
20536 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20537 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20538 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20539 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20540}
20541{
20542 DI tmp_tmp;
7b1a2840 20543 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20544if (GTDI (tmp_tmp, 65535)) {
20545{
20546 {
20547 UHI opval = 65535;
b29791a8 20548 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20559 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20568 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20569 written |= (1 << 9);
20570 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20571 }
20572}
20573}
20574}
20575{
20576 DI tmp_tmp;
7b1a2840 20577 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20578if (GTDI (tmp_tmp, 65535)) {
20579{
20580 {
20581 UHI opval = 65535;
b29791a8 20582 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20593 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20602 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
20633 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20634 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20635 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20636 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20637}
20638{
20639 DI tmp_tmp;
7b1a2840 20640 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20641if (GTDI (tmp_tmp, 32767)) {
20642{
20643 {
20644 UHI opval = 32767;
b29791a8 20645 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20656 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20665 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20666 written |= (1 << 9);
20667 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20668 }
20669}
20670}
20671}
20672{
20673 DI tmp_tmp;
7b1a2840 20674 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20675if (GTDI (tmp_tmp, 32767)) {
20676{
20677 {
20678 UHI opval = 32767;
b29791a8 20679 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20690 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20699 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
20730 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20731 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20732 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20733 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20734}
20735{
20736 DI tmp_tmp;
7b1a2840 20737 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20738if (GTDI (tmp_tmp, 65535)) {
20739{
20740 {
20741 UHI opval = 65535;
b29791a8 20742 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20753 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20762 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20763 written |= (1 << 9);
20764 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20765 }
20766}
20767}
20768}
20769{
20770 DI tmp_tmp;
7b1a2840 20771 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20772if (GTDI (tmp_tmp, 65535)) {
20773{
20774 {
20775 UHI opval = 65535;
b29791a8 20776 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20787 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20796 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
20828 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20829 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20830 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20831 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20832}
20833{
20834 DI tmp_tmp;
7b1a2840 20835 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20836if (GTDI (tmp_tmp, 32767)) {
20837{
20838 {
20839 UHI opval = 32767;
b29791a8 20840 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20851 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20860 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20861 written |= (1 << 11);
20862 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20863 }
20864}
20865}
20866}
20867{
20868 DI tmp_tmp;
7b1a2840 20869 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20870if (GTDI (tmp_tmp, 32767)) {
20871{
20872 {
20873 UHI opval = 32767;
b29791a8 20874 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20885 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20894 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
20927 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20928 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20929 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20930 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20931}
20932{
20933 DI tmp_tmp;
7b1a2840 20934 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20935if (GTDI (tmp_tmp, 65535)) {
20936{
20937 {
20938 UHI opval = 65535;
b29791a8 20939 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20950 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20959 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20960 written |= (1 << 11);
20961 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20962 }
20963}
20964}
20965}
20966{
20967 DI tmp_tmp;
7b1a2840 20968 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20969if (GTDI (tmp_tmp, 65535)) {
20970{
20971 {
20972 UHI opval = 65535;
b29791a8 20973 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20984 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 20993 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
21026 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21027 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21028 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21029 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21030}
21031{
21032 DI tmp_tmp;
7b1a2840 21033 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21034if (GTDI (tmp_tmp, 32767)) {
21035{
21036 {
21037 UHI opval = 32767;
b29791a8 21038 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21049 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21058 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21059 written |= (1 << 11);
21060 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21061 }
21062}
21063}
21064}
21065{
21066 DI tmp_tmp;
7b1a2840 21067 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21068if (GTDI (tmp_tmp, 32767)) {
21069{
21070 {
21071 UHI opval = 32767;
b29791a8 21072 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21083 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21092 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
21125 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21126 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21127 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21128 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21129}
21130{
21131 DI tmp_tmp;
7b1a2840 21132 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21133if (GTDI (tmp_tmp, 65535)) {
21134{
21135 {
21136 UHI opval = 65535;
b29791a8 21137 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21148 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21157 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21158 written |= (1 << 11);
21159 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21160 }
21161}
21162}
21163}
21164{
21165 DI tmp_tmp;
7b1a2840 21166 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21167if (GTDI (tmp_tmp, 65535)) {
21168{
21169 {
21170 UHI opval = 65535;
b29791a8 21171 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21182 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21191 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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{
b29791a8
DE
21232 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21233 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21234 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21235 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21236}
21237{
21238 DI tmp_tmp;
7b1a2840 21239 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21240if (GTDI (tmp_tmp, 32767)) {
21241{
21242 {
21243 UHI opval = 32767;
b29791a8 21244 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21255 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21264 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21265 written |= (1 << 15);
21266 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21267 }
21268}
21269}
21270}
21271{
21272 DI tmp_tmp;
7b1a2840 21273 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21274if (GTDI (tmp_tmp, 32767)) {
21275{
21276 {
21277 UHI opval = 32767;
b29791a8 21278 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21289 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21298 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21299 written |= (1 << 17);
21300 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21301 }
21302}
21303}
21304}
21305{
b29791a8
DE
21306 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21307 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21308 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21309 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21310}
21311{
21312 DI tmp_tmp;
7b1a2840 21313 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21314if (GTDI (tmp_tmp, 32767)) {
21315{
21316 {
21317 UHI opval = 32767;
b29791a8 21318 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21329 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21338 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21339 written |= (1 << 16);
21340 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21341 }
21342}
21343}
21344}
21345{
21346 DI tmp_tmp;
7b1a2840 21347 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21348if (GTDI (tmp_tmp, 32767)) {
21349{
21350 {
21351 UHI opval = 32767;
b29791a8 21352 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21363 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21372 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
21413 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21414 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21415 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21416 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21417}
21418{
21419 DI tmp_tmp;
7b1a2840 21420 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21421if (GTDI (tmp_tmp, 65535)) {
21422{
21423 {
21424 UHI opval = 65535;
b29791a8 21425 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21436 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21445 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21446 written |= (1 << 15);
21447 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21448 }
21449}
21450}
21451}
21452{
21453 DI tmp_tmp;
7b1a2840 21454 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21455if (GTDI (tmp_tmp, 65535)) {
21456{
21457 {
21458 UHI opval = 65535;
b29791a8 21459 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21470 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21479 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21480 written |= (1 << 17);
21481 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21482 }
21483}
21484}
21485}
21486{
b29791a8
DE
21487 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21488 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21489 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21490 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21491}
21492{
21493 DI tmp_tmp;
7b1a2840 21494 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21495if (GTDI (tmp_tmp, 65535)) {
21496{
21497 {
21498 UHI opval = 65535;
b29791a8 21499 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21510 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21519 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21520 written |= (1 << 16);
21521 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21522 }
21523}
21524}
21525}
21526{
21527 DI tmp_tmp;
7b1a2840 21528 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21529if (GTDI (tmp_tmp, 65535)) {
21530{
21531 {
21532 UHI opval = 65535;
b29791a8 21533 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21544 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21553 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
21594 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21595 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21596 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21597 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21598}
21599{
21600 DI tmp_tmp;
7b1a2840 21601 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21602if (GTDI (tmp_tmp, 32767)) {
21603{
21604 {
21605 UHI opval = 32767;
b29791a8 21606 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21617 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21626 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21627 written |= (1 << 15);
21628 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21629 }
21630}
21631}
21632}
21633{
21634 DI tmp_tmp;
7b1a2840 21635 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21636if (GTDI (tmp_tmp, 32767)) {
21637{
21638 {
21639 UHI opval = 32767;
b29791a8 21640 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21651 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21660 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21661 written |= (1 << 17);
21662 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21663 }
21664}
21665}
21666}
21667{
b29791a8
DE
21668 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21669 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21670 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21671 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21672}
21673{
21674 DI tmp_tmp;
7b1a2840 21675 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21676if (GTDI (tmp_tmp, 32767)) {
21677{
21678 {
21679 UHI opval = 32767;
b29791a8 21680 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21691 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21700 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21701 written |= (1 << 16);
21702 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21703 }
21704}
21705}
21706}
21707{
21708 DI tmp_tmp;
7b1a2840 21709 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21710if (GTDI (tmp_tmp, 32767)) {
21711{
21712 {
21713 UHI opval = 32767;
b29791a8 21714 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21725 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21734 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
21775 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21776 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21777 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21778 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21779}
21780{
21781 DI tmp_tmp;
7b1a2840 21782 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21783if (GTDI (tmp_tmp, 65535)) {
21784{
21785 {
21786 UHI opval = 65535;
b29791a8 21787 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21798 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21807 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21808 written |= (1 << 15);
21809 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21810 }
21811}
21812}
21813}
21814{
21815 DI tmp_tmp;
7b1a2840 21816 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21817if (GTDI (tmp_tmp, 65535)) {
21818{
21819 {
21820 UHI opval = 65535;
b29791a8 21821 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21832 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21841 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21842 written |= (1 << 17);
21843 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21844 }
21845}
21846}
21847}
21848{
b29791a8
DE
21849 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21850 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21851 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21852 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21853}
21854{
21855 DI tmp_tmp;
7b1a2840 21856 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21857if (GTDI (tmp_tmp, 65535)) {
21858{
21859 {
21860 UHI opval = 65535;
b29791a8 21861 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21872 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21881 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21882 written |= (1 << 16);
21883 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21884 }
21885}
21886}
21887}
21888{
21889 DI tmp_tmp;
7b1a2840 21890 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21891if (GTDI (tmp_tmp, 65535)) {
21892{
21893 {
21894 UHI opval = 65535;
b29791a8 21895 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21906 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 21915 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
21957 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21958 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21959 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21960 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21961}
21962{
21963 DI tmp_tmp;
7b1a2840 21964 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21965if (GTDI (tmp_tmp, 32767)) {
21966{
21967 {
21968 UHI opval = 32767;
b29791a8 21969 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21980 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 21989 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21990 written |= (1 << 17);
21991 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21992 }
21993}
21994}
21995}
21996{
21997 DI tmp_tmp;
7b1a2840 21998 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21999if (GTDI (tmp_tmp, 32767)) {
22000{
22001 {
22002 UHI opval = 32767;
b29791a8 22003 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22014 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22023 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22024 written |= (1 << 19);
22025 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22026 }
22027}
22028}
22029}
22030{
b29791a8
DE
22031 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22032 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22033 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22034 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22035}
22036{
22037 DI tmp_tmp;
7b1a2840 22038 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22039if (GTDI (tmp_tmp, 32767)) {
22040{
22041 {
22042 UHI opval = 32767;
b29791a8 22043 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22054 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22063 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22064 written |= (1 << 18);
22065 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22066 }
22067}
22068}
22069}
22070{
22071 DI tmp_tmp;
7b1a2840 22072 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22073if (GTDI (tmp_tmp, 32767)) {
22074{
22075 {
22076 UHI opval = 32767;
b29791a8 22077 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22088 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22097 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
22140 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22141 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22142 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22143 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22144}
22145{
22146 DI tmp_tmp;
7b1a2840 22147 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22148if (GTDI (tmp_tmp, 65535)) {
22149{
22150 {
22151 UHI opval = 65535;
b29791a8 22152 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22163 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22172 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22173 written |= (1 << 17);
22174 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22175 }
22176}
22177}
22178}
22179{
22180 DI tmp_tmp;
7b1a2840 22181 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22182if (GTDI (tmp_tmp, 65535)) {
22183{
22184 {
22185 UHI opval = 65535;
b29791a8 22186 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22197 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22206 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22207 written |= (1 << 19);
22208 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22209 }
22210}
22211}
22212}
22213{
b29791a8
DE
22214 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22215 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22216 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22217 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22218}
22219{
22220 DI tmp_tmp;
7b1a2840 22221 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22222if (GTDI (tmp_tmp, 65535)) {
22223{
22224 {
22225 UHI opval = 65535;
b29791a8 22226 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22237 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22246 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22247 written |= (1 << 18);
22248 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22249 }
22250}
22251}
22252}
22253{
22254 DI tmp_tmp;
7b1a2840 22255 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22256if (GTDI (tmp_tmp, 65535)) {
22257{
22258 {
22259 UHI opval = 65535;
b29791a8 22260 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22271 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22280 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
22323 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22324 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22325 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22326 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22327}
22328{
22329 DI tmp_tmp;
7b1a2840 22330 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22331if (GTDI (tmp_tmp, 32767)) {
22332{
22333 {
22334 UHI opval = 32767;
b29791a8 22335 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22346 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22355 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22356 written |= (1 << 17);
22357 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22358 }
22359}
22360}
22361}
22362{
22363 DI tmp_tmp;
7b1a2840 22364 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22365if (GTDI (tmp_tmp, 32767)) {
22366{
22367 {
22368 UHI opval = 32767;
b29791a8 22369 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22380 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22389 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22390 written |= (1 << 19);
22391 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22392 }
22393}
22394}
22395}
22396{
b29791a8
DE
22397 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22398 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22399 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22400 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22401}
22402{
22403 DI tmp_tmp;
7b1a2840 22404 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22405if (GTDI (tmp_tmp, 32767)) {
22406{
22407 {
22408 UHI opval = 32767;
b29791a8 22409 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22420 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22429 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22430 written |= (1 << 18);
22431 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22432 }
22433}
22434}
22435}
22436{
22437 DI tmp_tmp;
7b1a2840 22438 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22439if (GTDI (tmp_tmp, 32767)) {
22440{
22441 {
22442 UHI opval = 32767;
b29791a8 22443 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22454 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22463 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
22506 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22507 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22508 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22509 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22510}
22511{
22512 DI tmp_tmp;
7b1a2840 22513 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22514if (GTDI (tmp_tmp, 65535)) {
22515{
22516 {
22517 UHI opval = 65535;
b29791a8 22518 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22529 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22538 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22539 written |= (1 << 17);
22540 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22541 }
22542}
22543}
22544}
22545{
22546 DI tmp_tmp;
7b1a2840 22547 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22548if (GTDI (tmp_tmp, 65535)) {
22549{
22550 {
22551 UHI opval = 65535;
b29791a8 22552 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22563 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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;
b29791a8 22572 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22573 written |= (1 << 19);
22574 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22575 }
22576}
22577}
22578}
22579{
b29791a8
DE
22580 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22581 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22582 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22583 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22584}
22585{
22586 DI tmp_tmp;
7b1a2840 22587 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22588if (GTDI (tmp_tmp, 65535)) {
22589{
22590 {
22591 UHI opval = 65535;
b29791a8 22592 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22603 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22612 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22613 written |= (1 << 18);
22614 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22615 }
22616}
22617}
22618}
22619{
22620 DI tmp_tmp;
7b1a2840 22621 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22622if (GTDI (tmp_tmp, 65535)) {
22623{
22624 {
22625 UHI opval = 65535;
b29791a8 22626 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22637 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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;
b29791a8 22646 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
22692 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22693 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22694 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22695 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22696}
22697{
b29791a8
DE
22698 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22699 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22700 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22701 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
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));
b29791a8 22705 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
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));
b29791a8 22711 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
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));
b29791a8 22717 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
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));
b29791a8 22723 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
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{
b29791a8
DE
22765 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22766 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22767 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22768 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22769}
22770{
b29791a8
DE
22771 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22772 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22773 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22774 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
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));
b29791a8 22778 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
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));
b29791a8 22784 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
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));
b29791a8 22790 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
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));
b29791a8 22796 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
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 {
b29791a8
DE
22836 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22837 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22838 written |= (1 << 11);
22839 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22840 }
22841 {
b29791a8
DE
22842 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22843 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22844 written |= (1 << 13);
22845 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22846 }
22847 {
b29791a8
DE
22848 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22849 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22850 written |= (1 << 12);
22851 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22852 }
22853 {
b29791a8
DE
22854 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22855 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
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 {
b29791a8
DE
22895 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22896 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22897 written |= (1 << 11);
22898 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22899 }
22900 {
b29791a8
DE
22901 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22902 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22903 written |= (1 << 13);
22904 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22905 }
22906 {
b29791a8
DE
22907 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22908 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22909 written |= (1 << 12);
22910 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22911 }
22912 {
b29791a8
DE
22913 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22914 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
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;
b29791a8 22944 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 22945if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
22946{
22947 {
bce3bbcb 22948 DI opval = MAKEDI (127, 0xffffffff);
b34f6357 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 {
bce3bbcb 22956if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
22957{
22958 {
bce3bbcb 22959 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357 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;
b29791a8 23003 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23004if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23005{
23006 {
bce3bbcb 23007 DI opval = MAKEDI (127, 0xffffffff);
b34f6357 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 {
bce3bbcb 23015if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23016{
23017 {
bce3bbcb 23018 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357 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;
b29791a8 23066 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23067if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23068{
23069 {
bce3bbcb 23070 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
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 {
bce3bbcb 23078if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23079{
23080 {
bce3bbcb 23081 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
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;
b29791a8 23100 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23101if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23102{
23103 {
bce3bbcb 23104 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23105 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23106 written |= (1 << 7);
23107 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23108 }
23109frvbf_media_overflow (current_cpu, 4);
23110}
23111} else {
bce3bbcb 23112if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23113{
23114 {
bce3bbcb 23115 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23116 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 23125 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 23165 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23166if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23167{
23168 {
bce3bbcb 23169 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
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 {
bce3bbcb 23177if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23178{
23179 {
bce3bbcb 23180 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
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;
b29791a8 23199 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23200if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23201{
23202 {
bce3bbcb 23203 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23204 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23205 written |= (1 << 7);
23206 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23207 }
23208frvbf_media_overflow (current_cpu, 4);
23209}
23210} else {
bce3bbcb 23211if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23212{
23213 {
bce3bbcb 23214 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23215 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 23224 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 23264 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23265if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23266{
23267 {
bce3bbcb 23268 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
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 {
bce3bbcb 23276if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23277{
23278 {
bce3bbcb 23279 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
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;
b29791a8 23298 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23299if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23300{
23301 {
bce3bbcb 23302 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23303 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23304 written |= (1 << 5);
23305 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23306 }
23307frvbf_media_overflow (current_cpu, 4);
23308}
23309} else {
bce3bbcb 23310if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23311{
23312 {
bce3bbcb 23313 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23314 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 23323 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 23363 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23364if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23365{
23366 {
bce3bbcb 23367 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
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 {
bce3bbcb 23375if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23376{
23377 {
bce3bbcb 23378 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
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;
b29791a8 23397 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23398if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23399{
23400 {
bce3bbcb 23401 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23402 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23403 written |= (1 << 7);
23404 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23405 }
23406frvbf_media_overflow (current_cpu, 4);
23407}
23408} else {
bce3bbcb 23409if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23410{
23411 {
bce3bbcb 23412 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23413 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 23422 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23423 written |= (1 << 7);
23424 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23425 }
23426}
23427}
23428}
23429{
23430 DI tmp_tmp;
b29791a8 23431 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23432if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23433{
23434 {
bce3bbcb 23435 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23436 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23437 written |= (1 << 8);
23438 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23439 }
23440frvbf_media_overflow (current_cpu, 2);
23441}
23442} else {
bce3bbcb 23443if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23444{
23445 {
bce3bbcb 23446 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23447 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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;
b29791a8 23456 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23457 written |= (1 << 8);
23458 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23459 }
23460}
23461}
23462}
23463{
23464 DI tmp_tmp;
b29791a8 23465 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23466if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23467{
23468 {
bce3bbcb 23469 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23470 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23471 written |= (1 << 9);
23472 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23473 }
23474frvbf_media_overflow (current_cpu, 1);
23475}
23476} else {
bce3bbcb 23477if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23478{
23479 {
bce3bbcb 23480 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23481 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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;
b29791a8 23490 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
23529 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23530 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23531 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23532 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23542 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
23576 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23577 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23578 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23579 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23589 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
23623 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23624 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23625 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23626 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23636 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
23670 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23671 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23672 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23673 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23683 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
23718 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23719 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23720 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23721 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23731 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
23767 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23768 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23769 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23770 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23780 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
23818 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23819 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23820 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23821 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23831 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23832 written |= (1 << 14);
23833 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23834 }
23835{
b29791a8
DE
23836 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23837 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23838 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23839 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23840}
23841 {
23842 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b29791a8 23843 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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));
b29791a8 23849 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
23887 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23888 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23889 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23890 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23900 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23901 written |= (1 << 14);
23902 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23903 }
23904{
b29791a8
DE
23905 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23906 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23907 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23908 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23909}
23910 {
23911 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b29791a8 23912 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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));
b29791a8 23918 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
23956 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23957 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23958 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23959 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 23969 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23970 written |= (1 << 14);
23971 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23972 }
23973{
b29791a8
DE
23974 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23975 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23976 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23977 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23978}
23979 {
23980 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
b29791a8 23981 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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));
b29791a8 23987 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
24025 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24026 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24027 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24028 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 24038 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24039 written |= (1 << 14);
24040 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24041 }
24042{
b29791a8
DE
24043 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24044 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24045 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24046 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24047}
24048 {
24049 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
b29791a8 24050 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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));
b29791a8 24056 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
24095 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24096 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24097 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24098 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 24108 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24109 written |= (1 << 16);
24110 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24111 }
24112{
b29791a8
DE
24113 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24114 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24115 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24116 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24117}
24118 {
24119 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b29791a8 24120 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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));
b29791a8 24126 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
24166 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24167 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24168 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24169 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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));
b29791a8 24179 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24180 written |= (1 << 16);
24181 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24182 }
24183{
b29791a8
DE
24184 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24185 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24186 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24187 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24188}
24189 {
24190 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b29791a8 24191 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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));
b29791a8 24197 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
24233 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24234 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24235 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24236 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 24274 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24275if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24276{
24277 {
24278 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24279 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 24290 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 24299 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
24336 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24337 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24338 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24339 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 24377 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24378if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24379{
24380 {
24381 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24382 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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);
b29791a8 24393 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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;
b29791a8 24402 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
24439 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24440 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24441 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24442 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 24480 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24481if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24482{
24483 {
24484 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24485 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 24496 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 24505 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
24542 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24543 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24544 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24545 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 24583 tmp_tmp = SUBDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24584if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24585{
24586 {
24587 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24588 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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);
b29791a8 24599 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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;
b29791a8 24608 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
24646 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24647 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24648 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24649 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 24687 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24688if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24689{
24690 {
24691 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24692 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 24703 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 24712 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
24751 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24752 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24753 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24754 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 24792 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24793if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24794{
24795 {
24796 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24797 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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);
b29791a8 24808 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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;
b29791a8 24817 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
24858 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24859 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24860 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24861 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 24899 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24900if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24901{
24902 {
24903 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24904 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 24915 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 24924 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24925 written |= (1 << 18);
24926 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24927 }
24928}
24929}
24930}
24931{
b29791a8
DE
24932 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24933 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24934 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24935 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24936}
24937{
24938 DI tmp_tmp;
b29791a8 24939 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
24940if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24941{
24942 {
24943 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24944 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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);
b29791a8 24955 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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;
b29791a8 24964 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24965 written |= (1 << 19);
24966 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24967 }
24968}
24969}
24970}
24971{
24972 DI tmp_tmp;
b29791a8 24973 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24974if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24975{
24976 {
24977 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24978 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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);
b29791a8 24989 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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;
b29791a8 24998 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
25039 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25040 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25041 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25042 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 25080 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25081if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25082{
25083 {
25084 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25085 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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);
b29791a8 25096 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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;
b29791a8 25105 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25106 written |= (1 << 18);
25107 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25108 }
25109}
25110}
25111}
25112{
b29791a8
DE
25113 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25114 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25115 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25116 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25117}
25118{
25119 DI tmp_tmp;
b29791a8 25120 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
b34f6357
DB
25121if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25122{
25123 {
25124 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25125 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
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);
b29791a8 25136 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
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;
b29791a8 25145 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25146 written |= (1 << 19);
25147 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25148 }
25149}
25150}
25151}
25152{
25153 DI tmp_tmp;
b29791a8 25154 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25155if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25156{
25157 {
25158 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25159 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
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);
b29791a8 25170 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
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;
b29791a8 25179 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
25221 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25222 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25223 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25224 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 25262 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25263if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25264{
25265 {
25266 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25267 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 25278 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 25287 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25288 written |= (1 << 20);
25289 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25290 }
25291}
25292}
25293}
25294{
b29791a8
DE
25295 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25296 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25297 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25298 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25299}
25300{
25301 DI tmp_tmp;
b29791a8 25302 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25303if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25304{
25305 {
25306 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25307 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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);
b29791a8 25318 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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;
b29791a8 25327 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25328 written |= (1 << 21);
25329 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25330 }
25331}
25332}
25333}
25334{
25335 DI tmp_tmp;
b29791a8 25336 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25337if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25338{
25339 {
25340 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25341 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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);
b29791a8 25352 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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;
b29791a8 25361 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
25404 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25405 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25406 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25407 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 25445 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25446if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25447{
25448 {
25449 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25450 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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);
b29791a8 25461 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
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;
b29791a8 25470 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25471 written |= (1 << 20);
25472 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25473 }
25474}
25475}
25476}
25477{
b29791a8
DE
25478 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25479 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25480 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25481 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25482}
25483{
25484 DI tmp_tmp;
b29791a8 25485 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
b34f6357
DB
25486if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25487{
25488 {
25489 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25490 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
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);
b29791a8 25501 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
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;
b29791a8 25510 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25511 written |= (1 << 21);
25512 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25513 }
25514}
25515}
25516}
25517{
25518 DI tmp_tmp;
b29791a8 25519 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25520if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25521{
25522 {
25523 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25524 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
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);
b29791a8 25535 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
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;
b29791a8 25544 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
25586 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25587 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25588 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25589 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25590}
25591{
25592 DI tmp_tmp;
b29791a8 25593 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25594if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25595{
25596 {
25597 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25598 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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);
b29791a8 25609 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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;
b29791a8 25618 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25619 written |= (1 << 19);
25620 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25621 }
25622}
25623}
25624}
25625{
25626 DI tmp_tmp;
b29791a8 25627 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25628if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25629{
25630 {
25631 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25632 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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);
b29791a8 25643 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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;
b29791a8 25652 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25653 written |= (1 << 20);
25654 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25655 }
25656}
25657}
25658}
25659{
b29791a8
DE
25660 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25661 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25662 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25663 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 25701 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25702if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25703{
25704 {
25705 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25706 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 25717 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 25726 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
25767 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25768 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25769 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25770 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25771}
25772{
25773 DI tmp_tmp;
b29791a8 25774 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25775if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25776{
25777 {
25778 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25779 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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);
b29791a8 25790 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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;
b29791a8 25799 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25800 written |= (1 << 19);
25801 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25802 }
25803}
25804}
25805}
25806{
25807 DI tmp_tmp;
b29791a8 25808 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25809if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25810{
25811 {
25812 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25813 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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);
b29791a8 25824 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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;
b29791a8 25833 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25834 written |= (1 << 20);
25835 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25836 }
25837}
25838}
25839}
25840{
b29791a8
DE
25841 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25842 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25843 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25844 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 25882 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25883if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25884{
25885 {
25886 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25887 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 25898 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 25907 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
25948 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25949 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25950 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25951 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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;
b29791a8 25989 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25990if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25991{
25992 {
25993 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25994 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 26005 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 26014 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26015 written |= (1 << 18);
26016 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26017 }
26018}
26019}
26020}
26021{
b29791a8
DE
26022 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26023 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26024 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26025 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26026}
26027{
26028 DI tmp_tmp;
b29791a8 26029 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
b34f6357
DB
26030if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26031{
26032 {
26033 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26034 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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);
b29791a8 26045 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
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;
b29791a8 26054 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
26055 written |= (1 << 19);
26056 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26057 }
26058}
26059}
26060}
26061{
26062 DI tmp_tmp;
b29791a8 26063 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
26064if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26065{
26066 {
26067 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26068 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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);
b29791a8 26079 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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;
b29791a8 26088 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
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{
b29791a8
DE
26123 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26124 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26125 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26126 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26191 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26192 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26193 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26194 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26259 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26260 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26261 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26262 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26327 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26328 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26329 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26330 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26396 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26397 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26398 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26399 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26466 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26467 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26468 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26469 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26536 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26537 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26538 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26539 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26606 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26607 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26608 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26609 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26681 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26682 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26683 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26684 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26724 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26725 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26726 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26727 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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);
b29791a8 26739 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 26750 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 26759 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
26800 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26801 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26802 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26803 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26843 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26844 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26845 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26846 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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);
b29791a8 26858 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 26869 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 26878 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
26919 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26920 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26921 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26922 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
26962 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26963 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26964 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26965 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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);
b29791a8 26977 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 26988 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 26997 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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{
b29791a8
DE
27038 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27039 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27040 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27041 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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{
b29791a8
DE
27081 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27082 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27083 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27084 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
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);
b29791a8 27096 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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);
b29791a8 27107 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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;
b29791a8 27116 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
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)) {
b29791a8 27147 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27148} else {
b29791a8 27149 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27150}
27151 {
27152 UHI opval = tmp_tmp;
b29791a8 27153 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27154 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27155 }
27156 {
27157 UHI opval = tmp_tmp;
b29791a8 27158 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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)) {
b29791a8 27182 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27183} else {
b29791a8 27184 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27185}
27186 {
27187 UHI opval = tmp_tmp;
b29791a8 27188 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27189 written |= (1 << 7);
27190 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27191 }
27192 {
27193 UHI opval = tmp_tmp;
b29791a8 27194 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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)) {
b29791a8 27229 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27230} else {
b29791a8 27231 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27232}
27233 {
27234 UHI opval = tmp_tmp;
b29791a8 27235 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27236 written |= (1 << 7);
27237 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27238 }
27239 {
27240 UHI opval = tmp_tmp;
b29791a8 27241 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27242 written |= (1 << 9);
27243 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27244 }
27245 {
27246 UHI opval = tmp_tmp;
b29791a8 27247 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27248 written |= (1 << 8);
27249 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27250 }
27251 {
27252 UHI opval = tmp_tmp;
b29791a8 27253 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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)) {
b29791a8 27289 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27290} else {
b29791a8 27291 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27292}
27293 {
27294 UHI opval = tmp_tmp;
b29791a8 27295 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27296 written |= (1 << 9);
27297 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27298 }
27299 {
27300 UHI opval = tmp_tmp;
b29791a8 27301 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27302 written |= (1 << 11);
27303 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27304 }
27305 {
27306 UHI opval = tmp_tmp;
b29791a8 27307 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27308 written |= (1 << 10);
27309 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27310 }
27311 {
27312 UHI opval = tmp_tmp;
b29791a8 27313 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
27339 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27340 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27341 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27342 }
27343 {
b29791a8
DE
27344 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27345 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
b29791a8
DE
27389 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27390 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27391 written |= (1 << 13);
27392 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27393 }
27394 {
b29791a8
DE
27395 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27396 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27397 written |= (1 << 15);
27398 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27399 }
27400}
27401{
27402 {
b29791a8
DE
27403 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27404 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27405 written |= (1 << 14);
27406 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27407 }
27408 {
b29791a8
DE
27409 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27410 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
27452 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27453 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27454 written |= (1 << 8);
27455 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27456 }
27457 {
b29791a8
DE
27458 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27459 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27460 written |= (1 << 10);
27461 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27462 }
27463 {
b29791a8
DE
27464 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27465 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27466 written |= (1 << 9);
27467 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27468 }
27469 {
b29791a8
DE
27470 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27471 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
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 {
b29791a8
DE
27513 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27514 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27515 written |= (1 << 10);
27516 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27517 }
27518 {
b29791a8
DE
27519 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27520 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27521 written |= (1 << 14);
27522 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27523 }
27524 {
b29791a8
DE
27525 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27526 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27527 written |= (1 << 12);
27528 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27529 }
27530 {
b29791a8
DE
27531 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27532 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27533 written |= (1 << 16);
27534 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27535 }
27536}
27537{
27538 {
b29791a8
DE
27539 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27540 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27541 written |= (1 << 11);
27542 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27543 }
27544 {
b29791a8
DE
27545 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27546 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27547 written |= (1 << 15);
27548 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27549 }
27550 {
b29791a8
DE
27551 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27552 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
b34f6357
DB
27553 written |= (1 << 13);
27554 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27555 }
27556 {
b29791a8
DE
27557 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27558 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
b34f6357
DB
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 {
b29791a8
DE
27598 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27599 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27600 written |= (1 << 10);
27601 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27602 }
27603 {
b29791a8
DE
27604 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27605 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27606 written |= (1 << 12);
27607 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27608 }
27609 {
b29791a8
DE
27610 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27611 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27612 written |= (1 << 11);
27613 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27614 }
27615 {
b29791a8
DE
27616 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27617 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
27658 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27659 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27660 written |= (1 << 12);
27661 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27662 }
27663 {
b29791a8
DE
27664 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27665 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27666 written |= (1 << 14);
27667 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27668 }
27669 {
b29791a8
DE
27670 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27671 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27672 written |= (1 << 13);
27673 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27674 }
27675 {
b29791a8
DE
27676 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27677 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
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 {
b29791a8
DE
27718 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27719 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27720 written |= (1 << 13);
27721 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27722 }
27723 {
b29791a8
DE
27724 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27725 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27726 written |= (1 << 12);
27727 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27728 }
27729 {
b29791a8
DE
27730 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27731 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27732 written |= (1 << 11);
27733 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27734 }
27735 {
b29791a8
DE
27736 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27737 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
b29791a8
DE
27778 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27779 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27780 written |= (1 << 15);
27781 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27782 }
27783 {
b29791a8
DE
27784 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27785 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27786 written |= (1 << 14);
27787 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27788 }
27789 {
b29791a8
DE
27790 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27791 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27792 written |= (1 << 13);
27793 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27794 }
27795 {
b29791a8
DE
27796 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27797 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
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 {
b29791a8
DE
27838 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27839 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27840 written |= (1 << 10);
27841 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27842 }
27843 {
b29791a8
DE
27844 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27845 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27846 written |= (1 << 14);
27847 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27848 }
27849 {
b29791a8
DE
27850 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27851 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27852 written |= (1 << 11);
27853 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27854 }
27855 {
b29791a8
DE
27856 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27857 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27858 written |= (1 << 15);
27859 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27860 }
27861 {
b29791a8
DE
27862 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27863 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27864 written |= (1 << 12);
27865 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27866 }
27867 {
b29791a8
DE
27868 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27869 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27870 written |= (1 << 16);
27871 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27872 }
27873 {
b29791a8
DE
27874 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27875 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27876 written |= (1 << 13);
27877 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27878 }
27879 {
b29791a8
DE
27880 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27881 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
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 {
b29791a8
DE
27922 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27923 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27924 written |= (1 << 12);
27925 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27926 }
27927 {
b29791a8
DE
27928 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27929 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27930 written |= (1 << 16);
27931 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27932 }
27933 {
b29791a8
DE
27934 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27935 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27936 written |= (1 << 13);
27937 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27938 }
27939 {
b29791a8
DE
27940 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27941 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27942 written |= (1 << 17);
27943 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27944 }
27945 {
b29791a8
DE
27946 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27947 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27948 written |= (1 << 14);
27949 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27950 }
27951 {
b29791a8
DE
27952 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27953 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27954 written |= (1 << 18);
27955 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27956 }
27957 {
b29791a8
DE
27958 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27959 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27960 written |= (1 << 15);
27961 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27962 }
27963 {
b29791a8
DE
27964 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27965 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
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.501955 seconds and 4 git commands to generate.