]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/frv/sem.c
Switch the license of all files explicitly copyright the FSF
[thirdparty/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
79e59fe6 5Copyright 1996-2005 Free Software Foundation, Inc.
b34f6357
DB
6
7This file is part of the GNU simulators.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
4744ac1b
JB
11the Free Software Foundation; either version 3 of the License, or
12(at your option) any later version.
b34f6357
DB
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
4744ac1b
JB
19You should have received a copy of the GNU General Public License
20along with this program. If not, see <http://www.gnu.org/licenses/>.
b34f6357
DB
21
22*/
23
24#define WANT_CPU frvbf
25#define WANT_CPU_FRVBF
26
27#include "sim-main.h"
28#include "cgen-mem.h"
29#include "cgen-ops.h"
30
31#undef GET_ATTR
32#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
33#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
34#else
35#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_/**/attr)
36#endif
37
38/* This is used so that we can compile two copies of the semantic code,
39 one with full feature support and one without that runs fast(er).
40 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
41#if FAST_P
42#define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
43#undef TRACE_RESULT
44#define TRACE_RESULT(cpu, abuf, name, type, val)
45#else
46#define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
47#endif
48
49/* x-invalid: --invalid-- */
50
51static SEM_PC
52SEM_FN_NAME (frvbf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
53{
54#define FLD(f) abuf->fields.fmt_empty.f
55 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
56 int UNUSED written = 0;
57 IADDR UNUSED pc = abuf->addr;
58 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
59
60 {
61 /* Update the recorded pc in the cpu state struct.
62 Only necessary for WITH_SCACHE case, but to avoid the
63 conditional compilation .... */
64 SET_H_PC (pc);
65 /* Virtual insns have zero size. Overwrite vpc with address of next insn
66 using the default-insn-bitsize spec. When executing insns in parallel
67 we may want to queue the fault and continue execution. */
68 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
69 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
70 }
71
72 return vpc;
73#undef FLD
74}
75
76/* x-after: --after-- */
77
78static SEM_PC
79SEM_FN_NAME (frvbf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
80{
81#define FLD(f) abuf->fields.fmt_empty.f
82 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
83 int UNUSED written = 0;
84 IADDR UNUSED pc = abuf->addr;
85 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
86
87 {
88#if WITH_SCACHE_PBB_FRVBF
89 frvbf_pbb_after (current_cpu, sem_arg);
90#endif
91 }
92
93 return vpc;
94#undef FLD
95}
96
97/* x-before: --before-- */
98
99static SEM_PC
100SEM_FN_NAME (frvbf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
101{
102#define FLD(f) abuf->fields.fmt_empty.f
103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
104 int UNUSED written = 0;
105 IADDR UNUSED pc = abuf->addr;
106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
107
108 {
109#if WITH_SCACHE_PBB_FRVBF
110 frvbf_pbb_before (current_cpu, sem_arg);
111#endif
112 }
113
114 return vpc;
115#undef FLD
116}
117
118/* x-cti-chain: --cti-chain-- */
119
120static SEM_PC
121SEM_FN_NAME (frvbf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
122{
123#define FLD(f) abuf->fields.fmt_empty.f
124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
125 int UNUSED written = 0;
126 IADDR UNUSED pc = abuf->addr;
127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
128
129 {
130#if WITH_SCACHE_PBB_FRVBF
131#ifdef DEFINE_SWITCH
132 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
133 pbb_br_type, pbb_br_npc);
134 BREAK (sem);
135#else
136 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
137 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
138 CPU_PBB_BR_TYPE (current_cpu),
139 CPU_PBB_BR_NPC (current_cpu));
140#endif
141#endif
142 }
143
144 return vpc;
145#undef FLD
146}
147
148/* x-chain: --chain-- */
149
150static SEM_PC
151SEM_FN_NAME (frvbf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
152{
153#define FLD(f) abuf->fields.fmt_empty.f
154 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
155 int UNUSED written = 0;
156 IADDR UNUSED pc = abuf->addr;
157 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
158
159 {
160#if WITH_SCACHE_PBB_FRVBF
161 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
162#ifdef DEFINE_SWITCH
163 BREAK (sem);
164#endif
165#endif
166 }
167
168 return vpc;
169#undef FLD
170}
171
172/* x-begin: --begin-- */
173
174static SEM_PC
175SEM_FN_NAME (frvbf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
176{
177#define FLD(f) abuf->fields.fmt_empty.f
178 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
179 int UNUSED written = 0;
180 IADDR UNUSED pc = abuf->addr;
181 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
182
183 {
184#if WITH_SCACHE_PBB_FRVBF
185#if defined DEFINE_SWITCH || defined FAST_P
186 /* In the switch case FAST_P is a constant, allowing several optimizations
187 in any called inline functions. */
188 vpc = frvbf_pbb_begin (current_cpu, FAST_P);
189#else
190#if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
191 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
192#else
193 vpc = frvbf_pbb_begin (current_cpu, 0);
194#endif
195#endif
196#endif
197 }
198
199 return vpc;
200#undef FLD
201}
202
203/* add: add$pack $GRi,$GRj,$GRk */
204
205static SEM_PC
206SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
207{
208#define FLD(f) abuf->fields.sfmt_addcc.f
209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
210 int UNUSED written = 0;
211 IADDR UNUSED pc = abuf->addr;
212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
213
214 {
215 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
216 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
217 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
218 }
219
220 return vpc;
221#undef FLD
222}
223
224/* sub: sub$pack $GRi,$GRj,$GRk */
225
226static SEM_PC
227SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
228{
229#define FLD(f) abuf->fields.sfmt_addcc.f
230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
231 int UNUSED written = 0;
232 IADDR UNUSED pc = abuf->addr;
233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
234
235 {
236 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
237 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
239 }
240
241 return vpc;
242#undef FLD
243}
244
245/* and: and$pack $GRi,$GRj,$GRk */
246
247static SEM_PC
248SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
249{
250#define FLD(f) abuf->fields.sfmt_addcc.f
251 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
252 int UNUSED written = 0;
253 IADDR UNUSED pc = abuf->addr;
254 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
255
256 {
257 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
258 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
259 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
260 }
261
262 return vpc;
263#undef FLD
264}
265
266/* or: or$pack $GRi,$GRj,$GRk */
267
268static SEM_PC
269SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
270{
271#define FLD(f) abuf->fields.sfmt_addcc.f
272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
273 int UNUSED written = 0;
274 IADDR UNUSED pc = abuf->addr;
275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
276
277 {
278 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
279 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
280 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
281 }
282
283 return vpc;
284#undef FLD
285}
286
287/* xor: xor$pack $GRi,$GRj,$GRk */
288
289static SEM_PC
290SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
291{
292#define FLD(f) abuf->fields.sfmt_addcc.f
293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
294 int UNUSED written = 0;
295 IADDR UNUSED pc = abuf->addr;
296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
297
298 {
299 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
300 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
301 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
302 }
303
304 return vpc;
305#undef FLD
306}
307
308/* not: not$pack $GRj,$GRk */
309
310static SEM_PC
311SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
312{
e930b1f5 313#define FLD(f) abuf->fields.sfmt_scutss.f
b34f6357
DB
314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
315 int UNUSED written = 0;
316 IADDR UNUSED pc = abuf->addr;
317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
318
319 {
320 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
321 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
322 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
323 }
324
325 return vpc;
326#undef FLD
327}
328
329/* sdiv: sdiv$pack $GRi,$GRj,$GRk */
330
331static SEM_PC
332SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
333{
334#define FLD(f) abuf->fields.sfmt_addcc.f
335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
336 int UNUSED written = 0;
337 IADDR UNUSED pc = abuf->addr;
338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
339
340{
341frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
342; /*clobber*/
343}
344
345 return vpc;
346#undef FLD
347}
348
349/* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
350
351static SEM_PC
352SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
353{
354#define FLD(f) abuf->fields.sfmt_addcc.f
355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
356 int UNUSED written = 0;
357 IADDR UNUSED pc = abuf->addr;
358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
359
360{
361frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
362; /*clobber*/
363}
364
365 return vpc;
366#undef FLD
367}
368
369/* udiv: udiv$pack $GRi,$GRj,$GRk */
370
371static SEM_PC
372SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
373{
374#define FLD(f) abuf->fields.sfmt_addcc.f
375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
376 int UNUSED written = 0;
377 IADDR UNUSED pc = abuf->addr;
378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
379
380{
381frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
382; /*clobber*/
383}
384
385 return vpc;
386#undef FLD
387}
388
389/* nudiv: nudiv$pack $GRi,$GRj,$GRk */
390
391static SEM_PC
392SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
393{
394#define FLD(f) abuf->fields.sfmt_addcc.f
395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
396 int UNUSED written = 0;
397 IADDR UNUSED pc = abuf->addr;
398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
399
400{
401frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
402; /*clobber*/
403}
404
405 return vpc;
406#undef FLD
407}
408
409/* smul: smul$pack $GRi,$GRj,$GRdoublek */
410
411static SEM_PC
412SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
413{
414#define FLD(f) abuf->fields.sfmt_smulcc.f
415 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
416 int UNUSED written = 0;
417 IADDR UNUSED pc = abuf->addr;
418 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
419
420 {
421 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
422 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
423 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
424 }
425
426 return vpc;
427#undef FLD
428}
429
430/* umul: umul$pack $GRi,$GRj,$GRdoublek */
431
432static SEM_PC
433SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
434{
435#define FLD(f) abuf->fields.sfmt_smulcc.f
436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
437 int UNUSED written = 0;
438 IADDR UNUSED pc = abuf->addr;
439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
440
441 {
442 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
443 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
444 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
445 }
446
447 return vpc;
448#undef FLD
449}
450
e930b1f5
DB
451/* smu: smu$pack $GRi,$GRj */
452
453static SEM_PC
454SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
455{
456#define FLD(f) abuf->fields.sfmt_smass.f
457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
458 int UNUSED written = 0;
459 IADDR UNUSED pc = abuf->addr;
460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
461
462 {
463 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
464 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
465 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
466 }
467
468 return vpc;
469#undef FLD
470}
471
472/* smass: smass$pack $GRi,$GRj */
473
474static SEM_PC
475SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
476{
477#define FLD(f) abuf->fields.sfmt_smass.f
478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
479 int UNUSED written = 0;
480 IADDR UNUSED pc = abuf->addr;
481 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
482
483 {
484 DI opval = (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (SUBDI (9223372036854775807, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (SUBDI (9223372036854775808, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (ADDDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
485 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
486 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
487 }
488
489 return vpc;
490#undef FLD
491}
492
493/* smsss: smsss$pack $GRi,$GRj */
494
495static SEM_PC
496SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
497{
498#define FLD(f) abuf->fields.sfmt_smass.f
499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
500 int UNUSED written = 0;
501 IADDR UNUSED pc = abuf->addr;
502 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
503
504 {
505 DI opval = (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (ADDDI (9223372036854775807, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (ADDDI (9223372036854775808, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (SUBDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
506 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
507 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
508 }
509
510 return vpc;
511#undef FLD
512}
513
b34f6357
DB
514/* sll: sll$pack $GRi,$GRj,$GRk */
515
516static SEM_PC
517SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
518{
519#define FLD(f) abuf->fields.sfmt_addcc.f
520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
521 int UNUSED written = 0;
522 IADDR UNUSED pc = abuf->addr;
523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
524
525 {
526 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
527 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
528 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
529 }
530
531 return vpc;
532#undef FLD
533}
534
535/* srl: srl$pack $GRi,$GRj,$GRk */
536
537static SEM_PC
538SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
539{
540#define FLD(f) abuf->fields.sfmt_addcc.f
541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
542 int UNUSED written = 0;
543 IADDR UNUSED pc = abuf->addr;
544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
545
546 {
547 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
548 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
549 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
550 }
551
552 return vpc;
553#undef FLD
554}
555
556/* sra: sra$pack $GRi,$GRj,$GRk */
557
558static SEM_PC
559SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
560{
561#define FLD(f) abuf->fields.sfmt_addcc.f
562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
563 int UNUSED written = 0;
564 IADDR UNUSED pc = abuf->addr;
565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
566
567 {
568 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
569 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
570 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
571 }
572
573 return vpc;
574#undef FLD
575}
576
e930b1f5
DB
577/* slass: slass$pack $GRi,$GRj,$GRk */
578
579static SEM_PC
580SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
581{
582#define FLD(f) abuf->fields.sfmt_addcc.f
583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
584 int UNUSED written = 0;
585 IADDR UNUSED pc = abuf->addr;
586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
587
588 {
589 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
590 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
591 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
592 }
593
594 return vpc;
595#undef FLD
596}
597
598/* scutss: scutss$pack $GRj,$GRk */
599
600static SEM_PC
601SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
602{
603#define FLD(f) abuf->fields.sfmt_scutss.f
604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
605 int UNUSED written = 0;
606 IADDR UNUSED pc = abuf->addr;
607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
608
609 {
610 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
611 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
612 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
613 }
614
615 return vpc;
616#undef FLD
617}
618
b34f6357
DB
619/* scan: scan$pack $GRi,$GRj,$GRk */
620
621static SEM_PC
622SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
623{
624#define FLD(f) abuf->fields.sfmt_addcc.f
625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
626 int UNUSED written = 0;
627 IADDR UNUSED pc = abuf->addr;
628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
629
630{
631 SI tmp_tmp1;
632 SI tmp_tmp2;
633 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
634 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
635 {
636 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
637 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
638 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
639 }
640}
641
642 return vpc;
643#undef FLD
644}
645
646/* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
647
648static SEM_PC
649SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
650{
651#define FLD(f) abuf->fields.sfmt_cswap.f
652 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
653 int UNUSED written = 0;
654 IADDR UNUSED pc = abuf->addr;
655 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
656
657if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
658 {
659 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
660 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
661 written |= (1 << 4);
662 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
663 }
664}
665
666 abuf->written = written;
667 return vpc;
668#undef FLD
669}
670
671/* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
672
673static SEM_PC
674SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
675{
676#define FLD(f) abuf->fields.sfmt_cswap.f
677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
678 int UNUSED written = 0;
679 IADDR UNUSED pc = abuf->addr;
680 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
681
682if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
683 {
684 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
685 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
686 written |= (1 << 4);
687 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
688 }
689}
690
691 abuf->written = written;
692 return vpc;
693#undef FLD
694}
695
696/* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
697
698static SEM_PC
699SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
700{
701#define FLD(f) abuf->fields.sfmt_cswap.f
702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
703 int UNUSED written = 0;
704 IADDR UNUSED pc = abuf->addr;
705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
706
707if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
708 {
709 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
710 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
711 written |= (1 << 4);
712 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
713 }
714}
715
716 abuf->written = written;
717 return vpc;
718#undef FLD
719}
720
721/* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
722
723static SEM_PC
724SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
725{
726#define FLD(f) abuf->fields.sfmt_cswap.f
727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
728 int UNUSED written = 0;
729 IADDR UNUSED pc = abuf->addr;
730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
731
732if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
733 {
734 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
735 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
736 written |= (1 << 4);
737 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
738 }
739}
740
741 abuf->written = written;
742 return vpc;
743#undef FLD
744}
745
746/* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
747
748static SEM_PC
749SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
750{
751#define FLD(f) abuf->fields.sfmt_cswap.f
752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
753 int UNUSED written = 0;
754 IADDR UNUSED pc = abuf->addr;
755 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
756
757if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
758 {
759 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
760 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
761 written |= (1 << 4);
762 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
763 }
764}
765
766 abuf->written = written;
767 return vpc;
768#undef FLD
769}
770
771/* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
772
773static SEM_PC
774SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
775{
776#define FLD(f) abuf->fields.sfmt_cswap.f
777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
778 int UNUSED written = 0;
779 IADDR UNUSED pc = abuf->addr;
780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
781
782if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
783 {
784 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
785 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
786 written |= (1 << 3);
787 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
788 }
789}
790
791 abuf->written = written;
792 return vpc;
793#undef FLD
794}
795
796/* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
797
798static SEM_PC
799SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
800{
801#define FLD(f) abuf->fields.sfmt_clddu.f
802 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
803 int UNUSED written = 0;
804 IADDR UNUSED pc = abuf->addr;
805 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
806
807if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
808 {
809 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
810 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
811 written |= (1 << 4);
812 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
813 }
814}
815
816 abuf->written = written;
817 return vpc;
818#undef FLD
819}
820
821/* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
822
823static SEM_PC
824SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
825{
826#define FLD(f) abuf->fields.sfmt_cswap.f
827 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
828 int UNUSED written = 0;
829 IADDR UNUSED pc = abuf->addr;
830 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
831
832if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
833{
834frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
835; /*clobber*/
836}
837}
838
839 abuf->written = written;
840 return vpc;
841#undef FLD
842}
843
844/* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
845
846static SEM_PC
847SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
848{
849#define FLD(f) abuf->fields.sfmt_cswap.f
850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
851 int UNUSED written = 0;
852 IADDR UNUSED pc = abuf->addr;
853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
854
855if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
856{
857frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
858; /*clobber*/
859}
860}
861
862 abuf->written = written;
863 return vpc;
864#undef FLD
865}
866
867/* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
868
869static SEM_PC
870SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
871{
872#define FLD(f) abuf->fields.sfmt_cswap.f
873 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
874 int UNUSED written = 0;
875 IADDR UNUSED pc = abuf->addr;
876 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
877
878if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
879 {
880 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
882 written |= (1 << 4);
883 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
884 }
885}
886
887 abuf->written = written;
888 return vpc;
889#undef FLD
890}
891
892/* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
893
894static SEM_PC
895SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
896{
897#define FLD(f) abuf->fields.sfmt_cswap.f
898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
899 int UNUSED written = 0;
900 IADDR UNUSED pc = abuf->addr;
901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
902
903if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
904 {
905 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
906 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
907 written |= (1 << 4);
908 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
909 }
910}
911
912 abuf->written = written;
913 return vpc;
914#undef FLD
915}
916
917/* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
918
919static SEM_PC
920SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
921{
922#define FLD(f) abuf->fields.sfmt_cswap.f
923 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
924 int UNUSED written = 0;
925 IADDR UNUSED pc = abuf->addr;
926 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
927
928if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
929 {
930 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
931 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
932 written |= (1 << 4);
933 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
934 }
935}
936
937 abuf->written = written;
938 return vpc;
939#undef FLD
940}
941
942/* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
943
944static SEM_PC
945SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
946{
947#define FLD(f) abuf->fields.sfmt_cswap.f
948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
949 int UNUSED written = 0;
950 IADDR UNUSED pc = abuf->addr;
951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
952
953if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
954{
955 SI tmp_tmp1;
956 SI tmp_tmp2;
957 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
958 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
959 {
960 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
961 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
962 written |= (1 << 4);
963 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
964 }
965}
966}
967
968 abuf->written = written;
969 return vpc;
970#undef FLD
971}
972
973/* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
974
975static SEM_PC
976SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
977{
978#define FLD(f) abuf->fields.sfmt_addcc.f
979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
980 int UNUSED written = 0;
981 IADDR UNUSED pc = abuf->addr;
982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
983
984{
985 BI tmp_tmp;
986 QI tmp_cc;
987 SI tmp_result;
988 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
989 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
990if (EQBI (tmp_tmp, 0)) {
991 tmp_cc = ANDQI (tmp_cc, 13);
992} else {
993 tmp_cc = ORQI (tmp_cc, 2);
994}
995 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
996if (EQBI (tmp_tmp, 0)) {
997 tmp_cc = ANDQI (tmp_cc, 14);
998} else {
999 tmp_cc = ORQI (tmp_cc, 1);
1000}
1001 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1002if (EQSI (tmp_result, 0)) {
1003 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1004} else {
1005if (LTSI (tmp_result, 0)) {
1006 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1007} else {
1008 tmp_cc = ANDQI (tmp_cc, 3);
1009}
1010}
1011 {
1012 SI opval = tmp_result;
1013 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1014 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1015 }
1016 {
1017 UQI opval = tmp_cc;
1018 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1019 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1020 }
1021}
1022
1023 return vpc;
1024#undef FLD
1025}
1026
1027/* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1028
1029static SEM_PC
1030SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1031{
1032#define FLD(f) abuf->fields.sfmt_addcc.f
1033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1034 int UNUSED written = 0;
1035 IADDR UNUSED pc = abuf->addr;
1036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1037
1038{
1039 BI tmp_tmp;
1040 QI tmp_cc;
1041 SI tmp_result;
1042 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1043 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1044if (EQBI (tmp_tmp, 0)) {
1045 tmp_cc = ANDQI (tmp_cc, 13);
1046} else {
1047 tmp_cc = ORQI (tmp_cc, 2);
1048}
1049 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1050if (EQBI (tmp_tmp, 0)) {
1051 tmp_cc = ANDQI (tmp_cc, 14);
1052} else {
1053 tmp_cc = ORQI (tmp_cc, 1);
1054}
1055 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1056if (EQSI (tmp_result, 0)) {
1057 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1058} else {
1059if (LTSI (tmp_result, 0)) {
1060 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1061} else {
1062 tmp_cc = ANDQI (tmp_cc, 3);
1063}
1064}
1065 {
1066 SI opval = tmp_result;
1067 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1068 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1069 }
1070 {
1071 UQI opval = tmp_cc;
1072 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1073 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1074 }
1075}
1076
1077 return vpc;
1078#undef FLD
1079}
1080
1081/* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1082
1083static SEM_PC
1084SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1085{
1086#define FLD(f) abuf->fields.sfmt_addcc.f
1087 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1088 int UNUSED written = 0;
1089 IADDR UNUSED pc = abuf->addr;
1090 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1091
1092{
1093 SI tmp_tmp;
1094 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1095 {
1096 SI opval = tmp_tmp;
1097 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1098 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1099 }
1100if (EQSI (tmp_tmp, 0)) {
1101 {
1102 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1103 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1104 written |= (1 << 4);
1105 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1106 }
1107} else {
1108if (LTSI (tmp_tmp, 0)) {
1109 {
1110 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1111 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1112 written |= (1 << 4);
1113 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1114 }
1115} else {
1116 {
1117 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1118 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1119 written |= (1 << 4);
1120 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1121 }
1122}
1123}
1124}
1125
1126 abuf->written = written;
1127 return vpc;
1128#undef FLD
1129}
1130
1131/* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1132
1133static SEM_PC
1134SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1135{
1136#define FLD(f) abuf->fields.sfmt_addcc.f
1137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1138 int UNUSED written = 0;
1139 IADDR UNUSED pc = abuf->addr;
1140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1141
1142{
1143 SI tmp_tmp;
1144 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1145 {
1146 SI opval = tmp_tmp;
1147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1148 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1149 }
1150if (EQSI (tmp_tmp, 0)) {
1151 {
1152 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1153 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1154 written |= (1 << 4);
1155 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1156 }
1157} else {
1158if (LTSI (tmp_tmp, 0)) {
1159 {
1160 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1161 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1162 written |= (1 << 4);
1163 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1164 }
1165} else {
1166 {
1167 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1168 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1169 written |= (1 << 4);
1170 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1171 }
1172}
1173}
1174}
1175
1176 abuf->written = written;
1177 return vpc;
1178#undef FLD
1179}
1180
1181/* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1182
1183static SEM_PC
1184SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1185{
1186#define FLD(f) abuf->fields.sfmt_addcc.f
1187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1188 int UNUSED written = 0;
1189 IADDR UNUSED pc = abuf->addr;
1190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1191
1192{
1193 SI tmp_tmp;
1194 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1195 {
1196 SI opval = tmp_tmp;
1197 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1198 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1199 }
1200if (EQSI (tmp_tmp, 0)) {
1201 {
1202 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1203 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1204 written |= (1 << 4);
1205 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1206 }
1207} else {
1208if (LTSI (tmp_tmp, 0)) {
1209 {
1210 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1211 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1212 written |= (1 << 4);
1213 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1214 }
1215} else {
1216 {
1217 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1218 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1219 written |= (1 << 4);
1220 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1221 }
1222}
1223}
1224}
1225
1226 abuf->written = written;
1227 return vpc;
1228#undef FLD
1229}
1230
1231/* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1232
1233static SEM_PC
1234SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1235{
1236#define FLD(f) abuf->fields.sfmt_addcc.f
1237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1238 int UNUSED written = 0;
1239 IADDR UNUSED pc = abuf->addr;
1240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1241
1242{
1243 SI tmp_shift;
1244 SI tmp_tmp;
1245 QI tmp_cc;
1246 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1247 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)]));
1248 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1249 {
1250 SI opval = tmp_tmp;
1251 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1252 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1253 }
1254if (EQSI (tmp_tmp, 0)) {
1255 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1256} else {
1257if (LTSI (tmp_tmp, 0)) {
1258 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1259} else {
1260 tmp_cc = ANDQI (tmp_cc, 3);
1261}
1262}
1263 {
1264 UQI opval = tmp_cc;
1265 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1266 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1267 }
1268}
1269
1270 return vpc;
1271#undef FLD
1272}
1273
1274/* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1275
1276static SEM_PC
1277SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1278{
1279#define FLD(f) abuf->fields.sfmt_addcc.f
1280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1281 int UNUSED written = 0;
1282 IADDR UNUSED pc = abuf->addr;
1283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1284
1285{
1286 SI tmp_shift;
1287 SI tmp_tmp;
1288 QI tmp_cc;
1289 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1290 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)]));
1291 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1292 {
1293 SI opval = tmp_tmp;
1294 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1295 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1296 }
1297if (EQSI (tmp_tmp, 0)) {
1298 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1299} else {
1300if (LTSI (tmp_tmp, 0)) {
1301 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1302} else {
1303 tmp_cc = ANDQI (tmp_cc, 3);
1304}
1305}
1306 {
1307 UQI opval = tmp_cc;
1308 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1309 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1310 }
1311}
1312
1313 return vpc;
1314#undef FLD
1315}
1316
1317/* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1318
1319static SEM_PC
1320SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1321{
1322#define FLD(f) abuf->fields.sfmt_addcc.f
1323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1324 int UNUSED written = 0;
1325 IADDR UNUSED pc = abuf->addr;
1326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1327
1328{
1329 SI tmp_shift;
1330 SI tmp_tmp;
1331 QI tmp_cc;
1332 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1333 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)]));
1334 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1335 {
1336 SI opval = tmp_tmp;
1337 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1338 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1339 }
1340if (EQSI (tmp_tmp, 0)) {
1341 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1342} else {
1343if (LTSI (tmp_tmp, 0)) {
1344 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1345} else {
1346 tmp_cc = ANDQI (tmp_cc, 3);
1347}
1348}
1349 {
1350 UQI opval = tmp_cc;
1351 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1352 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1353 }
1354}
1355
1356 return vpc;
1357#undef FLD
1358}
1359
1360/* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1361
1362static SEM_PC
1363SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1364{
1365#define FLD(f) abuf->fields.sfmt_smulcc.f
1366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1367 int UNUSED written = 0;
1368 IADDR UNUSED pc = abuf->addr;
1369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1370
1371{
1372 DI tmp_tmp;
1373 QI tmp_cc;
1374 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1375 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1376if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1377 tmp_cc = ANDQI (tmp_cc, 7);
1378} else {
1379 tmp_cc = ORQI (tmp_cc, 8);
1380}
1381if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1382 tmp_cc = ANDQI (tmp_cc, 11);
1383} else {
1384 tmp_cc = ORQI (tmp_cc, 4);
1385}
1386 {
1387 DI opval = tmp_tmp;
1388 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1389 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1390 }
1391 {
1392 UQI opval = tmp_cc;
1393 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1394 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1395 }
1396}
1397
1398 return vpc;
1399#undef FLD
1400}
1401
1402/* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1403
1404static SEM_PC
1405SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1406{
1407#define FLD(f) abuf->fields.sfmt_smulcc.f
1408 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1409 int UNUSED written = 0;
1410 IADDR UNUSED pc = abuf->addr;
1411 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1412
1413{
1414 DI tmp_tmp;
1415 QI tmp_cc;
1416 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1417 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1418if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1419 tmp_cc = ANDQI (tmp_cc, 7);
1420} else {
1421 tmp_cc = ORQI (tmp_cc, 8);
1422}
1423if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1424 tmp_cc = ANDQI (tmp_cc, 11);
1425} else {
1426 tmp_cc = ORQI (tmp_cc, 4);
1427}
1428 {
1429 DI opval = tmp_tmp;
1430 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1431 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1432 }
1433 {
1434 UQI opval = tmp_cc;
1435 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1436 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1437 }
1438}
1439
1440 return vpc;
1441#undef FLD
1442}
1443
1444/* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1445
1446static SEM_PC
1447SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1448{
1449#define FLD(f) abuf->fields.sfmt_caddcc.f
1450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1451 int UNUSED written = 0;
1452 IADDR UNUSED pc = abuf->addr;
1453 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1454
1455if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1456{
1457 BI tmp_tmp;
1458 QI tmp_cc;
1459 SI tmp_result;
1460 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1461 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1462if (EQBI (tmp_tmp, 0)) {
1463 tmp_cc = ANDQI (tmp_cc, 13);
1464} else {
1465 tmp_cc = ORQI (tmp_cc, 2);
1466}
1467 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1468if (EQBI (tmp_tmp, 0)) {
1469 tmp_cc = ANDQI (tmp_cc, 14);
1470} else {
1471 tmp_cc = ORQI (tmp_cc, 1);
1472}
1473 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1474if (EQSI (tmp_result, 0)) {
1475 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1476} else {
1477if (LTSI (tmp_result, 0)) {
1478 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1479} else {
1480 tmp_cc = ANDQI (tmp_cc, 3);
1481}
1482}
1483 {
1484 SI opval = tmp_result;
1485 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1486 written |= (1 << 6);
1487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1488 }
1489 {
1490 UQI opval = tmp_cc;
1491 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1492 written |= (1 << 7);
1493 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1494 }
1495}
1496}
1497
1498 abuf->written = written;
1499 return vpc;
1500#undef FLD
1501}
1502
1503/* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1504
1505static SEM_PC
1506SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1507{
1508#define FLD(f) abuf->fields.sfmt_caddcc.f
1509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1510 int UNUSED written = 0;
1511 IADDR UNUSED pc = abuf->addr;
1512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1513
1514if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1515{
1516 BI tmp_tmp;
1517 QI tmp_cc;
1518 SI tmp_result;
1519 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1520 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1521if (EQBI (tmp_tmp, 0)) {
1522 tmp_cc = ANDQI (tmp_cc, 13);
1523} else {
1524 tmp_cc = ORQI (tmp_cc, 2);
1525}
1526 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1527if (EQBI (tmp_tmp, 0)) {
1528 tmp_cc = ANDQI (tmp_cc, 14);
1529} else {
1530 tmp_cc = ORQI (tmp_cc, 1);
1531}
1532 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1533if (EQSI (tmp_result, 0)) {
1534 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1535} else {
1536if (LTSI (tmp_result, 0)) {
1537 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1538} else {
1539 tmp_cc = ANDQI (tmp_cc, 3);
1540}
1541}
1542 {
1543 SI opval = tmp_result;
1544 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1545 written |= (1 << 6);
1546 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1547 }
1548 {
1549 UQI opval = tmp_cc;
1550 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1551 written |= (1 << 7);
1552 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1553 }
1554}
1555}
1556
1557 abuf->written = written;
1558 return vpc;
1559#undef FLD
1560}
1561
1562/* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1563
1564static SEM_PC
1565SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1566{
1567#define FLD(f) abuf->fields.sfmt_csmulcc.f
1568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1569 int UNUSED written = 0;
1570 IADDR UNUSED pc = abuf->addr;
1571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1572
1573if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1574{
1575 DI tmp_tmp;
1576 QI tmp_cc;
1577 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1578 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1579if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1580 tmp_cc = ANDQI (tmp_cc, 7);
1581} else {
1582 tmp_cc = ORQI (tmp_cc, 8);
1583}
1584if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1585 tmp_cc = ANDQI (tmp_cc, 11);
1586} else {
1587 tmp_cc = ORQI (tmp_cc, 4);
1588}
1589 {
1590 DI opval = tmp_tmp;
1591 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1592 written |= (1 << 6);
1593 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1594 }
1595 {
1596 UQI opval = tmp_cc;
1597 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1598 written |= (1 << 7);
1599 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1600 }
1601}
1602}
1603
1604 abuf->written = written;
1605 return vpc;
1606#undef FLD
1607}
1608
1609/* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1610
1611static SEM_PC
1612SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1613{
1614#define FLD(f) abuf->fields.sfmt_caddcc.f
1615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1616 int UNUSED written = 0;
1617 IADDR UNUSED pc = abuf->addr;
1618 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1619
1620if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1621{
1622 SI tmp_tmp;
1623 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1624 {
1625 SI opval = tmp_tmp;
1626 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1627 written |= (1 << 6);
1628 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1629 }
1630if (EQSI (tmp_tmp, 0)) {
1631 {
1632 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1633 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1634 written |= (1 << 7);
1635 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1636 }
1637} else {
1638if (LTSI (tmp_tmp, 0)) {
1639 {
1640 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1641 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1642 written |= (1 << 7);
1643 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1644 }
1645} else {
1646 {
1647 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1648 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1649 written |= (1 << 7);
1650 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1651 }
1652}
1653}
1654}
1655}
1656
1657 abuf->written = written;
1658 return vpc;
1659#undef FLD
1660}
1661
1662/* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1663
1664static SEM_PC
1665SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1666{
1667#define FLD(f) abuf->fields.sfmt_caddcc.f
1668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1669 int UNUSED written = 0;
1670 IADDR UNUSED pc = abuf->addr;
1671 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1672
1673if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1674{
1675 SI tmp_tmp;
1676 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1677 {
1678 SI opval = tmp_tmp;
1679 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1680 written |= (1 << 6);
1681 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1682 }
1683if (EQSI (tmp_tmp, 0)) {
1684 {
1685 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1686 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1687 written |= (1 << 7);
1688 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1689 }
1690} else {
1691if (LTSI (tmp_tmp, 0)) {
1692 {
1693 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1694 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1695 written |= (1 << 7);
1696 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1697 }
1698} else {
1699 {
1700 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1701 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1702 written |= (1 << 7);
1703 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1704 }
1705}
1706}
1707}
1708}
1709
1710 abuf->written = written;
1711 return vpc;
1712#undef FLD
1713}
1714
1715/* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1716
1717static SEM_PC
1718SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1719{
1720#define FLD(f) abuf->fields.sfmt_caddcc.f
1721 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1722 int UNUSED written = 0;
1723 IADDR UNUSED pc = abuf->addr;
1724 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1725
1726if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1727{
1728 SI tmp_tmp;
1729 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1730 {
1731 SI opval = tmp_tmp;
1732 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1733 written |= (1 << 6);
1734 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1735 }
1736if (EQSI (tmp_tmp, 0)) {
1737 {
1738 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1739 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1740 written |= (1 << 7);
1741 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1742 }
1743} else {
1744if (LTSI (tmp_tmp, 0)) {
1745 {
1746 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1747 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1748 written |= (1 << 7);
1749 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1750 }
1751} else {
1752 {
1753 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1754 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1755 written |= (1 << 7);
1756 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1757 }
1758}
1759}
1760}
1761}
1762
1763 abuf->written = written;
1764 return vpc;
1765#undef FLD
1766}
1767
1768/* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1769
1770static SEM_PC
1771SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1772{
1773#define FLD(f) abuf->fields.sfmt_caddcc.f
1774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1775 int UNUSED written = 0;
1776 IADDR UNUSED pc = abuf->addr;
1777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1778
1779if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1780{
1781 SI tmp_shift;
1782 SI tmp_tmp;
1783 QI tmp_cc;
1784 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1785 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1786 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1787 {
1788 SI opval = tmp_tmp;
1789 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1790 written |= (1 << 6);
1791 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1792 }
1793if (EQSI (tmp_tmp, 0)) {
1794 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1795} else {
1796if (LTSI (tmp_tmp, 0)) {
1797 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1798} else {
1799 tmp_cc = ANDQI (tmp_cc, 3);
1800}
1801}
1802 {
1803 UQI opval = tmp_cc;
1804 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1805 written |= (1 << 7);
1806 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1807 }
1808}
1809}
1810
1811 abuf->written = written;
1812 return vpc;
1813#undef FLD
1814}
1815
1816/* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1817
1818static SEM_PC
1819SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1820{
1821#define FLD(f) abuf->fields.sfmt_caddcc.f
1822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1823 int UNUSED written = 0;
1824 IADDR UNUSED pc = abuf->addr;
1825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1826
1827if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1828{
1829 SI tmp_shift;
1830 SI tmp_tmp;
1831 QI tmp_cc;
1832 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1833 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1834 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1835 {
1836 SI opval = tmp_tmp;
1837 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1838 written |= (1 << 6);
1839 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1840 }
1841if (EQSI (tmp_tmp, 0)) {
1842 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1843} else {
1844if (LTSI (tmp_tmp, 0)) {
1845 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1846} else {
1847 tmp_cc = ANDQI (tmp_cc, 3);
1848}
1849}
1850 {
1851 UQI opval = tmp_cc;
1852 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1853 written |= (1 << 7);
1854 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1855 }
1856}
1857}
1858
1859 abuf->written = written;
1860 return vpc;
1861#undef FLD
1862}
1863
1864/* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1865
1866static SEM_PC
1867SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1868{
1869#define FLD(f) abuf->fields.sfmt_caddcc.f
1870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1871 int UNUSED written = 0;
1872 IADDR UNUSED pc = abuf->addr;
1873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1874
1875if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1876{
1877 SI tmp_shift;
1878 SI tmp_tmp;
1879 QI tmp_cc;
1880 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1881 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1882 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1883 {
1884 SI opval = tmp_tmp;
1885 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1886 written |= (1 << 6);
1887 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1888 }
1889if (EQSI (tmp_tmp, 0)) {
1890 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1891} else {
1892if (LTSI (tmp_tmp, 0)) {
1893 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1894} else {
1895 tmp_cc = ANDQI (tmp_cc, 3);
1896}
1897}
1898 {
1899 UQI opval = tmp_cc;
1900 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1901 written |= (1 << 7);
1902 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1903 }
1904}
1905}
1906
1907 abuf->written = written;
1908 return vpc;
1909#undef FLD
1910}
1911
1912/* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1913
1914static SEM_PC
1915SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1916{
1917#define FLD(f) abuf->fields.sfmt_addcc.f
1918 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1919 int UNUSED written = 0;
1920 IADDR UNUSED pc = abuf->addr;
1921 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1922
1923 {
1924 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)));
1925 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1926 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1927 }
1928
1929 return vpc;
1930#undef FLD
1931}
1932
1933/* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1934
1935static SEM_PC
1936SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1937{
1938#define FLD(f) abuf->fields.sfmt_addcc.f
1939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1940 int UNUSED written = 0;
1941 IADDR UNUSED pc = abuf->addr;
1942 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1943
1944 {
1945 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)));
1946 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1947 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1948 }
1949
1950 return vpc;
1951#undef FLD
1952}
1953
1954/* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1955
1956static SEM_PC
1957SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1958{
1959#define FLD(f) abuf->fields.sfmt_addcc.f
1960 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1961 int UNUSED written = 0;
1962 IADDR UNUSED pc = abuf->addr;
1963 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1964
1965{
1966 SI tmp_tmp;
1967 QI tmp_cc;
1968 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1969 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1970if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1971 tmp_cc = ANDQI (tmp_cc, 13);
1972} else {
1973 tmp_cc = ORQI (tmp_cc, 2);
1974}
1975if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1976 tmp_cc = ANDQI (tmp_cc, 14);
1977} else {
1978 tmp_cc = ORQI (tmp_cc, 1);
1979}
1980if (EQSI (tmp_tmp, 0)) {
1981 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1982} else {
1983if (LTSI (tmp_tmp, 0)) {
1984 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1985} else {
1986 tmp_cc = ANDQI (tmp_cc, 3);
1987}
1988}
1989 {
1990 SI opval = tmp_tmp;
1991 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1992 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1993 }
1994 {
1995 UQI opval = tmp_cc;
1996 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1997 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1998 }
1999}
2000
2001 return vpc;
2002#undef FLD
2003}
2004
2005/* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2006
2007static SEM_PC
2008SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2009{
2010#define FLD(f) abuf->fields.sfmt_addcc.f
2011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2012 int UNUSED written = 0;
2013 IADDR UNUSED pc = abuf->addr;
2014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2015
2016{
2017 SI tmp_tmp;
2018 QI tmp_cc;
2019 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2020 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2021if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2022 tmp_cc = ANDQI (tmp_cc, 13);
2023} else {
2024 tmp_cc = ORQI (tmp_cc, 2);
2025}
2026if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2027 tmp_cc = ANDQI (tmp_cc, 14);
2028} else {
2029 tmp_cc = ORQI (tmp_cc, 1);
2030}
2031if (EQSI (tmp_tmp, 0)) {
2032 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2033} else {
2034if (LTSI (tmp_tmp, 0)) {
2035 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2036} else {
2037 tmp_cc = ANDQI (tmp_cc, 3);
2038}
2039}
2040 {
2041 SI opval = tmp_tmp;
2042 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2043 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2044 }
2045 {
2046 UQI opval = tmp_cc;
2047 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2048 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2049 }
2050}
2051
2052 return vpc;
2053#undef FLD
2054}
2055
e930b1f5
DB
2056/* addss: addss$pack $GRi,$GRj,$GRk */
2057
2058static SEM_PC
2059SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2060{
2061#define FLD(f) abuf->fields.sfmt_addcc.f
2062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2063 int UNUSED written = 0;
2064 IADDR UNUSED pc = abuf->addr;
2065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2066
2067{
2068 {
2069 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2070 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2071 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2072 }
2073if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2074 {
2075 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2076 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2077 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2078 }
2079}
2080}
2081
2082 return vpc;
2083#undef FLD
2084}
2085
2086/* subss: subss$pack $GRi,$GRj,$GRk */
2087
2088static SEM_PC
2089SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2090{
2091#define FLD(f) abuf->fields.sfmt_addcc.f
2092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2093 int UNUSED written = 0;
2094 IADDR UNUSED pc = abuf->addr;
2095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2096
2097{
2098 {
2099 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2100 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2101 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2102 }
2103if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2104 {
2105 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2106 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2107 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2108 }
2109}
2110}
2111
2112 return vpc;
2113#undef FLD
2114}
2115
b34f6357
DB
2116/* addi: addi$pack $GRi,$s12,$GRk */
2117
2118static SEM_PC
2119SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2120{
2121#define FLD(f) abuf->fields.sfmt_swapi.f
2122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2123 int UNUSED written = 0;
2124 IADDR UNUSED pc = abuf->addr;
2125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2126
2127 {
2128 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2129 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2130 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2131 }
2132
2133 return vpc;
2134#undef FLD
2135}
2136
2137/* subi: subi$pack $GRi,$s12,$GRk */
2138
2139static SEM_PC
2140SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2141{
2142#define FLD(f) abuf->fields.sfmt_swapi.f
2143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2144 int UNUSED written = 0;
2145 IADDR UNUSED pc = abuf->addr;
2146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2147
2148 {
2149 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2150 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2151 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2152 }
2153
2154 return vpc;
2155#undef FLD
2156}
2157
2158/* andi: andi$pack $GRi,$s12,$GRk */
2159
2160static SEM_PC
2161SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2162{
2163#define FLD(f) abuf->fields.sfmt_swapi.f
2164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2165 int UNUSED written = 0;
2166 IADDR UNUSED pc = abuf->addr;
2167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2168
2169 {
2170 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2171 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2172 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2173 }
2174
2175 return vpc;
2176#undef FLD
2177}
2178
2179/* ori: ori$pack $GRi,$s12,$GRk */
2180
2181static SEM_PC
2182SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2183{
2184#define FLD(f) abuf->fields.sfmt_swapi.f
2185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2186 int UNUSED written = 0;
2187 IADDR UNUSED pc = abuf->addr;
2188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2189
2190 {
2191 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2192 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2193 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2194 }
2195
2196 return vpc;
2197#undef FLD
2198}
2199
2200/* xori: xori$pack $GRi,$s12,$GRk */
2201
2202static SEM_PC
2203SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2204{
2205#define FLD(f) abuf->fields.sfmt_swapi.f
2206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2207 int UNUSED written = 0;
2208 IADDR UNUSED pc = abuf->addr;
2209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2210
2211 {
2212 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2213 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2214 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2215 }
2216
2217 return vpc;
2218#undef FLD
2219}
2220
2221/* sdivi: sdivi$pack $GRi,$s12,$GRk */
2222
2223static SEM_PC
2224SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2225{
2226#define FLD(f) abuf->fields.sfmt_swapi.f
2227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2228 int UNUSED written = 0;
2229 IADDR UNUSED pc = abuf->addr;
2230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2231
2232{
2233frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2234; /*clobber*/
2235}
2236
2237 return vpc;
2238#undef FLD
2239}
2240
2241/* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2242
2243static SEM_PC
2244SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2245{
2246#define FLD(f) abuf->fields.sfmt_swapi.f
2247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2248 int UNUSED written = 0;
2249 IADDR UNUSED pc = abuf->addr;
2250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2251
2252{
2253frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2254; /*clobber*/
2255}
2256
2257 return vpc;
2258#undef FLD
2259}
2260
2261/* udivi: udivi$pack $GRi,$s12,$GRk */
2262
2263static SEM_PC
2264SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2265{
2266#define FLD(f) abuf->fields.sfmt_swapi.f
2267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2268 int UNUSED written = 0;
2269 IADDR UNUSED pc = abuf->addr;
2270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2271
2272{
2273frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2274; /*clobber*/
2275}
2276
2277 return vpc;
2278#undef FLD
2279}
2280
2281/* nudivi: nudivi$pack $GRi,$s12,$GRk */
2282
2283static SEM_PC
2284SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2285{
2286#define FLD(f) abuf->fields.sfmt_swapi.f
2287 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2288 int UNUSED written = 0;
2289 IADDR UNUSED pc = abuf->addr;
2290 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2291
2292{
2293frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2294; /*clobber*/
2295}
2296
2297 return vpc;
2298#undef FLD
2299}
2300
2301/* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2302
2303static SEM_PC
2304SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2305{
2306#define FLD(f) abuf->fields.sfmt_smuli.f
2307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2308 int UNUSED written = 0;
2309 IADDR UNUSED pc = abuf->addr;
2310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2311
2312 {
2313 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2314 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2315 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2316 }
2317
2318 return vpc;
2319#undef FLD
2320}
2321
2322/* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2323
2324static SEM_PC
2325SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2326{
2327#define FLD(f) abuf->fields.sfmt_smuli.f
2328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2329 int UNUSED written = 0;
2330 IADDR UNUSED pc = abuf->addr;
2331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2332
2333 {
2334 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2335 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2336 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2337 }
2338
2339 return vpc;
2340#undef FLD
2341}
2342
2343/* slli: slli$pack $GRi,$s12,$GRk */
2344
2345static SEM_PC
2346SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2347{
2348#define FLD(f) abuf->fields.sfmt_swapi.f
2349 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2350 int UNUSED written = 0;
2351 IADDR UNUSED pc = abuf->addr;
2352 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2353
2354 {
2355 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2356 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2357 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2358 }
2359
2360 return vpc;
2361#undef FLD
2362}
2363
2364/* srli: srli$pack $GRi,$s12,$GRk */
2365
2366static SEM_PC
2367SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2368{
2369#define FLD(f) abuf->fields.sfmt_swapi.f
2370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2371 int UNUSED written = 0;
2372 IADDR UNUSED pc = abuf->addr;
2373 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2374
2375 {
2376 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2377 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2378 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2379 }
2380
2381 return vpc;
2382#undef FLD
2383}
2384
2385/* srai: srai$pack $GRi,$s12,$GRk */
2386
2387static SEM_PC
2388SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2389{
2390#define FLD(f) abuf->fields.sfmt_swapi.f
2391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2392 int UNUSED written = 0;
2393 IADDR UNUSED pc = abuf->addr;
2394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2395
2396 {
2397 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2398 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2399 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2400 }
2401
2402 return vpc;
2403#undef FLD
2404}
2405
2406/* scani: scani$pack $GRi,$s12,$GRk */
2407
2408static SEM_PC
2409SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2410{
2411#define FLD(f) abuf->fields.sfmt_swapi.f
2412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2413 int UNUSED written = 0;
2414 IADDR UNUSED pc = abuf->addr;
2415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2416
2417{
2418 SI tmp_tmp1;
2419 SI tmp_tmp2;
2420 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2421 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2422 {
2423 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2424 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2425 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2426 }
2427}
2428
2429 return vpc;
2430#undef FLD
2431}
2432
2433/* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2434
2435static SEM_PC
2436SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2437{
2438#define FLD(f) abuf->fields.sfmt_addicc.f
2439 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2440 int UNUSED written = 0;
2441 IADDR UNUSED pc = abuf->addr;
2442 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2443
2444{
2445 BI tmp_tmp;
2446 QI tmp_cc;
2447 SI tmp_result;
2448 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2449 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2450if (EQBI (tmp_tmp, 0)) {
2451 tmp_cc = ANDQI (tmp_cc, 13);
2452} else {
2453 tmp_cc = ORQI (tmp_cc, 2);
2454}
2455 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2456if (EQBI (tmp_tmp, 0)) {
2457 tmp_cc = ANDQI (tmp_cc, 14);
2458} else {
2459 tmp_cc = ORQI (tmp_cc, 1);
2460}
2461 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2462if (EQSI (tmp_result, 0)) {
2463 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2464} else {
2465if (LTSI (tmp_result, 0)) {
2466 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2467} else {
2468 tmp_cc = ANDQI (tmp_cc, 3);
2469}
2470}
2471 {
2472 SI opval = tmp_result;
2473 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2474 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2475 }
2476 {
2477 UQI opval = tmp_cc;
2478 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2479 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2480 }
2481}
2482
2483 return vpc;
2484#undef FLD
2485}
2486
2487/* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2488
2489static SEM_PC
2490SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2491{
2492#define FLD(f) abuf->fields.sfmt_addicc.f
2493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2494 int UNUSED written = 0;
2495 IADDR UNUSED pc = abuf->addr;
2496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2497
2498{
2499 BI tmp_tmp;
2500 QI tmp_cc;
2501 SI tmp_result;
2502 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2503 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2504if (EQBI (tmp_tmp, 0)) {
2505 tmp_cc = ANDQI (tmp_cc, 13);
2506} else {
2507 tmp_cc = ORQI (tmp_cc, 2);
2508}
2509 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2510if (EQBI (tmp_tmp, 0)) {
2511 tmp_cc = ANDQI (tmp_cc, 14);
2512} else {
2513 tmp_cc = ORQI (tmp_cc, 1);
2514}
2515 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2516if (EQSI (tmp_result, 0)) {
2517 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2518} else {
2519if (LTSI (tmp_result, 0)) {
2520 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2521} else {
2522 tmp_cc = ANDQI (tmp_cc, 3);
2523}
2524}
2525 {
2526 SI opval = tmp_result;
2527 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2528 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2529 }
2530 {
2531 UQI opval = tmp_cc;
2532 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2533 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2534 }
2535}
2536
2537 return vpc;
2538#undef FLD
2539}
2540
2541/* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2542
2543static SEM_PC
2544SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2545{
2546#define FLD(f) abuf->fields.sfmt_addicc.f
2547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2548 int UNUSED written = 0;
2549 IADDR UNUSED pc = abuf->addr;
2550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2551
2552{
2553 SI tmp_tmp;
2554 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2555 {
2556 SI opval = tmp_tmp;
2557 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2558 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2559 }
2560if (EQSI (tmp_tmp, 0)) {
2561 {
2562 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2563 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2564 written |= (1 << 4);
2565 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2566 }
2567} else {
2568if (LTSI (tmp_tmp, 0)) {
2569 {
2570 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2571 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2572 written |= (1 << 4);
2573 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2574 }
2575} else {
2576 {
2577 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2578 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2579 written |= (1 << 4);
2580 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2581 }
2582}
2583}
2584}
2585
2586 abuf->written = written;
2587 return vpc;
2588#undef FLD
2589}
2590
2591/* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2592
2593static SEM_PC
2594SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2595{
2596#define FLD(f) abuf->fields.sfmt_addicc.f
2597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2598 int UNUSED written = 0;
2599 IADDR UNUSED pc = abuf->addr;
2600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2601
2602{
2603 SI tmp_tmp;
2604 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2605 {
2606 SI opval = tmp_tmp;
2607 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2608 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2609 }
2610if (EQSI (tmp_tmp, 0)) {
2611 {
2612 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2613 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2614 written |= (1 << 4);
2615 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2616 }
2617} else {
2618if (LTSI (tmp_tmp, 0)) {
2619 {
2620 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2621 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2622 written |= (1 << 4);
2623 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2624 }
2625} else {
2626 {
2627 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2628 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2629 written |= (1 << 4);
2630 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2631 }
2632}
2633}
2634}
2635
2636 abuf->written = written;
2637 return vpc;
2638#undef FLD
2639}
2640
2641/* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2642
2643static SEM_PC
2644SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2645{
2646#define FLD(f) abuf->fields.sfmt_addicc.f
2647 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2648 int UNUSED written = 0;
2649 IADDR UNUSED pc = abuf->addr;
2650 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2651
2652{
2653 SI tmp_tmp;
2654 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2655 {
2656 SI opval = tmp_tmp;
2657 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2658 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2659 }
2660if (EQSI (tmp_tmp, 0)) {
2661 {
2662 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2663 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2664 written |= (1 << 4);
2665 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2666 }
2667} else {
2668if (LTSI (tmp_tmp, 0)) {
2669 {
2670 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2671 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2672 written |= (1 << 4);
2673 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2674 }
2675} else {
2676 {
2677 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2678 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2679 written |= (1 << 4);
2680 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2681 }
2682}
2683}
2684}
2685
2686 abuf->written = written;
2687 return vpc;
2688#undef FLD
2689}
2690
2691/* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2692
2693static SEM_PC
2694SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2695{
2696#define FLD(f) abuf->fields.sfmt_smulicc.f
2697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2698 int UNUSED written = 0;
2699 IADDR UNUSED pc = abuf->addr;
2700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2701
2702{
2703 DI tmp_tmp;
2704 QI tmp_cc;
2705 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2706 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2707if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2708 tmp_cc = ANDQI (tmp_cc, 7);
2709} else {
2710 tmp_cc = ORQI (tmp_cc, 8);
2711}
2712if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2713 tmp_cc = ANDQI (tmp_cc, 11);
2714} else {
2715 tmp_cc = ORQI (tmp_cc, 4);
2716}
2717 {
2718 DI opval = tmp_tmp;
2719 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2720 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2721 }
2722 {
2723 UQI opval = tmp_cc;
2724 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2725 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2726 }
2727}
2728
2729 return vpc;
2730#undef FLD
2731}
2732
2733/* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2734
2735static SEM_PC
2736SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2737{
2738#define FLD(f) abuf->fields.sfmt_smulicc.f
2739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2740 int UNUSED written = 0;
2741 IADDR UNUSED pc = abuf->addr;
2742 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2743
2744{
2745 DI tmp_tmp;
2746 QI tmp_cc;
2747 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2748 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2749if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2750 tmp_cc = ANDQI (tmp_cc, 7);
2751} else {
2752 tmp_cc = ORQI (tmp_cc, 8);
2753}
2754if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2755 tmp_cc = ANDQI (tmp_cc, 11);
2756} else {
2757 tmp_cc = ORQI (tmp_cc, 4);
2758}
2759 {
2760 DI opval = tmp_tmp;
2761 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2762 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2763 }
2764 {
2765 UQI opval = tmp_cc;
2766 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2767 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2768 }
2769}
2770
2771 return vpc;
2772#undef FLD
2773}
2774
2775/* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2776
2777static SEM_PC
2778SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2779{
2780#define FLD(f) abuf->fields.sfmt_addicc.f
2781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2782 int UNUSED written = 0;
2783 IADDR UNUSED pc = abuf->addr;
2784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2785
2786{
2787 SI tmp_shift;
2788 SI tmp_tmp;
2789 QI tmp_cc;
2790 tmp_shift = ANDSI (FLD (f_s10), 31);
2791 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)]));
2792 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2793 {
2794 SI opval = tmp_tmp;
2795 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2796 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2797 }
2798if (EQSI (tmp_tmp, 0)) {
2799 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2800} else {
2801if (LTSI (tmp_tmp, 0)) {
2802 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2803} else {
2804 tmp_cc = ANDQI (tmp_cc, 3);
2805}
2806}
2807 {
2808 UQI opval = tmp_cc;
2809 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2810 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2811 }
2812}
2813
2814 return vpc;
2815#undef FLD
2816}
2817
2818/* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2819
2820static SEM_PC
2821SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2822{
2823#define FLD(f) abuf->fields.sfmt_addicc.f
2824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2825 int UNUSED written = 0;
2826 IADDR UNUSED pc = abuf->addr;
2827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2828
2829{
2830 SI tmp_shift;
2831 SI tmp_tmp;
2832 QI tmp_cc;
2833 tmp_shift = ANDSI (FLD (f_s10), 31);
2834 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)]));
2835 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2836 {
2837 SI opval = tmp_tmp;
2838 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2839 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2840 }
2841if (EQSI (tmp_tmp, 0)) {
2842 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2843} else {
2844if (LTSI (tmp_tmp, 0)) {
2845 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2846} else {
2847 tmp_cc = ANDQI (tmp_cc, 3);
2848}
2849}
2850 {
2851 UQI opval = tmp_cc;
2852 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2853 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2854 }
2855}
2856
2857 return vpc;
2858#undef FLD
2859}
2860
2861/* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2862
2863static SEM_PC
2864SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2865{
2866#define FLD(f) abuf->fields.sfmt_addicc.f
2867 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2868 int UNUSED written = 0;
2869 IADDR UNUSED pc = abuf->addr;
2870 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2871
2872{
2873 SI tmp_shift;
2874 SI tmp_tmp;
2875 QI tmp_cc;
2876 tmp_shift = ANDSI (FLD (f_s10), 31);
2877 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)]));
2878 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2879 {
2880 SI opval = tmp_tmp;
2881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2882 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2883 }
2884if (EQSI (tmp_tmp, 0)) {
2885 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2886} else {
2887if (LTSI (tmp_tmp, 0)) {
2888 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2889} else {
2890 tmp_cc = ANDQI (tmp_cc, 3);
2891}
2892}
2893 {
2894 UQI opval = tmp_cc;
2895 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2896 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2897 }
2898}
2899
2900 return vpc;
2901#undef FLD
2902}
2903
2904/* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2905
2906static SEM_PC
2907SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2908{
2909#define FLD(f) abuf->fields.sfmt_addicc.f
2910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2911 int UNUSED written = 0;
2912 IADDR UNUSED pc = abuf->addr;
2913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2914
2915 {
2916 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2917 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2918 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2919 }
2920
2921 return vpc;
2922#undef FLD
2923}
2924
2925/* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2926
2927static SEM_PC
2928SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2929{
2930#define FLD(f) abuf->fields.sfmt_addicc.f
2931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2932 int UNUSED written = 0;
2933 IADDR UNUSED pc = abuf->addr;
2934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2935
2936 {
2937 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2938 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2939 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2940 }
2941
2942 return vpc;
2943#undef FLD
2944}
2945
2946/* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2947
2948static SEM_PC
2949SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2950{
2951#define FLD(f) abuf->fields.sfmt_addicc.f
2952 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2953 int UNUSED written = 0;
2954 IADDR UNUSED pc = abuf->addr;
2955 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2956
2957{
2958 SI tmp_tmp;
2959 QI tmp_cc;
2960 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2961 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2962if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2963 tmp_cc = ANDQI (tmp_cc, 13);
2964} else {
2965 tmp_cc = ORQI (tmp_cc, 2);
2966}
2967if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2968 tmp_cc = ANDQI (tmp_cc, 14);
2969} else {
2970 tmp_cc = ORQI (tmp_cc, 1);
2971}
2972if (EQSI (tmp_tmp, 0)) {
2973 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2974} else {
2975if (LTSI (tmp_tmp, 0)) {
2976 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2977} else {
2978 tmp_cc = ANDQI (tmp_cc, 3);
2979}
2980}
2981 {
2982 SI opval = tmp_tmp;
2983 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2984 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2985 }
2986 {
2987 UQI opval = tmp_cc;
2988 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2989 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2990 }
2991}
2992
2993 return vpc;
2994#undef FLD
2995}
2996
2997/* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2998
2999static SEM_PC
3000SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3001{
3002#define FLD(f) abuf->fields.sfmt_addicc.f
3003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3004 int UNUSED written = 0;
3005 IADDR UNUSED pc = abuf->addr;
3006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3007
3008{
3009 SI tmp_tmp;
3010 QI tmp_cc;
3011 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3012 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
3013if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3014 tmp_cc = ANDQI (tmp_cc, 13);
3015} else {
3016 tmp_cc = ORQI (tmp_cc, 2);
3017}
3018if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3019 tmp_cc = ANDQI (tmp_cc, 14);
3020} else {
3021 tmp_cc = ORQI (tmp_cc, 1);
3022}
3023if (EQSI (tmp_tmp, 0)) {
3024 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3025} else {
3026if (LTSI (tmp_tmp, 0)) {
3027 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3028} else {
3029 tmp_cc = ANDQI (tmp_cc, 3);
3030}
3031}
3032 {
3033 SI opval = tmp_tmp;
3034 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3035 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3036 }
3037 {
3038 UQI opval = tmp_cc;
3039 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3040 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3041 }
3042}
3043
3044 return vpc;
3045#undef FLD
3046}
3047
3048/* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3049
3050static SEM_PC
3051SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3052{
3053#define FLD(f) abuf->fields.sfmt_smulcc.f
3054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3055 int UNUSED written = 0;
3056 IADDR UNUSED pc = abuf->addr;
3057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3058
3059{
3060 QI tmp_cc;
3061if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3062 tmp_cc = ANDQI (tmp_cc, 7);
3063} else {
3064 tmp_cc = ORQI (tmp_cc, 8);
3065}
3066if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3067 tmp_cc = ANDQI (tmp_cc, 11);
3068} else {
3069 tmp_cc = ORQI (tmp_cc, 4);
3070}
3071if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3072 tmp_cc = ANDQI (tmp_cc, 13);
3073} else {
3074 tmp_cc = ORQI (tmp_cc, 2);
3075}
3076if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3077 tmp_cc = ANDQI (tmp_cc, 14);
3078} else {
3079 tmp_cc = ORQI (tmp_cc, 1);
3080}
3081 {
3082 UQI opval = tmp_cc;
3083 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3084 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3085 }
3086}
3087
3088 return vpc;
3089#undef FLD
3090}
3091
3092/* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3093
3094static SEM_PC
3095SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3096{
3097#define FLD(f) abuf->fields.sfmt_smulcc.f
3098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3099 int UNUSED written = 0;
3100 IADDR UNUSED pc = abuf->addr;
3101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3102
3103{
3104 QI tmp_cc;
3105 tmp_cc = 0;
3106if (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)) {
3107 tmp_cc = ANDQI (tmp_cc, 14);
3108} else {
3109 tmp_cc = ORQI (tmp_cc, 1);
3110}
3111 {
3112 UQI opval = tmp_cc;
3113 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3114 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3115 }
3116}
3117
3118 return vpc;
3119#undef FLD
3120}
3121
3122/* setlo: setlo$pack $ulo16,$GRklo */
3123
3124static SEM_PC
3125SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3126{
3127#define FLD(f) abuf->fields.sfmt_setlo.f
3128 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3129 int UNUSED written = 0;
3130 IADDR UNUSED pc = abuf->addr;
3131 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3132
3133 {
3134 UHI opval = FLD (f_u16);
3135 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3136 TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3137 }
3138
3139 return vpc;
3140#undef FLD
3141}
3142
3143/* sethi: sethi$pack $uhi16,$GRkhi */
3144
3145static SEM_PC
3146SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3147{
3148#define FLD(f) abuf->fields.sfmt_sethi.f
3149 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3150 int UNUSED written = 0;
3151 IADDR UNUSED pc = abuf->addr;
3152 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3153
3154 {
3155 UHI opval = FLD (f_u16);
3156 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3157 TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3158 }
3159
3160 return vpc;
3161#undef FLD
3162}
3163
3164/* setlos: setlos$pack $slo16,$GRk */
3165
3166static SEM_PC
3167SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3168{
3169#define FLD(f) abuf->fields.sfmt_setlos.f
3170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3171 int UNUSED written = 0;
3172 IADDR UNUSED pc = abuf->addr;
3173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3174
3175 {
3176 SI opval = FLD (f_s16);
3177 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3178 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3179 }
3180
3181 return vpc;
3182#undef FLD
3183}
3184
3185/* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3186
3187static SEM_PC
3188SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3189{
3190#define FLD(f) abuf->fields.sfmt_addcc.f
3191 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3192 int UNUSED written = 0;
3193 IADDR UNUSED pc = abuf->addr;
3194 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3195
3196 {
3197 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3198 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3199 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3200 }
3201
3202 return vpc;
3203#undef FLD
3204}
3205
3206/* ldub: ldub$pack @($GRi,$GRj),$GRk */
3207
3208static SEM_PC
3209SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3210{
3211#define FLD(f) abuf->fields.sfmt_addcc.f
3212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3213 int UNUSED written = 0;
3214 IADDR UNUSED pc = abuf->addr;
3215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3216
3217 {
3218 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3219 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3220 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3221 }
3222
3223 return vpc;
3224#undef FLD
3225}
3226
3227/* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3228
3229static SEM_PC
3230SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3231{
3232#define FLD(f) abuf->fields.sfmt_addcc.f
3233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3234 int UNUSED written = 0;
3235 IADDR UNUSED pc = abuf->addr;
3236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3237
3238 {
3239 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3240 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3241 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3242 }
3243
3244 return vpc;
3245#undef FLD
3246}
3247
3248/* lduh: lduh$pack @($GRi,$GRj),$GRk */
3249
3250static SEM_PC
3251SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3252{
3253#define FLD(f) abuf->fields.sfmt_addcc.f
3254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3255 int UNUSED written = 0;
3256 IADDR UNUSED pc = abuf->addr;
3257 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3258
3259 {
3260 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3261 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3262 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3263 }
3264
3265 return vpc;
3266#undef FLD
3267}
3268
79e59fe6 3269/* ld: ld$pack $ldann($GRi,$GRj),$GRk */
b34f6357
DB
3270
3271static SEM_PC
3272SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3273{
3274#define FLD(f) abuf->fields.sfmt_addcc.f
3275 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3276 int UNUSED written = 0;
3277 IADDR UNUSED pc = abuf->addr;
3278 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3279
3280 {
3281 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3282 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3283 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3284 }
3285
3286 return vpc;
3287#undef FLD
3288}
3289
3290/* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3291
3292static SEM_PC
3293SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3294{
3295#define FLD(f) abuf->fields.sfmt_cldbfu.f
3296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3297 int UNUSED written = 0;
3298 IADDR UNUSED pc = abuf->addr;
3299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3300
3301 {
3302 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3303 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3304 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3305 }
3306
3307 return vpc;
3308#undef FLD
3309}
3310
3311/* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3312
3313static SEM_PC
3314SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3315{
3316#define FLD(f) abuf->fields.sfmt_cldbfu.f
3317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3318 int UNUSED written = 0;
3319 IADDR UNUSED pc = abuf->addr;
3320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3321
3322 {
3323 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3324 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3325 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3326 }
3327
3328 return vpc;
3329#undef FLD
3330}
3331
3332/* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3333
3334static SEM_PC
3335SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3336{
3337#define FLD(f) abuf->fields.sfmt_cldbfu.f
3338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3339 int UNUSED written = 0;
3340 IADDR UNUSED pc = abuf->addr;
3341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3342
3343 {
3344 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3345 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3346 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3347 }
3348
3349 return vpc;
3350#undef FLD
3351}
3352
3353/* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3354
3355static SEM_PC
3356SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3357{
3358#define FLD(f) abuf->fields.sfmt_ldcu.f
3359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3360 int UNUSED written = 0;
3361 IADDR UNUSED pc = abuf->addr;
3362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3363
3364 {
3365 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3366 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3367 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3368 }
3369
3370 return vpc;
3371#undef FLD
3372}
3373
3374/* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3375
3376static SEM_PC
3377SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3378{
3379#define FLD(f) abuf->fields.sfmt_addcc.f
3380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3381 int UNUSED written = 0;
3382 IADDR UNUSED pc = abuf->addr;
3383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3384
3385{
3386 BI tmp_do_op;
3387 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3388if (tmp_do_op) {
3389 {
3390 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3391 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3392 written |= (1 << 6);
3393 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3394 }
3395}
3396}
3397
3398 abuf->written = written;
3399 return vpc;
3400#undef FLD
3401}
3402
3403/* nldub: nldub$pack @($GRi,$GRj),$GRk */
3404
3405static SEM_PC
3406SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3407{
3408#define FLD(f) abuf->fields.sfmt_addcc.f
3409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3410 int UNUSED written = 0;
3411 IADDR UNUSED pc = abuf->addr;
3412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3413
3414{
3415 BI tmp_do_op;
3416 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3417if (tmp_do_op) {
3418 {
3419 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3420 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3421 written |= (1 << 6);
3422 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3423 }
3424}
3425}
3426
3427 abuf->written = written;
3428 return vpc;
3429#undef FLD
3430}
3431
3432/* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3433
3434static SEM_PC
3435SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3436{
3437#define FLD(f) abuf->fields.sfmt_addcc.f
3438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3439 int UNUSED written = 0;
3440 IADDR UNUSED pc = abuf->addr;
3441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3442
3443{
3444 BI tmp_do_op;
3445 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3446if (tmp_do_op) {
3447 {
3448 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3449 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3450 written |= (1 << 6);
3451 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3452 }
3453}
3454}
3455
3456 abuf->written = written;
3457 return vpc;
3458#undef FLD
3459}
3460
3461/* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3462
3463static SEM_PC
3464SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3465{
3466#define FLD(f) abuf->fields.sfmt_addcc.f
3467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3468 int UNUSED written = 0;
3469 IADDR UNUSED pc = abuf->addr;
3470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3471
3472{
3473 BI tmp_do_op;
3474 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3475if (tmp_do_op) {
3476 {
3477 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3478 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3479 written |= (1 << 6);
3480 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3481 }
3482}
3483}
3484
3485 abuf->written = written;
3486 return vpc;
3487#undef FLD
3488}
3489
3490/* nld: nld$pack @($GRi,$GRj),$GRk */
3491
3492static SEM_PC
3493SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3494{
3495#define FLD(f) abuf->fields.sfmt_addcc.f
3496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3497 int UNUSED written = 0;
3498 IADDR UNUSED pc = abuf->addr;
3499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3500
3501{
3502 BI tmp_do_op;
3503 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3504if (tmp_do_op) {
3505 {
3506 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3507 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3508 written |= (1 << 6);
3509 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3510 }
3511}
3512}
3513
3514 abuf->written = written;
3515 return vpc;
3516#undef FLD
3517}
3518
3519/* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3520
3521static SEM_PC
3522SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3523{
3524#define FLD(f) abuf->fields.sfmt_cldbfu.f
3525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3526 int UNUSED written = 0;
3527 IADDR UNUSED pc = abuf->addr;
3528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3529
3530{
3531 BI tmp_do_op;
3532 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3533if (tmp_do_op) {
3534 {
3535 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3536 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3537 written |= (1 << 6);
3538 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3539 }
3540}
3541}
3542
3543 abuf->written = written;
3544 return vpc;
3545#undef FLD
3546}
3547
3548/* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3549
3550static SEM_PC
3551SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3552{
3553#define FLD(f) abuf->fields.sfmt_cldbfu.f
3554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3555 int UNUSED written = 0;
3556 IADDR UNUSED pc = abuf->addr;
3557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3558
3559{
3560 BI tmp_do_op;
3561 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3562if (tmp_do_op) {
3563 {
3564 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3565 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3566 written |= (1 << 6);
3567 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3568 }
3569}
3570}
3571
3572 abuf->written = written;
3573 return vpc;
3574#undef FLD
3575}
3576
3577/* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3578
3579static SEM_PC
3580SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3581{
3582#define FLD(f) abuf->fields.sfmt_cldbfu.f
3583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3584 int UNUSED written = 0;
3585 IADDR UNUSED pc = abuf->addr;
3586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3587
3588{
3589 BI tmp_do_op;
3590 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3591if (tmp_do_op) {
3592 {
3593 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3594 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3595 written |= (1 << 6);
3596 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3597 }
3598}
3599}
3600
3601 abuf->written = written;
3602 return vpc;
3603#undef FLD
3604}
3605
79e59fe6 3606/* ldd: ldd$pack $lddann($GRi,$GRj),$GRdoublek */
b34f6357
DB
3607
3608static SEM_PC
3609SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3610{
3611#define FLD(f) abuf->fields.sfmt_smulcc.f
3612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3613 int UNUSED written = 0;
3614 IADDR UNUSED pc = abuf->addr;
3615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3616
3617{
3618 SI tmp_address;
3619if (NESI (FLD (f_GRk), 0)) {
3620{
3621 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3622 {
3623 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3624 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3625 written |= (1 << 4);
3626 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3627 }
3628}
3629}
3630}
3631
3632 abuf->written = written;
3633 return vpc;
3634#undef FLD
3635}
3636
3637/* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3638
3639static SEM_PC
3640SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3641{
3642#define FLD(f) abuf->fields.sfmt_clddfu.f
3643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3644 int UNUSED written = 0;
3645 IADDR UNUSED pc = abuf->addr;
3646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3647
3648{
3649 SI tmp_address;
3650{
3651 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3652 {
3653 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3654 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3655 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3656 }
3657}
3658}
3659
3660 return vpc;
3661#undef FLD
3662}
3663
3664/* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3665
3666static SEM_PC
3667SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3668{
3669#define FLD(f) abuf->fields.sfmt_lddcu.f
3670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3671 int UNUSED written = 0;
3672 IADDR UNUSED pc = abuf->addr;
3673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3674
3675{
3676 SI tmp_address;
3677{
3678 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3679 {
3680 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3681 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3682 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3683 }
3684}
3685}
3686
3687 return vpc;
3688#undef FLD
3689}
3690
3691/* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3692
3693static SEM_PC
3694SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3695{
3696#define FLD(f) abuf->fields.sfmt_smulcc.f
3697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3698 int UNUSED written = 0;
3699 IADDR UNUSED pc = abuf->addr;
3700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3701
3702{
3703 SI tmp_address;
3704{
3705 BI tmp_do_op;
3706 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3707if (tmp_do_op) {
3708if (NESI (FLD (f_GRk), 0)) {
3709{
3710 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3711 {
3712 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3713 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3714 written |= (1 << 6);
3715 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3716 }
3717}
3718}
3719}
3720}
3721}
3722
3723 abuf->written = written;
3724 return vpc;
3725#undef FLD
3726}
3727
3728/* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3729
3730static SEM_PC
3731SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3732{
3733#define FLD(f) abuf->fields.sfmt_clddfu.f
3734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3735 int UNUSED written = 0;
3736 IADDR UNUSED pc = abuf->addr;
3737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3738
3739{
3740 SI tmp_address;
3741{
3742 BI tmp_do_op;
3743 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3744if (tmp_do_op) {
3745{
3746 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3747 {
3748 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3749 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3750 written |= (1 << 6);
3751 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3752 }
3753}
3754}
3755}
3756}
3757
3758 abuf->written = written;
3759 return vpc;
3760#undef FLD
3761}
3762
3763/* ldq: ldq$pack @($GRi,$GRj),$GRk */
3764
3765static SEM_PC
3766SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3767{
3768#define FLD(f) abuf->fields.sfmt_smulcc.f
3769 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3770 int UNUSED written = 0;
3771 IADDR UNUSED pc = abuf->addr;
3772 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3773
3774{
3775 SI tmp_address;
3776{
3777 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3778frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3779}
3780}
3781
3782 return vpc;
3783#undef FLD
3784}
3785
3786/* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3787
3788static SEM_PC
3789SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3790{
3791#define FLD(f) abuf->fields.sfmt_cstdfu.f
3792 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3793 int UNUSED written = 0;
3794 IADDR UNUSED pc = abuf->addr;
3795 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3796
3797{
3798 SI tmp_address;
3799{
3800 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3801frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3802}
3803}
3804
3805 return vpc;
3806#undef FLD
3807}
3808
3809/* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3810
3811static SEM_PC
3812SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3813{
3814#define FLD(f) abuf->fields.sfmt_stdcu.f
3815 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3816 int UNUSED written = 0;
3817 IADDR UNUSED pc = abuf->addr;
3818 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3819
3820{
3821 SI tmp_address;
3822{
3823 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3824frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3825}
3826}
3827
3828 return vpc;
3829#undef FLD
3830}
3831
3832/* nldq: nldq$pack @($GRi,$GRj),$GRk */
3833
3834static SEM_PC
3835SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3836{
3837#define FLD(f) abuf->fields.sfmt_smulcc.f
3838 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3839 int UNUSED written = 0;
3840 IADDR UNUSED pc = abuf->addr;
3841 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3842
3843{
3844 SI tmp_address;
3845{
3846 BI tmp_do_op;
3847 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3848if (tmp_do_op) {
3849{
3850 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3851frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3852}
3853}
3854}
3855}
3856
3857 return vpc;
3858#undef FLD
3859}
3860
3861/* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3862
3863static SEM_PC
3864SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3865{
3866#define FLD(f) abuf->fields.sfmt_cstdfu.f
3867 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3868 int UNUSED written = 0;
3869 IADDR UNUSED pc = abuf->addr;
3870 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3871
3872{
3873 SI tmp_address;
3874{
3875 BI tmp_do_op;
3876 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3877if (tmp_do_op) {
3878{
3879 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3880frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3881}
3882}
3883}
3884}
3885
3886 return vpc;
3887#undef FLD
3888}
3889
3890/* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3891
3892static SEM_PC
3893SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3894{
3895#define FLD(f) abuf->fields.sfmt_cldsbu.f
3896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3897 int UNUSED written = 0;
3898 IADDR UNUSED pc = abuf->addr;
3899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3900
3901{
3902 USI tmp_address;
3903 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3904 {
3905 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3906 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3907 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3908 }
3909if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3910{
3911 {
3912 SI opval = tmp_address;
3913 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3914 written |= (1 << 5);
3915 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3916 }
3917frvbf_force_update (current_cpu);
3918}
3919}
3920}
3921
3922 abuf->written = written;
3923 return vpc;
3924#undef FLD
3925}
3926
3927/* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3928
3929static SEM_PC
3930SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3931{
3932#define FLD(f) abuf->fields.sfmt_cldsbu.f
3933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3934 int UNUSED written = 0;
3935 IADDR UNUSED pc = abuf->addr;
3936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3937
3938{
3939 USI tmp_address;
3940 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3941 {
3942 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3944 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3945 }
3946if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3947{
3948 {
3949 SI opval = tmp_address;
3950 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3951 written |= (1 << 5);
3952 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3953 }
3954frvbf_force_update (current_cpu);
3955}
3956}
3957}
3958
3959 abuf->written = written;
3960 return vpc;
3961#undef FLD
3962}
3963
3964/* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3965
3966static SEM_PC
3967SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3968{
3969#define FLD(f) abuf->fields.sfmt_cldsbu.f
3970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3971 int UNUSED written = 0;
3972 IADDR UNUSED pc = abuf->addr;
3973 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3974
3975{
3976 USI tmp_address;
3977 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3978 {
3979 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3981 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3982 }
3983if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3984{
3985 {
3986 SI opval = tmp_address;
3987 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3988 written |= (1 << 5);
3989 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3990 }
3991frvbf_force_update (current_cpu);
3992}
3993}
3994}
3995
3996 abuf->written = written;
3997 return vpc;
3998#undef FLD
3999}
4000
4001/* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
4002
4003static SEM_PC
4004SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4005{
4006#define FLD(f) abuf->fields.sfmt_cldsbu.f
4007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4008 int UNUSED written = 0;
4009 IADDR UNUSED pc = abuf->addr;
4010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4011
4012{
4013 USI tmp_address;
4014 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4015 {
4016 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4017 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4018 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4019 }
4020if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4021{
4022 {
4023 SI opval = tmp_address;
4024 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4025 written |= (1 << 5);
4026 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4027 }
4028frvbf_force_update (current_cpu);
4029}
4030}
4031}
4032
4033 abuf->written = written;
4034 return vpc;
4035#undef FLD
4036}
4037
4038/* ldu: ldu$pack @($GRi,$GRj),$GRk */
4039
4040static SEM_PC
4041SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4042{
4043#define FLD(f) abuf->fields.sfmt_cldsbu.f
4044 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4045 int UNUSED written = 0;
4046 IADDR UNUSED pc = abuf->addr;
4047 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4048
4049{
4050 USI tmp_address;
4051 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4052 {
4053 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4054 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4055 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4056 }
4057if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4058{
4059 {
4060 SI opval = tmp_address;
4061 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4062 written |= (1 << 5);
4063 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4064 }
4065frvbf_force_update (current_cpu);
4066}
4067}
4068}
4069
4070 abuf->written = written;
4071 return vpc;
4072#undef FLD
4073}
4074
4075/* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4076
4077static SEM_PC
4078SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4079{
4080#define FLD(f) abuf->fields.sfmt_cldsbu.f
4081 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4082 int UNUSED written = 0;
4083 IADDR UNUSED pc = abuf->addr;
4084 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4085
4086{
4087 BI tmp_do_op;
4088 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4089if (tmp_do_op) {
4090{
4091 USI tmp_address;
4092 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4093 {
4094 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4095 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4096 written |= (1 << 7);
4097 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4098 }
4099if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4100{
4101 {
4102 SI opval = tmp_address;
4103 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4104 written |= (1 << 6);
4105 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4106 }
4107frvbf_force_update (current_cpu);
4108}
4109}
4110}
4111}
4112}
4113
4114 abuf->written = written;
4115 return vpc;
4116#undef FLD
4117}
4118
4119/* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4120
4121static SEM_PC
4122SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4123{
4124#define FLD(f) abuf->fields.sfmt_cldsbu.f
4125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4126 int UNUSED written = 0;
4127 IADDR UNUSED pc = abuf->addr;
4128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4129
4130{
4131 BI tmp_do_op;
4132 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4133if (tmp_do_op) {
4134{
4135 USI tmp_address;
4136 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4137 {
4138 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4139 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4140 written |= (1 << 7);
4141 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4142 }
4143if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4144{
4145 {
4146 SI opval = tmp_address;
4147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4148 written |= (1 << 6);
4149 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4150 }
4151frvbf_force_update (current_cpu);
4152}
4153}
4154}
4155}
4156}
4157
4158 abuf->written = written;
4159 return vpc;
4160#undef FLD
4161}
4162
4163/* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4164
4165static SEM_PC
4166SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4167{
4168#define FLD(f) abuf->fields.sfmt_cldsbu.f
4169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4170 int UNUSED written = 0;
4171 IADDR UNUSED pc = abuf->addr;
4172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4173
4174{
4175 BI tmp_do_op;
4176 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4177if (tmp_do_op) {
4178{
4179 USI tmp_address;
4180 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4181 {
4182 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4183 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4184 written |= (1 << 7);
4185 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4186 }
4187if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4188{
4189 {
4190 SI opval = tmp_address;
4191 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4192 written |= (1 << 6);
4193 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4194 }
4195frvbf_force_update (current_cpu);
4196}
4197}
4198}
4199}
4200}
4201
4202 abuf->written = written;
4203 return vpc;
4204#undef FLD
4205}
4206
4207/* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4208
4209static SEM_PC
4210SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4211{
4212#define FLD(f) abuf->fields.sfmt_cldsbu.f
4213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4214 int UNUSED written = 0;
4215 IADDR UNUSED pc = abuf->addr;
4216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4217
4218{
4219 BI tmp_do_op;
4220 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4221if (tmp_do_op) {
4222{
4223 USI tmp_address;
4224 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4225 {
4226 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4227 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4228 written |= (1 << 7);
4229 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4230 }
4231if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4232{
4233 {
4234 SI opval = tmp_address;
4235 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4236 written |= (1 << 6);
4237 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4238 }
4239frvbf_force_update (current_cpu);
4240}
4241}
4242}
4243}
4244}
4245
4246 abuf->written = written;
4247 return vpc;
4248#undef FLD
4249}
4250
4251/* nldu: nldu$pack @($GRi,$GRj),$GRk */
4252
4253static SEM_PC
4254SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4255{
4256#define FLD(f) abuf->fields.sfmt_cldsbu.f
4257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4258 int UNUSED written = 0;
4259 IADDR UNUSED pc = abuf->addr;
4260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4261
4262{
4263 BI tmp_do_op;
4264 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4265if (tmp_do_op) {
4266{
4267 USI tmp_address;
4268 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4269 {
4270 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4271 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4272 written |= (1 << 7);
4273 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4274 }
4275if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4276{
4277 {
4278 SI opval = tmp_address;
4279 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4280 written |= (1 << 6);
4281 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4282 }
4283frvbf_force_update (current_cpu);
4284}
4285}
4286}
4287}
4288}
4289
4290 abuf->written = written;
4291 return vpc;
4292#undef FLD
4293}
4294
4295/* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4296
4297static SEM_PC
4298SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4299{
4300#define FLD(f) abuf->fields.sfmt_cldbfu.f
4301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4302 int UNUSED written = 0;
4303 IADDR UNUSED pc = abuf->addr;
4304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4305
4306{
4307 USI tmp_address;
4308 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4309 {
4310 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4311 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4312 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4313 }
4314 {
4315 SI opval = tmp_address;
4316 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4317 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4318 }
4319frvbf_force_update (current_cpu);
4320}
4321
4322 return vpc;
4323#undef FLD
4324}
4325
4326/* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4327
4328static SEM_PC
4329SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4330{
4331#define FLD(f) abuf->fields.sfmt_cldbfu.f
4332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4333 int UNUSED written = 0;
4334 IADDR UNUSED pc = abuf->addr;
4335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4336
4337{
4338 USI tmp_address;
4339 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4340 {
4341 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4342 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4343 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4344 }
4345 {
4346 SI opval = tmp_address;
4347 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4348 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4349 }
4350frvbf_force_update (current_cpu);
4351}
4352
4353 return vpc;
4354#undef FLD
4355}
4356
4357/* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4358
4359static SEM_PC
4360SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4361{
4362#define FLD(f) abuf->fields.sfmt_cldbfu.f
4363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4364 int UNUSED written = 0;
4365 IADDR UNUSED pc = abuf->addr;
4366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4367
4368{
4369 USI tmp_address;
4370 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4371 {
4372 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4373 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4374 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4375 }
4376 {
4377 SI opval = tmp_address;
4378 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4379 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4380 }
4381frvbf_force_update (current_cpu);
4382}
4383
4384 return vpc;
4385#undef FLD
4386}
4387
4388/* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4389
4390static SEM_PC
4391SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4392{
4393#define FLD(f) abuf->fields.sfmt_ldcu.f
4394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4395 int UNUSED written = 0;
4396 IADDR UNUSED pc = abuf->addr;
4397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4398
4399{
4400 USI tmp_address;
4401 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4402 {
4403 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4404 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4405 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4406 }
4407 {
4408 SI opval = tmp_address;
4409 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4410 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4411 }
4412frvbf_force_update (current_cpu);
4413}
4414
4415 return vpc;
4416#undef FLD
4417}
4418
4419/* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4420
4421static SEM_PC
4422SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4423{
4424#define FLD(f) abuf->fields.sfmt_cldbfu.f
4425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4426 int UNUSED written = 0;
4427 IADDR UNUSED pc = abuf->addr;
4428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4429
4430{
4431 BI tmp_do_op;
4432 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4433if (tmp_do_op) {
4434{
4435 USI tmp_address;
4436 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4437 {
4438 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4439 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4440 written |= (1 << 6);
4441 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4442 }
4443 {
4444 SI opval = tmp_address;
4445 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4446 written |= (1 << 7);
4447 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4448 }
4449frvbf_force_update (current_cpu);
4450}
4451}
4452}
4453
4454 abuf->written = written;
4455 return vpc;
4456#undef FLD
4457}
4458
4459/* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4460
4461static SEM_PC
4462SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4463{
4464#define FLD(f) abuf->fields.sfmt_cldbfu.f
4465 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4466 int UNUSED written = 0;
4467 IADDR UNUSED pc = abuf->addr;
4468 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4469
4470{
4471 BI tmp_do_op;
4472 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4473if (tmp_do_op) {
4474{
4475 USI tmp_address;
4476 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4477 {
4478 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4479 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4480 written |= (1 << 6);
4481 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4482 }
4483 {
4484 SI opval = tmp_address;
4485 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4486 written |= (1 << 7);
4487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4488 }
4489frvbf_force_update (current_cpu);
4490}
4491}
4492}
4493
4494 abuf->written = written;
4495 return vpc;
4496#undef FLD
4497}
4498
4499/* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4500
4501static SEM_PC
4502SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4503{
4504#define FLD(f) abuf->fields.sfmt_cldbfu.f
4505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4506 int UNUSED written = 0;
4507 IADDR UNUSED pc = abuf->addr;
4508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4509
4510{
4511 BI tmp_do_op;
4512 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4513if (tmp_do_op) {
4514{
4515 USI tmp_address;
4516 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4517 {
4518 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4519 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4520 written |= (1 << 6);
4521 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4522 }
4523 {
4524 SI opval = tmp_address;
4525 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4526 written |= (1 << 7);
4527 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4528 }
4529frvbf_force_update (current_cpu);
4530}
4531}
4532}
4533
4534 abuf->written = written;
4535 return vpc;
4536#undef FLD
4537}
4538
4539/* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4540
4541static SEM_PC
4542SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4543{
4544#define FLD(f) abuf->fields.sfmt_clddu.f
4545 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4546 int UNUSED written = 0;
4547 IADDR UNUSED pc = abuf->addr;
4548 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4549
4550{
4551 SI tmp_address;
4552if (NESI (FLD (f_GRk), 0)) {
4553{
4554 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4555 {
4556 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4557 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4558 written |= (1 << 5);
4559 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4560 }
4561}
4562}
4563if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4564{
4565 {
4566 SI opval = tmp_address;
4567 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4568 written |= (1 << 6);
4569 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4570 }
4571frvbf_force_update (current_cpu);
4572}
4573}
4574}
4575
4576 abuf->written = written;
4577 return vpc;
4578#undef FLD
4579}
4580
4581/* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4582
4583static SEM_PC
4584SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4585{
4586#define FLD(f) abuf->fields.sfmt_clddu.f
4587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4588 int UNUSED written = 0;
4589 IADDR UNUSED pc = abuf->addr;
4590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4591
4592{
4593 BI tmp_do_op;
4594 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4595if (tmp_do_op) {
4596{
4597 SI tmp_address;
4598if (NESI (FLD (f_GRk), 0)) {
4599{
4600 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4601 {
4602 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4603 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4604 written |= (1 << 6);
4605 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4606 }
4607}
4608}
4609if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4610{
4611 {
4612 SI opval = tmp_address;
4613 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4614 written |= (1 << 7);
4615 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4616 }
4617frvbf_force_update (current_cpu);
4618}
4619}
4620}
4621}
4622}
4623
4624 abuf->written = written;
4625 return vpc;
4626#undef FLD
4627}
4628
4629/* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4630
4631static SEM_PC
4632SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4633{
4634#define FLD(f) abuf->fields.sfmt_clddfu.f
4635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4636 int UNUSED written = 0;
4637 IADDR UNUSED pc = abuf->addr;
4638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4639
4640{
4641 SI tmp_address;
4642{
4643 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4644 {
4645 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4646 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4647 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4648 }
4649}
4650 {
4651 SI opval = tmp_address;
4652 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4653 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4654 }
4655frvbf_force_update (current_cpu);
4656}
4657
4658 return vpc;
4659#undef FLD
4660}
4661
4662/* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4663
4664static SEM_PC
4665SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4666{
4667#define FLD(f) abuf->fields.sfmt_lddcu.f
4668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4669 int UNUSED written = 0;
4670 IADDR UNUSED pc = abuf->addr;
4671 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4672
4673{
4674 SI tmp_address;
4675{
4676 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4677 {
4678 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4679 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4680 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4681 }
4682}
4683 {
4684 SI opval = tmp_address;
4685 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4686 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4687 }
4688frvbf_force_update (current_cpu);
4689}
4690
4691 return vpc;
4692#undef FLD
4693}
4694
4695/* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4696
4697static SEM_PC
4698SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4699{
4700#define FLD(f) abuf->fields.sfmt_clddfu.f
4701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4702 int UNUSED written = 0;
4703 IADDR UNUSED pc = abuf->addr;
4704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4705
4706{
4707 BI tmp_do_op;
4708 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4709if (tmp_do_op) {
4710{
4711 SI tmp_address;
4712{
4713 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4714 {
4715 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4716 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4717 written |= (1 << 6);
4718 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4719 }
4720}
4721 {
4722 SI opval = tmp_address;
4723 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4724 written |= (1 << 7);
4725 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4726 }
4727frvbf_force_update (current_cpu);
4728}
4729}
4730}
4731
4732 abuf->written = written;
4733 return vpc;
4734#undef FLD
4735}
4736
4737/* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4738
4739static SEM_PC
4740SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4741{
4742#define FLD(f) abuf->fields.sfmt_cstdu.f
4743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4744 int UNUSED written = 0;
4745 IADDR UNUSED pc = abuf->addr;
4746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4747
4748{
4749 SI tmp_address;
4750{
4751 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4752frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4753}
4754if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4755{
4756 {
4757 SI opval = tmp_address;
4758 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4759 written |= (1 << 5);
4760 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4761 }
4762frvbf_force_update (current_cpu);
4763}
4764}
4765}
4766
4767 abuf->written = written;
4768 return vpc;
4769#undef FLD
4770}
4771
4772/* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4773
4774static SEM_PC
4775SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4776{
4777#define FLD(f) abuf->fields.sfmt_cstdu.f
4778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4779 int UNUSED written = 0;
4780 IADDR UNUSED pc = abuf->addr;
4781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4782
4783{
4784 BI tmp_do_op;
4785 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4786if (tmp_do_op) {
4787{
4788 SI tmp_address;
4789{
4790 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4791frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4792}
4793if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4794{
4795 {
4796 SI opval = tmp_address;
4797 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4798 written |= (1 << 6);
4799 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4800 }
4801frvbf_force_update (current_cpu);
4802}
4803}
4804}
4805}
4806}
4807
4808 abuf->written = written;
4809 return vpc;
4810#undef FLD
4811}
4812
4813/* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4814
4815static SEM_PC
4816SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4817{
4818#define FLD(f) abuf->fields.sfmt_cstdfu.f
4819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4820 int UNUSED written = 0;
4821 IADDR UNUSED pc = abuf->addr;
4822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4823
4824{
4825 SI tmp_address;
4826{
4827 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4828frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4829}
4830 {
4831 SI opval = tmp_address;
4832 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4833 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4834 }
4835frvbf_force_update (current_cpu);
4836}
4837
4838 return vpc;
4839#undef FLD
4840}
4841
4842/* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4843
4844static SEM_PC
4845SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4846{
4847#define FLD(f) abuf->fields.sfmt_stdcu.f
4848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4849 int UNUSED written = 0;
4850 IADDR UNUSED pc = abuf->addr;
4851 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4852
4853{
4854 SI tmp_address;
4855{
4856 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4857frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4858}
4859 {
4860 SI opval = tmp_address;
4861 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4862 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4863 }
4864frvbf_force_update (current_cpu);
4865}
4866
4867 return vpc;
4868#undef FLD
4869}
4870
4871/* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4872
4873static SEM_PC
4874SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4875{
4876#define FLD(f) abuf->fields.sfmt_cstdfu.f
4877 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4878 int UNUSED written = 0;
4879 IADDR UNUSED pc = abuf->addr;
4880 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4881
4882{
4883 BI tmp_do_op;
4884 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4885if (tmp_do_op) {
4886{
4887 SI tmp_address;
4888{
4889 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4890frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4891}
4892 {
4893 SI opval = tmp_address;
4894 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4895 written |= (1 << 6);
4896 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4897 }
4898frvbf_force_update (current_cpu);
4899}
4900}
4901}
4902
4903 abuf->written = written;
4904 return vpc;
4905#undef FLD
4906}
4907
4908/* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4909
4910static SEM_PC
4911SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4912{
4913#define FLD(f) abuf->fields.sfmt_swapi.f
4914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4915 int UNUSED written = 0;
4916 IADDR UNUSED pc = abuf->addr;
4917 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4918
4919 {
4920 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4921 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4922 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4923 }
4924
4925 return vpc;
4926#undef FLD
4927}
4928
4929/* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4930
4931static SEM_PC
4932SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4933{
4934#define FLD(f) abuf->fields.sfmt_swapi.f
4935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4936 int UNUSED written = 0;
4937 IADDR UNUSED pc = abuf->addr;
4938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4939
4940 {
4941 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4942 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4943 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4944 }
4945
4946 return vpc;
4947#undef FLD
4948}
4949
4950/* ldi: ldi$pack @($GRi,$d12),$GRk */
4951
4952static SEM_PC
4953SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4954{
4955#define FLD(f) abuf->fields.sfmt_swapi.f
4956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4957 int UNUSED written = 0;
4958 IADDR UNUSED pc = abuf->addr;
4959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4960
4961 {
4962 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4963 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4965 }
4966
4967 return vpc;
4968#undef FLD
4969}
4970
4971/* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4972
4973static SEM_PC
4974SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4975{
4976#define FLD(f) abuf->fields.sfmt_swapi.f
4977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4978 int UNUSED written = 0;
4979 IADDR UNUSED pc = abuf->addr;
4980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4981
4982 {
4983 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4984 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4986 }
4987
4988 return vpc;
4989#undef FLD
4990}
4991
4992/* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4993
4994static SEM_PC
4995SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4996{
4997#define FLD(f) abuf->fields.sfmt_swapi.f
4998 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4999 int UNUSED written = 0;
5000 IADDR UNUSED pc = abuf->addr;
5001 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5002
5003 {
5004 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5005 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5006 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5007 }
5008
5009 return vpc;
5010#undef FLD
5011}
5012
5013/* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5014
5015static SEM_PC
5016SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5017{
5018#define FLD(f) abuf->fields.sfmt_ldbfi.f
5019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5020 int UNUSED written = 0;
5021 IADDR UNUSED pc = abuf->addr;
5022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5023
5024 {
5025 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5026 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5027 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5028 }
5029
5030 return vpc;
5031#undef FLD
5032}
5033
5034/* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5035
5036static SEM_PC
5037SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5038{
5039#define FLD(f) abuf->fields.sfmt_ldbfi.f
5040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5041 int UNUSED written = 0;
5042 IADDR UNUSED pc = abuf->addr;
5043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5044
5045 {
5046 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5047 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5048 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5049 }
5050
5051 return vpc;
5052#undef FLD
5053}
5054
5055/* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5056
5057static SEM_PC
5058SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5059{
5060#define FLD(f) abuf->fields.sfmt_ldbfi.f
5061 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5062 int UNUSED written = 0;
5063 IADDR UNUSED pc = abuf->addr;
5064 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5065
5066 {
5067 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5068 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5069 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5070 }
5071
5072 return vpc;
5073#undef FLD
5074}
5075
5076/* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5077
5078static SEM_PC
5079SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5080{
5081#define FLD(f) abuf->fields.sfmt_swapi.f
5082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5083 int UNUSED written = 0;
5084 IADDR UNUSED pc = abuf->addr;
5085 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5086
5087{
5088 BI tmp_do_op;
5089 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5090if (tmp_do_op) {
5091 {
5092 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5093 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5094 written |= (1 << 5);
5095 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5096 }
5097}
5098}
5099
5100 abuf->written = written;
5101 return vpc;
5102#undef FLD
5103}
5104
5105/* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5106
5107static SEM_PC
5108SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5109{
5110#define FLD(f) abuf->fields.sfmt_swapi.f
5111 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5112 int UNUSED written = 0;
5113 IADDR UNUSED pc = abuf->addr;
5114 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5115
5116{
5117 BI tmp_do_op;
5118 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5119if (tmp_do_op) {
5120 {
5121 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5122 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5123 written |= (1 << 5);
5124 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5125 }
5126}
5127}
5128
5129 abuf->written = written;
5130 return vpc;
5131#undef FLD
5132}
5133
5134/* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5135
5136static SEM_PC
5137SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5138{
5139#define FLD(f) abuf->fields.sfmt_swapi.f
5140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5141 int UNUSED written = 0;
5142 IADDR UNUSED pc = abuf->addr;
5143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5144
5145{
5146 BI tmp_do_op;
5147 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5148if (tmp_do_op) {
5149 {
5150 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5151 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5152 written |= (1 << 5);
5153 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5154 }
5155}
5156}
5157
5158 abuf->written = written;
5159 return vpc;
5160#undef FLD
5161}
5162
5163/* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5164
5165static SEM_PC
5166SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5167{
5168#define FLD(f) abuf->fields.sfmt_swapi.f
5169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5170 int UNUSED written = 0;
5171 IADDR UNUSED pc = abuf->addr;
5172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5173
5174{
5175 BI tmp_do_op;
5176 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5177if (tmp_do_op) {
5178 {
5179 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5180 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5181 written |= (1 << 5);
5182 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5183 }
5184}
5185}
5186
5187 abuf->written = written;
5188 return vpc;
5189#undef FLD
5190}
5191
5192/* nldi: nldi$pack @($GRi,$d12),$GRk */
5193
5194static SEM_PC
5195SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5196{
5197#define FLD(f) abuf->fields.sfmt_swapi.f
5198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5199 int UNUSED written = 0;
5200 IADDR UNUSED pc = abuf->addr;
5201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5202
5203{
5204 BI tmp_do_op;
5205 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5206if (tmp_do_op) {
5207 {
5208 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5209 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5210 written |= (1 << 5);
5211 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5212 }
5213}
5214}
5215
5216 abuf->written = written;
5217 return vpc;
5218#undef FLD
5219}
5220
5221/* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5222
5223static SEM_PC
5224SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5225{
5226#define FLD(f) abuf->fields.sfmt_ldbfi.f
5227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5228 int UNUSED written = 0;
5229 IADDR UNUSED pc = abuf->addr;
5230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5231
5232{
5233 BI tmp_do_op;
5234 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5235if (tmp_do_op) {
5236 {
5237 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5238 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5239 written |= (1 << 5);
5240 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5241 }
5242}
5243}
5244
5245 abuf->written = written;
5246 return vpc;
5247#undef FLD
5248}
5249
5250/* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5251
5252static SEM_PC
5253SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5254{
5255#define FLD(f) abuf->fields.sfmt_ldbfi.f
5256 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5257 int UNUSED written = 0;
5258 IADDR UNUSED pc = abuf->addr;
5259 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5260
5261{
5262 BI tmp_do_op;
5263 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5264if (tmp_do_op) {
5265 {
5266 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5267 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5268 written |= (1 << 5);
5269 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5270 }
5271}
5272}
5273
5274 abuf->written = written;
5275 return vpc;
5276#undef FLD
5277}
5278
5279/* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5280
5281static SEM_PC
5282SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5283{
5284#define FLD(f) abuf->fields.sfmt_ldbfi.f
5285 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5286 int UNUSED written = 0;
5287 IADDR UNUSED pc = abuf->addr;
5288 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5289
5290{
5291 BI tmp_do_op;
5292 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5293if (tmp_do_op) {
5294 {
5295 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5296 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5297 written |= (1 << 5);
5298 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5299 }
5300}
5301}
5302
5303 abuf->written = written;
5304 return vpc;
5305#undef FLD
5306}
5307
5308/* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5309
5310static SEM_PC
5311SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5312{
5313#define FLD(f) abuf->fields.sfmt_smuli.f
5314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5315 int UNUSED written = 0;
5316 IADDR UNUSED pc = abuf->addr;
5317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5318
5319{
5320 SI tmp_address;
5321if (NESI (FLD (f_GRk), 0)) {
5322{
5323 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5324 {
5325 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5326 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5327 written |= (1 << 4);
5328 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5329 }
5330}
5331}
5332}
5333
5334 abuf->written = written;
5335 return vpc;
5336#undef FLD
5337}
5338
5339/* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5340
5341static SEM_PC
5342SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5343{
5344#define FLD(f) abuf->fields.sfmt_lddfi.f
5345 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5346 int UNUSED written = 0;
5347 IADDR UNUSED pc = abuf->addr;
5348 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5349
5350{
5351 SI tmp_address;
5352{
5353 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5354 {
5355 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5356 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5357 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5358 }
5359}
5360}
5361
5362 return vpc;
5363#undef FLD
5364}
5365
5366/* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5367
5368static SEM_PC
5369SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5370{
5371#define FLD(f) abuf->fields.sfmt_smuli.f
5372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5373 int UNUSED written = 0;
5374 IADDR UNUSED pc = abuf->addr;
5375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5376
5377{
5378 SI tmp_address;
5379{
5380 BI tmp_do_op;
5381 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5382if (tmp_do_op) {
5383if (NESI (FLD (f_GRk), 0)) {
5384{
5385 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5386 {
5387 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5388 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5389 written |= (1 << 5);
5390 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5391 }
5392}
5393}
5394}
5395}
5396}
5397
5398 abuf->written = written;
5399 return vpc;
5400#undef FLD
5401}
5402
5403/* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5404
5405static SEM_PC
5406SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5407{
5408#define FLD(f) abuf->fields.sfmt_lddfi.f
5409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5410 int UNUSED written = 0;
5411 IADDR UNUSED pc = abuf->addr;
5412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5413
5414{
5415 SI tmp_address;
5416{
5417 BI tmp_do_op;
5418 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5419if (tmp_do_op) {
5420{
5421 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5422 {
5423 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5424 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5425 written |= (1 << 5);
5426 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5427 }
5428}
5429}
5430}
5431}
5432
5433 abuf->written = written;
5434 return vpc;
5435#undef FLD
5436}
5437
5438/* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5439
5440static SEM_PC
5441SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5442{
5443#define FLD(f) abuf->fields.sfmt_stdi.f
5444 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5445 int UNUSED written = 0;
5446 IADDR UNUSED pc = abuf->addr;
5447 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5448
5449{
5450 SI tmp_address;
5451{
5452 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5453frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5454}
5455}
5456
5457 return vpc;
5458#undef FLD
5459}
5460
5461/* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5462
5463static SEM_PC
5464SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5465{
5466#define FLD(f) abuf->fields.sfmt_stdfi.f
5467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5468 int UNUSED written = 0;
5469 IADDR UNUSED pc = abuf->addr;
5470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5471
5472{
5473 SI tmp_address;
5474{
5475 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5476frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5477}
5478}
5479
5480 return vpc;
5481#undef FLD
5482}
5483
b34f6357
DB
5484/* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5485
5486static SEM_PC
5487SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5488{
5489#define FLD(f) abuf->fields.sfmt_stdfi.f
5490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5491 int UNUSED written = 0;
5492 IADDR UNUSED pc = abuf->addr;
5493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5494
5495{
5496 SI tmp_address;
5497{
5498 BI tmp_do_op;
5499 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5500if (tmp_do_op) {
5501{
5502 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5503frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5504}
5505}
5506}
5507}
5508
5509 return vpc;
5510#undef FLD
5511}
5512
5513/* stb: stb$pack $GRk,@($GRi,$GRj) */
5514
5515static SEM_PC
5516SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5517{
5518#define FLD(f) abuf->fields.sfmt_cswap.f
5519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5520 int UNUSED written = 0;
5521 IADDR UNUSED pc = abuf->addr;
5522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5523
5524frvbf_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)));
5525
5526 return vpc;
5527#undef FLD
5528}
5529
5530/* sth: sth$pack $GRk,@($GRi,$GRj) */
5531
5532static SEM_PC
5533SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5534{
5535#define FLD(f) abuf->fields.sfmt_cswap.f
5536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5537 int UNUSED written = 0;
5538 IADDR UNUSED pc = abuf->addr;
5539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5540
5541frvbf_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)));
5542
5543 return vpc;
5544#undef FLD
5545}
5546
5547/* st: st$pack $GRk,@($GRi,$GRj) */
5548
5549static SEM_PC
5550SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5551{
5552#define FLD(f) abuf->fields.sfmt_cswap.f
5553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5554 int UNUSED written = 0;
5555 IADDR UNUSED pc = abuf->addr;
5556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5557
5558frvbf_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)));
5559
5560 return vpc;
5561#undef FLD
5562}
5563
5564/* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5565
5566static SEM_PC
5567SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5568{
5569#define FLD(f) abuf->fields.sfmt_cstbfu.f
5570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5571 int UNUSED written = 0;
5572 IADDR UNUSED pc = abuf->addr;
5573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5574
5575frvbf_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)));
5576
5577 return vpc;
5578#undef FLD
5579}
5580
5581/* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5582
5583static SEM_PC
5584SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5585{
5586#define FLD(f) abuf->fields.sfmt_cstbfu.f
5587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5588 int UNUSED written = 0;
5589 IADDR UNUSED pc = abuf->addr;
5590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5591
5592frvbf_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)));
5593
5594 return vpc;
5595#undef FLD
5596}
5597
5598/* stf: stf$pack $FRintk,@($GRi,$GRj) */
5599
5600static SEM_PC
5601SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5602{
5603#define FLD(f) abuf->fields.sfmt_cstbfu.f
5604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5605 int UNUSED written = 0;
5606 IADDR UNUSED pc = abuf->addr;
5607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5608
5609frvbf_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)));
5610
5611 return vpc;
5612#undef FLD
5613}
5614
5615/* stc: stc$pack $CPRk,@($GRi,$GRj) */
5616
5617static SEM_PC
5618SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5619{
5620#define FLD(f) abuf->fields.sfmt_stcu.f
5621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5622 int UNUSED written = 0;
5623 IADDR UNUSED pc = abuf->addr;
5624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5625
5626frvbf_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)]));
5627
5628 return vpc;
5629#undef FLD
5630}
5631
29a79ca0 5632/* std: std$pack $GRdoublek,@($GRi,$GRj) */
b34f6357
DB
5633
5634static SEM_PC
5635SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5636{
5637#define FLD(f) abuf->fields.sfmt_cstdu.f
5638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5639 int UNUSED written = 0;
5640 IADDR UNUSED pc = abuf->addr;
5641 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5642
5643{
5644 SI tmp_address;
5645{
5646 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5647frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5648}
5649}
5650
5651 return vpc;
5652#undef FLD
5653}
5654
29a79ca0 5655/* stdf: stdf$pack $FRdoublek,@($GRi,$GRj) */
b34f6357
DB
5656
5657static SEM_PC
5658SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5659{
5660#define FLD(f) abuf->fields.sfmt_cstdfu.f
5661 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5662 int UNUSED written = 0;
5663 IADDR UNUSED pc = abuf->addr;
5664 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5665
5666{
5667 SI tmp_address;
5668{
5669 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5670frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5671}
5672}
5673
5674 return vpc;
5675#undef FLD
5676}
5677
29a79ca0 5678/* stdc: stdc$pack $CPRdoublek,@($GRi,$GRj) */
b34f6357
DB
5679
5680static SEM_PC
5681SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5682{
5683#define FLD(f) abuf->fields.sfmt_stdcu.f
5684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5685 int UNUSED written = 0;
5686 IADDR UNUSED pc = abuf->addr;
5687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5688
5689{
5690 SI tmp_address;
5691{
5692 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5693frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5694}
5695}
5696
5697 return vpc;
5698#undef FLD
5699}
5700
b34f6357
DB
5701/* stq: stq$pack $GRk,@($GRi,$GRj) */
5702
5703static SEM_PC
5704SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5705{
5706#define FLD(f) abuf->fields.sfmt_smulcc.f
5707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5708 int UNUSED written = 0;
5709 IADDR UNUSED pc = abuf->addr;
5710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5711
5712{
5713 SI tmp_address;
5714{
5715 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5716frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5717}
5718}
5719
5720 return vpc;
5721#undef FLD
5722}
5723
5724/* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5725
5726static SEM_PC
5727SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5728{
5729#define FLD(f) abuf->fields.sfmt_cstdfu.f
5730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5731 int UNUSED written = 0;
5732 IADDR UNUSED pc = abuf->addr;
5733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5734
5735{
5736 SI tmp_address;
5737{
5738 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5739frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5740}
5741}
5742
5743 return vpc;
5744#undef FLD
5745}
5746
5747/* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5748
5749static SEM_PC
5750SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5751{
5752#define FLD(f) abuf->fields.sfmt_stdcu.f
5753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5754 int UNUSED written = 0;
5755 IADDR UNUSED pc = abuf->addr;
5756 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5757
5758{
5759 SI tmp_address;
5760{
5761 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5762frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5763}
5764}
5765
5766 return vpc;
5767#undef FLD
5768}
5769
b34f6357
DB
5770/* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5771
5772static SEM_PC
5773SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5774{
5775#define FLD(f) abuf->fields.sfmt_cstbu.f
5776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5777 int UNUSED written = 0;
5778 IADDR UNUSED pc = abuf->addr;
5779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5780
5781{
5782 USI tmp_address;
5783 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5784frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5785 {
5786 SI opval = tmp_address;
5787 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5789 }
5790}
5791
5792 return vpc;
5793#undef FLD
5794}
5795
5796/* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5797
5798static SEM_PC
5799SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5800{
5801#define FLD(f) abuf->fields.sfmt_cstbu.f
5802 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5803 int UNUSED written = 0;
5804 IADDR UNUSED pc = abuf->addr;
5805 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5806
5807{
5808 USI tmp_address;
5809 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5810frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5811 {
5812 SI opval = tmp_address;
5813 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5814 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5815 }
5816}
5817
5818 return vpc;
5819#undef FLD
5820}
5821
5822/* stu: stu$pack $GRk,@($GRi,$GRj) */
5823
5824static SEM_PC
5825SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5826{
5827#define FLD(f) abuf->fields.sfmt_cstbu.f
5828 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5829 int UNUSED written = 0;
5830 IADDR UNUSED pc = abuf->addr;
5831 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5832
5833{
5834 USI tmp_address;
5835 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5836frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5837 {
5838 SI opval = tmp_address;
5839 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5841 }
5842}
5843
5844 return vpc;
5845#undef FLD
5846}
5847
5848/* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5849
5850static SEM_PC
5851SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5852{
5853#define FLD(f) abuf->fields.sfmt_cstbfu.f
5854 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5855 int UNUSED written = 0;
5856 IADDR UNUSED pc = abuf->addr;
5857 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5858
5859{
5860 USI tmp_address;
5861 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5862frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5863 {
5864 SI opval = tmp_address;
5865 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5866 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5867 }
5868}
5869
5870 return vpc;
5871#undef FLD
5872}
5873
5874/* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5875
5876static SEM_PC
5877SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5878{
5879#define FLD(f) abuf->fields.sfmt_cstbfu.f
5880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5881 int UNUSED written = 0;
5882 IADDR UNUSED pc = abuf->addr;
5883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5884
5885{
5886 USI tmp_address;
5887 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5888frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5889 {
5890 SI opval = tmp_address;
5891 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5892 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5893 }
5894}
5895
5896 return vpc;
5897#undef FLD
5898}
5899
5900/* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5901
5902static SEM_PC
5903SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5904{
5905#define FLD(f) abuf->fields.sfmt_cstbfu.f
5906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5907 int UNUSED written = 0;
5908 IADDR UNUSED pc = abuf->addr;
5909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5910
5911{
5912 USI tmp_address;
5913 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5914frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5915 {
5916 SI opval = tmp_address;
5917 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5918 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5919 }
5920}
5921
5922 return vpc;
5923#undef FLD
5924}
5925
5926/* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
5927
5928static SEM_PC
5929SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5930{
5931#define FLD(f) abuf->fields.sfmt_stcu.f
5932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5933 int UNUSED written = 0;
5934 IADDR UNUSED pc = abuf->addr;
5935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5936
5937{
5938 USI tmp_address;
5939 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5940frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
5941 {
5942 SI opval = tmp_address;
5943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5944 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5945 }
5946}
5947
5948 return vpc;
5949#undef FLD
5950}
5951
29a79ca0 5952/* stdu: stdu$pack $GRdoublek,@($GRi,$GRj) */
b34f6357
DB
5953
5954static SEM_PC
5955SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5956{
5957#define FLD(f) abuf->fields.sfmt_cstdu.f
5958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5959 int UNUSED written = 0;
5960 IADDR UNUSED pc = abuf->addr;
5961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5962
5963{
5964 SI tmp_address;
5965{
5966 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5967frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5968}
5969 {
5970 SI opval = tmp_address;
5971 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5972 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5973 }
5974}
5975
5976 return vpc;
5977#undef FLD
5978}
5979
29a79ca0 5980/* stdfu: stdfu$pack $FRdoublek,@($GRi,$GRj) */
b34f6357
DB
5981
5982static SEM_PC
5983SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5984{
5985#define FLD(f) abuf->fields.sfmt_cstdfu.f
5986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5987 int UNUSED written = 0;
5988 IADDR UNUSED pc = abuf->addr;
5989 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5990
5991{
5992 SI tmp_address;
5993{
5994 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5995frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5996}
5997 {
5998 SI opval = tmp_address;
5999 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6000 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6001 }
6002}
6003
6004 return vpc;
6005#undef FLD
6006}
6007
29a79ca0 6008/* stdcu: stdcu$pack $CPRdoublek,@($GRi,$GRj) */
b34f6357
DB
6009
6010static SEM_PC
6011SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6012{
6013#define FLD(f) abuf->fields.sfmt_stdcu.f
6014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6015 int UNUSED written = 0;
6016 IADDR UNUSED pc = abuf->addr;
6017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6018
6019{
6020 SI tmp_address;
6021{
6022 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6023frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6024}
6025 {
6026 SI opval = tmp_address;
6027 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6028 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6029 }
6030}
6031
6032 return vpc;
6033#undef FLD
6034}
6035
6036/* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6037
6038static SEM_PC
6039SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6040{
6041#define FLD(f) abuf->fields.sfmt_cstdu.f
6042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6043 int UNUSED written = 0;
6044 IADDR UNUSED pc = abuf->addr;
6045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6046
6047{
6048 SI tmp_address;
6049{
6050 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6051frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6052}
6053 {
6054 SI opval = tmp_address;
6055 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6056 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6057 }
6058}
6059
6060 return vpc;
6061#undef FLD
6062}
6063
6064/* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6065
6066static SEM_PC
6067SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6068{
6069#define FLD(f) abuf->fields.sfmt_cstdfu.f
6070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6071 int UNUSED written = 0;
6072 IADDR UNUSED pc = abuf->addr;
6073 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6074
6075{
6076 SI tmp_address;
6077{
6078 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6079frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6080}
6081 {
6082 SI opval = tmp_address;
6083 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6084 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6085 }
6086}
6087
6088 return vpc;
6089#undef FLD
6090}
6091
6092/* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6093
6094static SEM_PC
6095SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6096{
6097#define FLD(f) abuf->fields.sfmt_stdcu.f
6098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6099 int UNUSED written = 0;
6100 IADDR UNUSED pc = abuf->addr;
6101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6102
6103{
6104 SI tmp_address;
6105{
6106 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6107frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6108}
6109 {
6110 SI opval = tmp_address;
6111 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6112 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6113 }
6114}
6115
6116 return vpc;
6117#undef FLD
6118}
6119
6120/* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6121
6122static SEM_PC
6123SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6124{
6125#define FLD(f) abuf->fields.sfmt_cswap.f
6126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6127 int UNUSED written = 0;
6128 IADDR UNUSED pc = abuf->addr;
6129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6130
6131if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6132 {
6133 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6134 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6135 written |= (1 << 5);
6136 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6137 }
6138}
6139
6140 abuf->written = written;
6141 return vpc;
6142#undef FLD
6143}
6144
6145/* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6146
6147static SEM_PC
6148SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6149{
6150#define FLD(f) abuf->fields.sfmt_cswap.f
6151 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6152 int UNUSED written = 0;
6153 IADDR UNUSED pc = abuf->addr;
6154 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6155
6156if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6157 {
6158 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6159 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6160 written |= (1 << 5);
6161 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6162 }
6163}
6164
6165 abuf->written = written;
6166 return vpc;
6167#undef FLD
6168}
6169
6170/* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6171
6172static SEM_PC
6173SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6174{
6175#define FLD(f) abuf->fields.sfmt_cswap.f
6176 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6177 int UNUSED written = 0;
6178 IADDR UNUSED pc = abuf->addr;
6179 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6180
6181if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6182 {
6183 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6184 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6185 written |= (1 << 5);
6186 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6187 }
6188}
6189
6190 abuf->written = written;
6191 return vpc;
6192#undef FLD
6193}
6194
6195/* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6196
6197static SEM_PC
6198SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6199{
6200#define FLD(f) abuf->fields.sfmt_cswap.f
6201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6202 int UNUSED written = 0;
6203 IADDR UNUSED pc = abuf->addr;
6204 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6205
6206if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6207 {
6208 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6209 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6210 written |= (1 << 5);
6211 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6212 }
6213}
6214
6215 abuf->written = written;
6216 return vpc;
6217#undef FLD
6218}
6219
6220/* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6221
6222static SEM_PC
6223SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6224{
6225#define FLD(f) abuf->fields.sfmt_cswap.f
6226 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6227 int UNUSED written = 0;
6228 IADDR UNUSED pc = abuf->addr;
6229 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6230
6231if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6232 {
6233 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6234 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6235 written |= (1 << 5);
6236 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6237 }
6238}
6239
6240 abuf->written = written;
6241 return vpc;
6242#undef FLD
6243}
6244
6245/* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6246
6247static SEM_PC
6248SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6249{
6250#define FLD(f) abuf->fields.sfmt_cldbfu.f
6251 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6252 int UNUSED written = 0;
6253 IADDR UNUSED pc = abuf->addr;
6254 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6255
6256if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6257 {
6258 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6259 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6260 written |= (1 << 5);
6261 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6262 }
6263}
6264
6265 abuf->written = written;
6266 return vpc;
6267#undef FLD
6268}
6269
6270/* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6271
6272static SEM_PC
6273SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6274{
6275#define FLD(f) abuf->fields.sfmt_cldbfu.f
6276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6277 int UNUSED written = 0;
6278 IADDR UNUSED pc = abuf->addr;
6279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6280
6281if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6282 {
6283 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6284 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6285 written |= (1 << 5);
6286 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6287 }
6288}
6289
6290 abuf->written = written;
6291 return vpc;
6292#undef FLD
6293}
6294
6295/* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6296
6297static SEM_PC
6298SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6299{
6300#define FLD(f) abuf->fields.sfmt_cldbfu.f
6301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6302 int UNUSED written = 0;
6303 IADDR UNUSED pc = abuf->addr;
6304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6305
6306if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6307 {
6308 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6309 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6310 written |= (1 << 5);
6311 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6312 }
6313}
6314
6315 abuf->written = written;
6316 return vpc;
6317#undef FLD
6318}
6319
6320/* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6321
6322static SEM_PC
6323SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6324{
6325#define FLD(f) abuf->fields.sfmt_clddu.f
6326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6327 int UNUSED written = 0;
6328 IADDR UNUSED pc = abuf->addr;
6329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6330
6331if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6332{
6333 SI tmp_address;
6334if (NESI (FLD (f_GRk), 0)) {
6335{
6336 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6337 {
6338 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6339 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6340 written |= (1 << 6);
6341 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6342 }
6343}
6344}
6345}
6346}
6347
6348 abuf->written = written;
6349 return vpc;
6350#undef FLD
6351}
6352
6353/* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6354
6355static SEM_PC
6356SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6357{
6358#define FLD(f) abuf->fields.sfmt_clddfu.f
6359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6360 int UNUSED written = 0;
6361 IADDR UNUSED pc = abuf->addr;
6362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6363
6364if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6365{
6366 SI tmp_address;
6367{
6368 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6369 {
6370 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6371 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6372 written |= (1 << 5);
6373 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6374 }
6375}
6376}
6377}
6378
6379 abuf->written = written;
6380 return vpc;
6381#undef FLD
6382}
6383
6384/* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6385
6386static SEM_PC
6387SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6388{
6389#define FLD(f) abuf->fields.sfmt_cswap.f
6390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6391 int UNUSED written = 0;
6392 IADDR UNUSED pc = abuf->addr;
6393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6394
6395if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6396{
6397 SI tmp_address;
6398{
6399 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6400frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6401}
6402}
6403}
6404
6405 return vpc;
6406#undef FLD
6407}
6408
6409/* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6410
6411static SEM_PC
6412SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6413{
6414#define FLD(f) abuf->fields.sfmt_cldsbu.f
6415 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6416 int UNUSED written = 0;
6417 IADDR UNUSED pc = abuf->addr;
6418 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6419
6420if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6421{
6422 SI tmp_address;
6423 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6424 {
6425 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6426 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6427 written |= (1 << 8);
6428 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6429 }
6430if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6431 {
6432 SI opval = tmp_address;
6433 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6434 written |= (1 << 7);
6435 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6436 }
6437}
6438}
6439}
6440
6441 abuf->written = written;
6442 return vpc;
6443#undef FLD
6444}
6445
6446/* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6447
6448static SEM_PC
6449SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6450{
6451#define FLD(f) abuf->fields.sfmt_cldsbu.f
6452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6453 int UNUSED written = 0;
6454 IADDR UNUSED pc = abuf->addr;
6455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6456
6457if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6458{
6459 SI tmp_address;
6460 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6461 {
6462 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6463 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6464 written |= (1 << 8);
6465 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6466 }
6467if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6468 {
6469 SI opval = tmp_address;
6470 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6471 written |= (1 << 7);
6472 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6473 }
6474}
6475}
6476}
6477
6478 abuf->written = written;
6479 return vpc;
6480#undef FLD
6481}
6482
6483/* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6484
6485static SEM_PC
6486SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6487{
6488#define FLD(f) abuf->fields.sfmt_cldsbu.f
6489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6490 int UNUSED written = 0;
6491 IADDR UNUSED pc = abuf->addr;
6492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6493
6494if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6495{
6496 SI tmp_address;
6497 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6498 {
6499 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6500 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6501 written |= (1 << 8);
6502 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6503 }
6504if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6505 {
6506 SI opval = tmp_address;
6507 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6508 written |= (1 << 7);
6509 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6510 }
6511}
6512}
6513}
6514
6515 abuf->written = written;
6516 return vpc;
6517#undef FLD
6518}
6519
6520/* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6521
6522static SEM_PC
6523SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6524{
6525#define FLD(f) abuf->fields.sfmt_cldsbu.f
6526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6527 int UNUSED written = 0;
6528 IADDR UNUSED pc = abuf->addr;
6529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6530
6531if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6532{
6533 SI tmp_address;
6534 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6535 {
6536 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6537 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6538 written |= (1 << 8);
6539 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6540 }
6541if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6542 {
6543 SI opval = tmp_address;
6544 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6545 written |= (1 << 7);
6546 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6547 }
6548}
6549}
6550}
6551
6552 abuf->written = written;
6553 return vpc;
6554#undef FLD
6555}
6556
6557/* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6558
6559static SEM_PC
6560SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6561{
6562#define FLD(f) abuf->fields.sfmt_cldsbu.f
6563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6564 int UNUSED written = 0;
6565 IADDR UNUSED pc = abuf->addr;
6566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6567
6568if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6569{
6570 SI tmp_address;
6571 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6572 {
6573 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6574 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6575 written |= (1 << 8);
6576 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6577 }
6578if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6579 {
6580 SI opval = tmp_address;
6581 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6582 written |= (1 << 7);
6583 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6584 }
6585}
6586}
6587}
6588
6589 abuf->written = written;
6590 return vpc;
6591#undef FLD
6592}
6593
6594/* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6595
6596static SEM_PC
6597SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6598{
6599#define FLD(f) abuf->fields.sfmt_cldbfu.f
6600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6601 int UNUSED written = 0;
6602 IADDR UNUSED pc = abuf->addr;
6603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6604
6605if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6606{
6607 SI tmp_address;
6608 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6609 {
6610 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6611 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6612 written |= (1 << 5);
6613 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6614 }
6615 {
6616 SI opval = tmp_address;
6617 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6618 written |= (1 << 6);
6619 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6620 }
6621}
6622}
6623
6624 abuf->written = written;
6625 return vpc;
6626#undef FLD
6627}
6628
6629/* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6630
6631static SEM_PC
6632SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6633{
6634#define FLD(f) abuf->fields.sfmt_cldbfu.f
6635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6636 int UNUSED written = 0;
6637 IADDR UNUSED pc = abuf->addr;
6638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6639
6640if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6641{
6642 SI tmp_address;
6643 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6644 {
6645 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6646 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6647 written |= (1 << 5);
6648 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6649 }
6650 {
6651 SI opval = tmp_address;
6652 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6653 written |= (1 << 6);
6654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6655 }
6656}
6657}
6658
6659 abuf->written = written;
6660 return vpc;
6661#undef FLD
6662}
6663
6664/* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6665
6666static SEM_PC
6667SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6668{
6669#define FLD(f) abuf->fields.sfmt_cldbfu.f
6670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6671 int UNUSED written = 0;
6672 IADDR UNUSED pc = abuf->addr;
6673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6674
6675if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6676{
6677 SI tmp_address;
6678 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6679 {
6680 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6681 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6682 written |= (1 << 5);
6683 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6684 }
6685 {
6686 SI opval = tmp_address;
6687 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6688 written |= (1 << 6);
6689 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6690 }
6691}
6692}
6693
6694 abuf->written = written;
6695 return vpc;
6696#undef FLD
6697}
6698
6699/* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6700
6701static SEM_PC
6702SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6703{
6704#define FLD(f) abuf->fields.sfmt_clddu.f
6705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6706 int UNUSED written = 0;
6707 IADDR UNUSED pc = abuf->addr;
6708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6709
6710if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6711{
6712 SI tmp_address;
6713if (NESI (FLD (f_GRk), 0)) {
6714{
6715 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6716 {
6717 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6718 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6719 written |= (1 << 7);
6720 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6721 }
6722}
6723}
6724if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6725 {
6726 SI opval = tmp_address;
6727 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6728 written |= (1 << 8);
6729 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6730 }
6731}
6732}
6733}
6734
6735 abuf->written = written;
6736 return vpc;
6737#undef FLD
6738}
6739
6740/* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6741
6742static SEM_PC
6743SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6744{
6745#define FLD(f) abuf->fields.sfmt_clddfu.f
6746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6747 int UNUSED written = 0;
6748 IADDR UNUSED pc = abuf->addr;
6749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6750
6751if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6752{
6753 SI tmp_address;
6754{
6755 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6756 {
6757 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6758 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6759 written |= (1 << 5);
6760 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6761 }
6762}
6763 {
6764 SI opval = tmp_address;
6765 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6766 written |= (1 << 6);
6767 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6768 }
6769}
6770}
6771
6772 abuf->written = written;
6773 return vpc;
6774#undef FLD
6775}
6776
6777/* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6778
6779static SEM_PC
6780SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6781{
6782#define FLD(f) abuf->fields.sfmt_cstdu.f
6783 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6784 int UNUSED written = 0;
6785 IADDR UNUSED pc = abuf->addr;
6786 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6787
6788if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6789{
6790 SI tmp_address;
6791{
6792 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6793frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6794}
6795if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6796 {
6797 SI opval = tmp_address;
6798 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6799 written |= (1 << 7);
6800 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6801 }
6802}
6803}
6804}
6805
6806 abuf->written = written;
6807 return vpc;
6808#undef FLD
6809}
6810
6811/* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6812
6813static SEM_PC
6814SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6815{
6816#define FLD(f) abuf->fields.sfmt_cswap.f
6817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6818 int UNUSED written = 0;
6819 IADDR UNUSED pc = abuf->addr;
6820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6821
6822if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6823frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
6824}
6825
6826 return vpc;
6827#undef FLD
6828}
6829
6830/* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6831
6832static SEM_PC
6833SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6834{
6835#define FLD(f) abuf->fields.sfmt_cswap.f
6836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6837 int UNUSED written = 0;
6838 IADDR UNUSED pc = abuf->addr;
6839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6840
6841if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6842frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
6843}
6844
6845 return vpc;
6846#undef FLD
6847}
6848
6849/* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6850
6851static SEM_PC
6852SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6853{
6854#define FLD(f) abuf->fields.sfmt_cswap.f
6855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6856 int UNUSED written = 0;
6857 IADDR UNUSED pc = abuf->addr;
6858 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6859
6860if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6861frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
6862}
6863
6864 return vpc;
6865#undef FLD
6866}
6867
6868/* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6869
6870static SEM_PC
6871SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6872{
6873#define FLD(f) abuf->fields.sfmt_cstbfu.f
6874 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6875 int UNUSED written = 0;
6876 IADDR UNUSED pc = abuf->addr;
6877 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6878
6879if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6880frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
6881}
6882
6883 return vpc;
6884#undef FLD
6885}
6886
6887/* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6888
6889static SEM_PC
6890SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6891{
6892#define FLD(f) abuf->fields.sfmt_cstbfu.f
6893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6894 int UNUSED written = 0;
6895 IADDR UNUSED pc = abuf->addr;
6896 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6897
6898if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6899frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
6900}
6901
6902 return vpc;
6903#undef FLD
6904}
6905
6906/* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6907
6908static SEM_PC
6909SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6910{
6911#define FLD(f) abuf->fields.sfmt_cstbfu.f
6912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6913 int UNUSED written = 0;
6914 IADDR UNUSED pc = abuf->addr;
6915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6916
6917if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6918frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
6919}
6920
6921 return vpc;
6922#undef FLD
6923}
6924
29a79ca0 6925/* cstd: cstd$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
6926
6927static SEM_PC
6928SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6929{
6930#define FLD(f) abuf->fields.sfmt_cstdu.f
6931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6932 int UNUSED written = 0;
6933 IADDR UNUSED pc = abuf->addr;
6934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6935
6936if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6937{
6938 SI tmp_address;
6939{
6940 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6941frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6942}
6943}
6944}
6945
6946 return vpc;
6947#undef FLD
6948}
6949
29a79ca0 6950/* cstdf: cstdf$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
6951
6952static SEM_PC
6953SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6954{
6955#define FLD(f) abuf->fields.sfmt_cstdfu.f
6956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6957 int UNUSED written = 0;
6958 IADDR UNUSED pc = abuf->addr;
6959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6960
6961if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6962{
6963 SI tmp_address;
6964{
6965 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6966frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6967}
6968}
6969}
6970
6971 return vpc;
6972#undef FLD
6973}
6974
6975/* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6976
6977static SEM_PC
6978SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6979{
6980#define FLD(f) abuf->fields.sfmt_cswap.f
6981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6982 int UNUSED written = 0;
6983 IADDR UNUSED pc = abuf->addr;
6984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6985
6986if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6987{
6988 SI tmp_address;
6989{
6990 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6991frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6992}
6993}
6994}
6995
6996 return vpc;
6997#undef FLD
6998}
6999
7000/* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7001
7002static SEM_PC
7003SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7004{
7005#define FLD(f) abuf->fields.sfmt_cstbu.f
7006 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7007 int UNUSED written = 0;
7008 IADDR UNUSED pc = abuf->addr;
7009 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7010
7011if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7012{
7013 SI tmp_address;
7014 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7015frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7016 {
7017 SI opval = tmp_address;
7018 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7019 written |= (1 << 6);
7020 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7021 }
7022}
7023}
7024
7025 abuf->written = written;
7026 return vpc;
7027#undef FLD
7028}
7029
7030/* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7031
7032static SEM_PC
7033SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7034{
7035#define FLD(f) abuf->fields.sfmt_cstbu.f
7036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7037 int UNUSED written = 0;
7038 IADDR UNUSED pc = abuf->addr;
7039 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7040
7041if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7042{
7043 SI tmp_address;
7044 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7045frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7046 {
7047 SI opval = tmp_address;
7048 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7049 written |= (1 << 6);
7050 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7051 }
7052}
7053}
7054
7055 abuf->written = written;
7056 return vpc;
7057#undef FLD
7058}
7059
7060/* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7061
7062static SEM_PC
7063SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7064{
7065#define FLD(f) abuf->fields.sfmt_cstbu.f
7066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7067 int UNUSED written = 0;
7068 IADDR UNUSED pc = abuf->addr;
7069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7070
7071if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7072{
7073 SI tmp_address;
7074 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7075frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7076 {
7077 SI opval = tmp_address;
7078 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7079 written |= (1 << 6);
7080 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7081 }
7082}
7083}
7084
7085 abuf->written = written;
7086 return vpc;
7087#undef FLD
7088}
7089
7090/* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7091
7092static SEM_PC
7093SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7094{
7095#define FLD(f) abuf->fields.sfmt_cstbfu.f
7096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7097 int UNUSED written = 0;
7098 IADDR UNUSED pc = abuf->addr;
7099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7100
7101if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7102{
7103 SI tmp_address;
7104 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7105frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7106 {
7107 SI opval = tmp_address;
7108 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7109 written |= (1 << 6);
7110 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7111 }
7112}
7113}
7114
7115 abuf->written = written;
7116 return vpc;
7117#undef FLD
7118}
7119
7120/* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7121
7122static SEM_PC
7123SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7124{
7125#define FLD(f) abuf->fields.sfmt_cstbfu.f
7126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7127 int UNUSED written = 0;
7128 IADDR UNUSED pc = abuf->addr;
7129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7130
7131if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7132{
7133 SI tmp_address;
7134 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7135frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7136 {
7137 SI opval = tmp_address;
7138 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7139 written |= (1 << 6);
7140 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7141 }
7142}
7143}
7144
7145 abuf->written = written;
7146 return vpc;
7147#undef FLD
7148}
7149
7150/* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7151
7152static SEM_PC
7153SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7154{
7155#define FLD(f) abuf->fields.sfmt_cstbfu.f
7156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7157 int UNUSED written = 0;
7158 IADDR UNUSED pc = abuf->addr;
7159 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7160
7161if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7162{
7163 SI tmp_address;
7164 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7165frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7166 {
7167 SI opval = tmp_address;
7168 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7169 written |= (1 << 6);
7170 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7171 }
7172}
7173}
7174
7175 abuf->written = written;
7176 return vpc;
7177#undef FLD
7178}
7179
29a79ca0 7180/* cstdu: cstdu$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
7181
7182static SEM_PC
7183SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7184{
7185#define FLD(f) abuf->fields.sfmt_cstdu.f
7186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7187 int UNUSED written = 0;
7188 IADDR UNUSED pc = abuf->addr;
7189 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7190
7191if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7192{
7193 SI tmp_address;
7194{
7195 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7196frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7197}
7198 {
7199 SI opval = tmp_address;
7200 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7201 written |= (1 << 6);
7202 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7203 }
7204}
7205}
7206
7207 abuf->written = written;
7208 return vpc;
7209#undef FLD
7210}
7211
29a79ca0 7212/* cstdfu: cstdfu$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
7213
7214static SEM_PC
7215SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7216{
7217#define FLD(f) abuf->fields.sfmt_cstdfu.f
7218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7219 int UNUSED written = 0;
7220 IADDR UNUSED pc = abuf->addr;
7221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7222
7223if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7224{
7225 SI tmp_address;
7226{
7227 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7228frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7229}
7230 {
7231 SI opval = tmp_address;
7232 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7233 written |= (1 << 6);
7234 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7235 }
7236}
7237}
7238
7239 abuf->written = written;
7240 return vpc;
7241#undef FLD
7242}
7243
7244/* stbi: stbi$pack $GRk,@($GRi,$d12) */
7245
7246static SEM_PC
7247SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7248{
7249#define FLD(f) abuf->fields.sfmt_swapi.f
7250 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7251 int UNUSED written = 0;
7252 IADDR UNUSED pc = abuf->addr;
7253 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7254
7255frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7256
7257 return vpc;
7258#undef FLD
7259}
7260
7261/* sthi: sthi$pack $GRk,@($GRi,$d12) */
7262
7263static SEM_PC
7264SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7265{
7266#define FLD(f) abuf->fields.sfmt_swapi.f
7267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7268 int UNUSED written = 0;
7269 IADDR UNUSED pc = abuf->addr;
7270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7271
7272frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7273
7274 return vpc;
7275#undef FLD
7276}
7277
7278/* sti: sti$pack $GRk,@($GRi,$d12) */
7279
7280static SEM_PC
7281SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7282{
7283#define FLD(f) abuf->fields.sfmt_swapi.f
7284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7285 int UNUSED written = 0;
7286 IADDR UNUSED pc = abuf->addr;
7287 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7288
7289frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7290
7291 return vpc;
7292#undef FLD
7293}
7294
7295/* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7296
7297static SEM_PC
7298SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7299{
7300#define FLD(f) abuf->fields.sfmt_stbfi.f
7301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7302 int UNUSED written = 0;
7303 IADDR UNUSED pc = abuf->addr;
7304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7305
7306frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7307
7308 return vpc;
7309#undef FLD
7310}
7311
7312/* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7313
7314static SEM_PC
7315SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7316{
7317#define FLD(f) abuf->fields.sfmt_stbfi.f
7318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7319 int UNUSED written = 0;
7320 IADDR UNUSED pc = abuf->addr;
7321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7322
7323frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7324
7325 return vpc;
7326#undef FLD
7327}
7328
7329/* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7330
7331static SEM_PC
7332SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7333{
7334#define FLD(f) abuf->fields.sfmt_stbfi.f
7335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7336 int UNUSED written = 0;
7337 IADDR UNUSED pc = abuf->addr;
7338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7339
7340frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7341
7342 return vpc;
7343#undef FLD
7344}
7345
29a79ca0 7346/* stdi: stdi$pack $GRdoublek,@($GRi,$d12) */
b34f6357
DB
7347
7348static SEM_PC
7349SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7350{
7351#define FLD(f) abuf->fields.sfmt_stdi.f
7352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7353 int UNUSED written = 0;
7354 IADDR UNUSED pc = abuf->addr;
7355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7356
7357{
7358 SI tmp_address;
7359{
7360 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7361frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7362}
7363}
7364
7365 return vpc;
7366#undef FLD
7367}
7368
29a79ca0 7369/* stdfi: stdfi$pack $FRdoublek,@($GRi,$d12) */
b34f6357
DB
7370
7371static SEM_PC
7372SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7373{
7374#define FLD(f) abuf->fields.sfmt_stdfi.f
7375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7376 int UNUSED written = 0;
7377 IADDR UNUSED pc = abuf->addr;
7378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7379
7380{
7381 SI tmp_address;
7382{
7383 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7384frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7385}
7386}
7387
7388 return vpc;
7389#undef FLD
7390}
7391
7392/* stqi: stqi$pack $GRk,@($GRi,$d12) */
7393
7394static SEM_PC
7395SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7396{
7397#define FLD(f) abuf->fields.sfmt_stdi.f
7398 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7399 int UNUSED written = 0;
7400 IADDR UNUSED pc = abuf->addr;
7401 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7402
7403{
7404 SI tmp_address;
7405{
7406 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7407frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7408}
7409}
7410
7411 return vpc;
7412#undef FLD
7413}
7414
7415/* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7416
7417static SEM_PC
7418SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7419{
7420#define FLD(f) abuf->fields.sfmt_stdfi.f
7421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7422 int UNUSED written = 0;
7423 IADDR UNUSED pc = abuf->addr;
7424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7425
7426{
7427 SI tmp_address;
7428{
7429 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7430frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7431}
7432}
7433
7434 return vpc;
7435#undef FLD
7436}
7437
7438/* swap: swap$pack @($GRi,$GRj),$GRk */
7439
7440static SEM_PC
7441SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7442{
7443#define FLD(f) abuf->fields.sfmt_cswap.f
7444 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7445 int UNUSED written = 0;
7446 IADDR UNUSED pc = abuf->addr;
7447 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7448
7449{
7450 SI tmp_tmp;
7451 SI tmp_address;
7452 tmp_tmp = GET_H_GR (FLD (f_GRk));
7453 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
e930b1f5 7454frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7455 {
7456 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7457 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7458 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7459 }
7460frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7461}
7462
7463 return vpc;
7464#undef FLD
7465}
7466
7467/* swapi: swapi$pack @($GRi,$d12),$GRk */
7468
7469static SEM_PC
7470SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7471{
7472#define FLD(f) abuf->fields.sfmt_swapi.f
7473 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7474 int UNUSED written = 0;
7475 IADDR UNUSED pc = abuf->addr;
7476 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7477
7478{
7479 SI tmp_tmp;
7480 SI tmp_address;
7481 tmp_tmp = GET_H_GR (FLD (f_GRk));
7482 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
e930b1f5 7483frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7484 {
7485 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7486 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7488 }
7489frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7490}
7491
7492 return vpc;
7493#undef FLD
7494}
7495
7496/* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7497
7498static SEM_PC
7499SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7500{
7501#define FLD(f) abuf->fields.sfmt_cswap.f
7502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7503 int UNUSED written = 0;
7504 IADDR UNUSED pc = abuf->addr;
7505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7506
7507if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7508{
7509 SI tmp_tmp;
7510 SI tmp_address;
7511 tmp_tmp = GET_H_GR (FLD (f_GRk));
7512 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
e930b1f5 7513frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7514 {
7515 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7516 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7517 written |= (1 << 6);
7518 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7519 }
7520frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7521}
7522}
7523
7524 abuf->written = written;
7525 return vpc;
7526#undef FLD
7527}
7528
7529/* movgf: movgf$pack $GRj,$FRintk */
7530
7531static SEM_PC
7532SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7533{
7534#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7536 int UNUSED written = 0;
7537 IADDR UNUSED pc = abuf->addr;
7538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7539
7540 {
7541 SI opval = GET_H_GR (FLD (f_GRj));
7542 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7543 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7544 }
7545
7546 return vpc;
7547#undef FLD
7548}
7549
7550/* movfg: movfg$pack $FRintk,$GRj */
7551
7552static SEM_PC
7553SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7554{
7555#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7557 int UNUSED written = 0;
7558 IADDR UNUSED pc = abuf->addr;
7559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7560
7561 {
7562 SI opval = GET_H_FR_INT (FLD (f_FRk));
7563 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7564 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7565 }
7566
7567 return vpc;
7568#undef FLD
7569}
7570
7571/* movgfd: movgfd$pack $GRj,$FRintk */
7572
7573static SEM_PC
7574SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7575{
7576#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7577 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7578 int UNUSED written = 0;
7579 IADDR UNUSED pc = abuf->addr;
7580 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7581
7582if (EQSI (FLD (f_GRj), 0)) {
7583{
7584 {
7585 SI opval = 0;
7586 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7587 written |= (1 << 4);
7588 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7589 }
7590 {
7591 USI opval = 0;
7592 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7593 written |= (1 << 5);
7594 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7595 }
7596}
7597} else {
7598{
7599 {
7600 SI opval = GET_H_GR (FLD (f_GRj));
7601 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7602 written |= (1 << 4);
7603 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7604 }
7605 {
7606 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7607 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7608 written |= (1 << 5);
7609 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7610 }
7611}
7612}
7613
7614 abuf->written = written;
7615 return vpc;
7616#undef FLD
7617}
7618
7619/* movfgd: movfgd$pack $FRintk,$GRj */
7620
7621static SEM_PC
7622SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7623{
7624#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7626 int UNUSED written = 0;
7627 IADDR UNUSED pc = abuf->addr;
7628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7629
7630if (NESI (FLD (f_GRj), 0)) {
7631{
7632 {
7633 SI opval = GET_H_FR_INT (FLD (f_FRk));
7634 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7635 written |= (1 << 4);
7636 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7637 }
7638 {
7639 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7640 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7641 written |= (1 << 5);
7642 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7643 }
7644}
7645}
7646
7647 abuf->written = written;
7648 return vpc;
7649#undef FLD
7650}
7651
7652/* movgfq: movgfq$pack $GRj,$FRintk */
7653
7654static SEM_PC
7655SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7656{
7657#define FLD(f) abuf->fields.sfmt_movgfq.f
7658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7659 int UNUSED written = 0;
7660 IADDR UNUSED pc = abuf->addr;
7661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7662
7663if (EQSI (FLD (f_GRj), 0)) {
7664{
7665 {
7666 SI opval = 0;
7667 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7668 written |= (1 << 6);
7669 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7670 }
7671 {
7672 USI opval = 0;
7673 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7674 written |= (1 << 7);
7675 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7676 }
7677 {
7678 USI opval = 0;
7679 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7680 written |= (1 << 8);
7681 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7682 }
7683 {
7684 USI opval = 0;
7685 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7686 written |= (1 << 9);
7687 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7688 }
7689}
7690} else {
7691{
7692 {
7693 SI opval = GET_H_GR (FLD (f_GRj));
7694 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7695 written |= (1 << 6);
7696 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7697 }
7698 {
7699 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7700 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7701 written |= (1 << 7);
7702 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7703 }
7704 {
7705 USI opval = GET_H_GR (((FLD (f_GRj)) + (2)));
7706 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7707 written |= (1 << 8);
7708 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7709 }
7710 {
7711 USI opval = GET_H_GR (((FLD (f_GRj)) + (3)));
7712 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7713 written |= (1 << 9);
7714 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7715 }
7716}
7717}
7718
7719 abuf->written = written;
7720 return vpc;
7721#undef FLD
7722}
7723
7724/* movfgq: movfgq$pack $FRintk,$GRj */
7725
7726static SEM_PC
7727SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7728{
7729#define FLD(f) abuf->fields.sfmt_movfgq.f
7730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7731 int UNUSED written = 0;
7732 IADDR UNUSED pc = abuf->addr;
7733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7734
7735if (NESI (FLD (f_GRj), 0)) {
7736{
7737 {
7738 SI opval = GET_H_FR_INT (FLD (f_FRk));
7739 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7740 written |= (1 << 6);
7741 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7742 }
7743 {
7744 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7745 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7746 written |= (1 << 7);
7747 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7748 }
7749 {
7750 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (2)));
7751 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (2)), opval);
7752 written |= (1 << 8);
7753 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7754 }
7755 {
7756 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (3)));
7757 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (3)), opval);
7758 written |= (1 << 9);
7759 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7760 }
7761}
7762}
7763
7764 abuf->written = written;
7765 return vpc;
7766#undef FLD
7767}
7768
7769/* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7770
7771static SEM_PC
7772SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7773{
7774#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7776 int UNUSED written = 0;
7777 IADDR UNUSED pc = abuf->addr;
7778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7779
7780if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7781 {
7782 SI opval = GET_H_GR (FLD (f_GRj));
7783 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7784 written |= (1 << 3);
7785 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7786 }
7787}
7788
7789 abuf->written = written;
7790 return vpc;
7791#undef FLD
7792}
7793
7794/* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7795
7796static SEM_PC
7797SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7798{
7799#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7800 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7801 int UNUSED written = 0;
7802 IADDR UNUSED pc = abuf->addr;
7803 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7804
7805if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7806 {
7807 SI opval = GET_H_FR_INT (FLD (f_FRk));
7808 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7809 written |= (1 << 3);
7810 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7811 }
7812}
7813
7814 abuf->written = written;
7815 return vpc;
7816#undef FLD
7817}
7818
7819/* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7820
7821static SEM_PC
7822SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7823{
7824#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7826 int UNUSED written = 0;
7827 IADDR UNUSED pc = abuf->addr;
7828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7829
7830if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7831if (EQSI (FLD (f_GRj), 0)) {
7832{
7833 {
7834 SI opval = 0;
7835 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7836 written |= (1 << 6);
7837 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7838 }
7839 {
7840 USI opval = 0;
7841 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7842 written |= (1 << 7);
7843 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7844 }
7845}
7846} else {
7847{
7848 {
7849 SI opval = GET_H_GR (FLD (f_GRj));
7850 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7851 written |= (1 << 6);
7852 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7853 }
7854 {
7855 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7856 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7857 written |= (1 << 7);
7858 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7859 }
7860}
7861}
7862}
7863
7864 abuf->written = written;
7865 return vpc;
7866#undef FLD
7867}
7868
7869/* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7870
7871static SEM_PC
7872SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7873{
7874#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7876 int UNUSED written = 0;
7877 IADDR UNUSED pc = abuf->addr;
7878 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7879
7880if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7881{
7882 {
7883 SI opval = GET_H_FR_INT (FLD (f_FRk));
7884 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7885 written |= (1 << 6);
7886 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7887 }
7888 {
7889 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7890 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7891 written |= (1 << 7);
7892 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7893 }
7894}
7895}
7896
7897 abuf->written = written;
7898 return vpc;
7899#undef FLD
7900}
7901
7902/* movgs: movgs$pack $GRj,$spr */
7903
7904static SEM_PC
7905SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7906{
7907#define FLD(f) abuf->fields.sfmt_movgs.f
7908 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7909 int UNUSED written = 0;
7910 IADDR UNUSED pc = abuf->addr;
7911 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7912
7913 {
7914 USI opval = GET_H_GR (FLD (f_GRj));
7915 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
7916 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
7917 }
7918
7919 return vpc;
7920#undef FLD
7921}
7922
7923/* movsg: movsg$pack $spr,$GRj */
7924
7925static SEM_PC
7926SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7927{
7928#define FLD(f) abuf->fields.sfmt_movsg.f
7929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7930 int UNUSED written = 0;
7931 IADDR UNUSED pc = abuf->addr;
7932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7933
7934 {
7935 SI opval = GET_H_SPR (FLD (f_spr));
7936 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7937 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7938 }
7939
7940 return vpc;
7941#undef FLD
7942}
7943
7944/* bra: bra$pack $hint_taken$label16 */
7945
7946static SEM_PC
7947SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7948{
7949#define FLD(f) abuf->fields.sfmt_fbne.f
7950 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7951 int UNUSED written = 0;
7952 IADDR UNUSED pc = abuf->addr;
7953 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7954
7955{
7956frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7957 {
7958 USI opval = FLD (i_label16);
7959 sim_queue_pc_write (current_cpu, opval);
7960 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7961 }
7962}
7963
7964 return vpc;
7965#undef FLD
7966}
7967
7968/* bno: bno$pack$hint_not_taken */
7969
7970static SEM_PC
7971SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7972{
7973#define FLD(f) abuf->fields.sfmt_fbne.f
7974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7975 int UNUSED written = 0;
7976 IADDR UNUSED pc = abuf->addr;
7977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7978
7979frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7980
7981 return vpc;
7982#undef FLD
7983}
7984
7985/* beq: beq$pack $ICCi_2,$hint,$label16 */
7986
7987static SEM_PC
7988SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7989{
7990#define FLD(f) abuf->fields.sfmt_beq.f
7991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7992 int UNUSED written = 0;
7993 IADDR UNUSED pc = abuf->addr;
7994 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7995
7996{
7997frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7998if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
7999 {
8000 USI opval = FLD (i_label16);
8001 sim_queue_pc_write (current_cpu, opval);
8002 written |= (1 << 3);
8003 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8004 }
8005}
8006}
8007
8008 abuf->written = written;
8009 return vpc;
8010#undef FLD
8011}
8012
8013/* bne: bne$pack $ICCi_2,$hint,$label16 */
8014
8015static SEM_PC
8016SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8017{
8018#define FLD(f) abuf->fields.sfmt_beq.f
8019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8020 int UNUSED written = 0;
8021 IADDR UNUSED pc = abuf->addr;
8022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8023
8024{
8025frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8026if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8027 {
8028 USI opval = FLD (i_label16);
8029 sim_queue_pc_write (current_cpu, opval);
8030 written |= (1 << 3);
8031 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8032 }
8033}
8034}
8035
8036 abuf->written = written;
8037 return vpc;
8038#undef FLD
8039}
8040
8041/* ble: ble$pack $ICCi_2,$hint,$label16 */
8042
8043static SEM_PC
8044SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8045{
8046#define FLD(f) abuf->fields.sfmt_beq.f
8047 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8048 int UNUSED written = 0;
8049 IADDR UNUSED pc = abuf->addr;
8050 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8051
8052{
8053frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8054if (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))))) {
8055 {
8056 USI opval = FLD (i_label16);
8057 sim_queue_pc_write (current_cpu, opval);
8058 written |= (1 << 3);
8059 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8060 }
8061}
8062}
8063
8064 abuf->written = written;
8065 return vpc;
8066#undef FLD
8067}
8068
8069/* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8070
8071static SEM_PC
8072SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8073{
8074#define FLD(f) abuf->fields.sfmt_beq.f
8075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8076 int UNUSED written = 0;
8077 IADDR UNUSED pc = abuf->addr;
8078 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8079
8080{
8081frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8082if (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)))))) {
8083 {
8084 USI opval = FLD (i_label16);
8085 sim_queue_pc_write (current_cpu, opval);
8086 written |= (1 << 3);
8087 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8088 }
8089}
8090}
8091
8092 abuf->written = written;
8093 return vpc;
8094#undef FLD
8095}
8096
8097/* blt: blt$pack $ICCi_2,$hint,$label16 */
8098
8099static SEM_PC
8100SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8101{
8102#define FLD(f) abuf->fields.sfmt_beq.f
8103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8104 int UNUSED written = 0;
8105 IADDR UNUSED pc = abuf->addr;
8106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8107
8108{
8109frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8110if (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)))) {
8111 {
8112 USI opval = FLD (i_label16);
8113 sim_queue_pc_write (current_cpu, opval);
8114 written |= (1 << 3);
8115 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8116 }
8117}
8118}
8119
8120 abuf->written = written;
8121 return vpc;
8122#undef FLD
8123}
8124
8125/* bge: bge$pack $ICCi_2,$hint,$label16 */
8126
8127static SEM_PC
8128SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8129{
8130#define FLD(f) abuf->fields.sfmt_beq.f
8131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8132 int UNUSED written = 0;
8133 IADDR UNUSED pc = abuf->addr;
8134 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8135
8136{
8137frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8138if (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))))) {
8139 {
8140 USI opval = FLD (i_label16);
8141 sim_queue_pc_write (current_cpu, opval);
8142 written |= (1 << 3);
8143 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8144 }
8145}
8146}
8147
8148 abuf->written = written;
8149 return vpc;
8150#undef FLD
8151}
8152
8153/* bls: bls$pack $ICCi_2,$hint,$label16 */
8154
8155static SEM_PC
8156SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8157{
8158#define FLD(f) abuf->fields.sfmt_beq.f
8159 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8160 int UNUSED written = 0;
8161 IADDR UNUSED pc = abuf->addr;
8162 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8163
8164{
8165frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8166if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8167 {
8168 USI opval = FLD (i_label16);
8169 sim_queue_pc_write (current_cpu, opval);
8170 written |= (1 << 3);
8171 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8172 }
8173}
8174}
8175
8176 abuf->written = written;
8177 return vpc;
8178#undef FLD
8179}
8180
8181/* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8182
8183static SEM_PC
8184SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8185{
8186#define FLD(f) abuf->fields.sfmt_beq.f
8187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8188 int UNUSED written = 0;
8189 IADDR UNUSED pc = abuf->addr;
8190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8191
8192{
8193frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8194if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
8195 {
8196 USI opval = FLD (i_label16);
8197 sim_queue_pc_write (current_cpu, opval);
8198 written |= (1 << 3);
8199 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8200 }
8201}
8202}
8203
8204 abuf->written = written;
8205 return vpc;
8206#undef FLD
8207}
8208
8209/* bc: bc$pack $ICCi_2,$hint,$label16 */
8210
8211static SEM_PC
8212SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8213{
8214#define FLD(f) abuf->fields.sfmt_beq.f
8215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8216 int UNUSED written = 0;
8217 IADDR UNUSED pc = abuf->addr;
8218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8219
8220{
8221frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8222if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8223 {
8224 USI opval = FLD (i_label16);
8225 sim_queue_pc_write (current_cpu, opval);
8226 written |= (1 << 3);
8227 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8228 }
8229}
8230}
8231
8232 abuf->written = written;
8233 return vpc;
8234#undef FLD
8235}
8236
8237/* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8238
8239static SEM_PC
8240SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8241{
8242#define FLD(f) abuf->fields.sfmt_beq.f
8243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8244 int UNUSED written = 0;
8245 IADDR UNUSED pc = abuf->addr;
8246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8247
8248{
8249frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8250if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8251 {
8252 USI opval = FLD (i_label16);
8253 sim_queue_pc_write (current_cpu, opval);
8254 written |= (1 << 3);
8255 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8256 }
8257}
8258}
8259
8260 abuf->written = written;
8261 return vpc;
8262#undef FLD
8263}
8264
8265/* bn: bn$pack $ICCi_2,$hint,$label16 */
8266
8267static SEM_PC
8268SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8269{
8270#define FLD(f) abuf->fields.sfmt_beq.f
8271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8272 int UNUSED written = 0;
8273 IADDR UNUSED pc = abuf->addr;
8274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8275
8276{
8277frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8278if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8279 {
8280 USI opval = FLD (i_label16);
8281 sim_queue_pc_write (current_cpu, opval);
8282 written |= (1 << 3);
8283 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8284 }
8285}
8286}
8287
8288 abuf->written = written;
8289 return vpc;
8290#undef FLD
8291}
8292
8293/* bp: bp$pack $ICCi_2,$hint,$label16 */
8294
8295static SEM_PC
8296SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8297{
8298#define FLD(f) abuf->fields.sfmt_beq.f
8299 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8300 int UNUSED written = 0;
8301 IADDR UNUSED pc = abuf->addr;
8302 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8303
8304{
8305frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8306if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8307 {
8308 USI opval = FLD (i_label16);
8309 sim_queue_pc_write (current_cpu, opval);
8310 written |= (1 << 3);
8311 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8312 }
8313}
8314}
8315
8316 abuf->written = written;
8317 return vpc;
8318#undef FLD
8319}
8320
8321/* bv: bv$pack $ICCi_2,$hint,$label16 */
8322
8323static SEM_PC
8324SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8325{
8326#define FLD(f) abuf->fields.sfmt_beq.f
8327 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8328 int UNUSED written = 0;
8329 IADDR UNUSED pc = abuf->addr;
8330 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8331
8332{
8333frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8334if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8335 {
8336 USI opval = FLD (i_label16);
8337 sim_queue_pc_write (current_cpu, opval);
8338 written |= (1 << 3);
8339 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8340 }
8341}
8342}
8343
8344 abuf->written = written;
8345 return vpc;
8346#undef FLD
8347}
8348
8349/* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8350
8351static SEM_PC
8352SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8353{
8354#define FLD(f) abuf->fields.sfmt_beq.f
8355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8356 int UNUSED written = 0;
8357 IADDR UNUSED pc = abuf->addr;
8358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8359
8360{
8361frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8362if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8363 {
8364 USI opval = FLD (i_label16);
8365 sim_queue_pc_write (current_cpu, opval);
8366 written |= (1 << 3);
8367 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8368 }
8369}
8370}
8371
8372 abuf->written = written;
8373 return vpc;
8374#undef FLD
8375}
8376
8377/* fbra: fbra$pack $hint_taken$label16 */
8378
8379static SEM_PC
8380SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8381{
8382#define FLD(f) abuf->fields.sfmt_fbne.f
8383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8384 int UNUSED written = 0;
8385 IADDR UNUSED pc = abuf->addr;
8386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8387
8388{
8389frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8390 {
8391 USI opval = FLD (i_label16);
8392 sim_queue_pc_write (current_cpu, opval);
8393 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8394 }
8395}
8396
8397 return vpc;
8398#undef FLD
8399}
8400
8401/* fbno: fbno$pack$hint_not_taken */
8402
8403static SEM_PC
8404SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8405{
8406#define FLD(f) abuf->fields.sfmt_fbne.f
8407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8408 int UNUSED written = 0;
8409 IADDR UNUSED pc = abuf->addr;
8410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8411
8412frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8413
8414 return vpc;
8415#undef FLD
8416}
8417
8418/* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8419
8420static SEM_PC
8421SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8422{
8423#define FLD(f) abuf->fields.sfmt_fbne.f
8424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8425 int UNUSED written = 0;
8426 IADDR UNUSED pc = abuf->addr;
8427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8428
8429{
8430frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8431if (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))))) {
8432 {
8433 USI opval = FLD (i_label16);
8434 sim_queue_pc_write (current_cpu, opval);
8435 written |= (1 << 3);
8436 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8437 }
8438}
8439}
8440
8441 abuf->written = written;
8442 return vpc;
8443#undef FLD
8444}
8445
8446/* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8447
8448static SEM_PC
8449SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8450{
8451#define FLD(f) abuf->fields.sfmt_fbne.f
8452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8453 int UNUSED written = 0;
8454 IADDR UNUSED pc = abuf->addr;
8455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8456
8457{
8458frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8459if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8460 {
8461 USI opval = FLD (i_label16);
8462 sim_queue_pc_write (current_cpu, opval);
8463 written |= (1 << 3);
8464 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8465 }
8466}
8467}
8468
8469 abuf->written = written;
8470 return vpc;
8471#undef FLD
8472}
8473
8474/* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8475
8476static SEM_PC
8477SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8478{
8479#define FLD(f) abuf->fields.sfmt_fbne.f
8480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8481 int UNUSED written = 0;
8482 IADDR UNUSED pc = abuf->addr;
8483 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8484
8485{
8486frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8487if (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)))) {
8488 {
8489 USI opval = FLD (i_label16);
8490 sim_queue_pc_write (current_cpu, opval);
8491 written |= (1 << 3);
8492 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8493 }
8494}
8495}
8496
8497 abuf->written = written;
8498 return vpc;
8499#undef FLD
8500}
8501
8502/* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8503
8504static SEM_PC
8505SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8506{
8507#define FLD(f) abuf->fields.sfmt_fbne.f
8508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8509 int UNUSED written = 0;
8510 IADDR UNUSED pc = abuf->addr;
8511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8512
8513{
8514frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8515if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8516 {
8517 USI opval = FLD (i_label16);
8518 sim_queue_pc_write (current_cpu, opval);
8519 written |= (1 << 3);
8520 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8521 }
8522}
8523}
8524
8525 abuf->written = written;
8526 return vpc;
8527#undef FLD
8528}
8529
8530/* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8531
8532static SEM_PC
8533SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8534{
8535#define FLD(f) abuf->fields.sfmt_fbne.f
8536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8537 int UNUSED written = 0;
8538 IADDR UNUSED pc = abuf->addr;
8539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8540
8541{
8542frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8543if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8544 {
8545 USI opval = FLD (i_label16);
8546 sim_queue_pc_write (current_cpu, opval);
8547 written |= (1 << 3);
8548 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8549 }
8550}
8551}
8552
8553 abuf->written = written;
8554 return vpc;
8555#undef FLD
8556}
8557
8558/* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8559
8560static SEM_PC
8561SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8562{
8563#define FLD(f) abuf->fields.sfmt_fbne.f
8564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8565 int UNUSED written = 0;
8566 IADDR UNUSED pc = abuf->addr;
8567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8568
8569{
8570frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8571if (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)))) {
8572 {
8573 USI opval = FLD (i_label16);
8574 sim_queue_pc_write (current_cpu, opval);
8575 written |= (1 << 3);
8576 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8577 }
8578}
8579}
8580
8581 abuf->written = written;
8582 return vpc;
8583#undef FLD
8584}
8585
8586/* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8587
8588static SEM_PC
8589SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8590{
8591#define FLD(f) abuf->fields.sfmt_fbne.f
8592 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8593 int UNUSED written = 0;
8594 IADDR UNUSED pc = abuf->addr;
8595 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8596
8597{
8598frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8599if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8600 {
8601 USI opval = FLD (i_label16);
8602 sim_queue_pc_write (current_cpu, opval);
8603 written |= (1 << 3);
8604 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8605 }
8606}
8607}
8608
8609 abuf->written = written;
8610 return vpc;
8611#undef FLD
8612}
8613
8614/* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8615
8616static SEM_PC
8617SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8618{
8619#define FLD(f) abuf->fields.sfmt_fbne.f
8620 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8621 int UNUSED written = 0;
8622 IADDR UNUSED pc = abuf->addr;
8623 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8624
8625{
8626frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8627if (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))))) {
8628 {
8629 USI opval = FLD (i_label16);
8630 sim_queue_pc_write (current_cpu, opval);
8631 written |= (1 << 3);
8632 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8633 }
8634}
8635}
8636
8637 abuf->written = written;
8638 return vpc;
8639#undef FLD
8640}
8641
8642/* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8643
8644static SEM_PC
8645SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8646{
8647#define FLD(f) abuf->fields.sfmt_fbne.f
8648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8649 int UNUSED written = 0;
8650 IADDR UNUSED pc = abuf->addr;
8651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8652
8653{
8654frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8655if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8656 {
8657 USI opval = FLD (i_label16);
8658 sim_queue_pc_write (current_cpu, opval);
8659 written |= (1 << 3);
8660 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8661 }
8662}
8663}
8664
8665 abuf->written = written;
8666 return vpc;
8667#undef FLD
8668}
8669
8670/* fble: fble$pack $FCCi_2,$hint,$label16 */
8671
8672static SEM_PC
8673SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8674{
8675#define FLD(f) abuf->fields.sfmt_fbne.f
8676 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8677 int UNUSED written = 0;
8678 IADDR UNUSED pc = abuf->addr;
8679 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8680
8681{
8682frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8683if (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)))) {
8684 {
8685 USI opval = FLD (i_label16);
8686 sim_queue_pc_write (current_cpu, opval);
8687 written |= (1 << 3);
8688 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8689 }
8690}
8691}
8692
8693 abuf->written = written;
8694 return vpc;
8695#undef FLD
8696}
8697
8698/* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8699
8700static SEM_PC
8701SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8702{
8703#define FLD(f) abuf->fields.sfmt_fbne.f
8704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8705 int UNUSED written = 0;
8706 IADDR UNUSED pc = abuf->addr;
8707 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8708
8709{
8710frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8711if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8712 {
8713 USI opval = FLD (i_label16);
8714 sim_queue_pc_write (current_cpu, opval);
8715 written |= (1 << 3);
8716 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8717 }
8718}
8719}
8720
8721 abuf->written = written;
8722 return vpc;
8723#undef FLD
8724}
8725
8726/* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8727
8728static SEM_PC
8729SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8730{
8731#define FLD(f) abuf->fields.sfmt_fbne.f
8732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8733 int UNUSED written = 0;
8734 IADDR UNUSED pc = abuf->addr;
8735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8736
8737{
8738frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8739if (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))))) {
8740 {
8741 USI opval = FLD (i_label16);
8742 sim_queue_pc_write (current_cpu, opval);
8743 written |= (1 << 3);
8744 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8745 }
8746}
8747}
8748
8749 abuf->written = written;
8750 return vpc;
8751#undef FLD
8752}
8753
8754/* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8755
8756static SEM_PC
8757SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8758{
8759#define FLD(f) abuf->fields.sfmt_fbne.f
8760 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8761 int UNUSED written = 0;
8762 IADDR UNUSED pc = abuf->addr;
8763 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8764
8765{
8766frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8767if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8768 {
8769 USI opval = FLD (i_label16);
8770 sim_queue_pc_write (current_cpu, opval);
8771 written |= (1 << 3);
8772 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8773 }
8774}
8775}
8776
8777 abuf->written = written;
8778 return vpc;
8779#undef FLD
8780}
8781
8782/* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8783
8784static SEM_PC
8785SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8786{
8787#define FLD(f) abuf->fields.sfmt_fbne.f
8788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8789 int UNUSED written = 0;
8790 IADDR UNUSED pc = abuf->addr;
8791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8792
8793{
8794frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8795if (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))))) {
8796 {
8797 USI opval = FLD (i_label16);
8798 sim_queue_pc_write (current_cpu, opval);
8799 written |= (1 << 3);
8800 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8801 }
8802}
8803}
8804
8805 abuf->written = written;
8806 return vpc;
8807#undef FLD
8808}
8809
8810/* bctrlr: bctrlr$pack $ccond,$hint */
8811
8812static SEM_PC
8813SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8814{
8815#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8817 int UNUSED written = 0;
8818 IADDR UNUSED pc = abuf->addr;
8819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8820
8821{
8822frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8823{
8824 SI tmp_tmp;
8825 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8826 {
8827 USI opval = tmp_tmp;
8828 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8829 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8830 }
8831if (EQSI (FLD (f_ccond), 0)) {
8832if (NESI (tmp_tmp, 0)) {
8833 {
8834 USI opval = GET_H_SPR (((UINT) 272));
8835 sim_queue_pc_write (current_cpu, opval);
8836 written |= (1 << 5);
8837 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8838 }
8839}
8840} else {
8841if (EQSI (tmp_tmp, 0)) {
8842 {
8843 USI opval = GET_H_SPR (((UINT) 272));
8844 sim_queue_pc_write (current_cpu, opval);
8845 written |= (1 << 5);
8846 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8847 }
8848}
8849}
8850}
8851}
8852
8853 abuf->written = written;
8854 return vpc;
8855#undef FLD
8856}
8857
8858/* bralr: bralr$pack$hint_taken */
8859
8860static SEM_PC
8861SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8862{
8863#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8865 int UNUSED written = 0;
8866 IADDR UNUSED pc = abuf->addr;
8867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8868
8869{
8870frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8871 {
8872 USI opval = GET_H_SPR (((UINT) 272));
8873 sim_queue_pc_write (current_cpu, opval);
8874 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8875 }
8876}
8877
8878 return vpc;
8879#undef FLD
8880}
8881
8882/* bnolr: bnolr$pack$hint_not_taken */
8883
8884static SEM_PC
8885SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8886{
8887#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8888 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8889 int UNUSED written = 0;
8890 IADDR UNUSED pc = abuf->addr;
8891 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8892
8893frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8894
8895 return vpc;
8896#undef FLD
8897}
8898
8899/* beqlr: beqlr$pack $ICCi_2,$hint */
8900
8901static SEM_PC
8902SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8903{
8904#define FLD(f) abuf->fields.sfmt_bceqlr.f
8905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8906 int UNUSED written = 0;
8907 IADDR UNUSED pc = abuf->addr;
8908 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8909
8910{
8911frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8912if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8913 {
8914 USI opval = GET_H_SPR (((UINT) 272));
8915 sim_queue_pc_write (current_cpu, opval);
8916 written |= (1 << 3);
8917 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8918 }
8919}
8920}
8921
8922 abuf->written = written;
8923 return vpc;
8924#undef FLD
8925}
8926
8927/* bnelr: bnelr$pack $ICCi_2,$hint */
8928
8929static SEM_PC
8930SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8931{
8932#define FLD(f) abuf->fields.sfmt_bceqlr.f
8933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8934 int UNUSED written = 0;
8935 IADDR UNUSED pc = abuf->addr;
8936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8937
8938{
8939frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8940if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8941 {
8942 USI opval = GET_H_SPR (((UINT) 272));
8943 sim_queue_pc_write (current_cpu, opval);
8944 written |= (1 << 3);
8945 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8946 }
8947}
8948}
8949
8950 abuf->written = written;
8951 return vpc;
8952#undef FLD
8953}
8954
8955/* blelr: blelr$pack $ICCi_2,$hint */
8956
8957static SEM_PC
8958SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8959{
8960#define FLD(f) abuf->fields.sfmt_bceqlr.f
8961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8962 int UNUSED written = 0;
8963 IADDR UNUSED pc = abuf->addr;
8964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8965
8966{
8967frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8968if (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))))) {
8969 {
8970 USI opval = GET_H_SPR (((UINT) 272));
8971 sim_queue_pc_write (current_cpu, opval);
8972 written |= (1 << 3);
8973 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8974 }
8975}
8976}
8977
8978 abuf->written = written;
8979 return vpc;
8980#undef FLD
8981}
8982
8983/* bgtlr: bgtlr$pack $ICCi_2,$hint */
8984
8985static SEM_PC
8986SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8987{
8988#define FLD(f) abuf->fields.sfmt_bceqlr.f
8989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8990 int UNUSED written = 0;
8991 IADDR UNUSED pc = abuf->addr;
8992 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8993
8994{
8995frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8996if (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)))))) {
8997 {
8998 USI opval = GET_H_SPR (((UINT) 272));
8999 sim_queue_pc_write (current_cpu, opval);
9000 written |= (1 << 3);
9001 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9002 }
9003}
9004}
9005
9006 abuf->written = written;
9007 return vpc;
9008#undef FLD
9009}
9010
9011/* bltlr: bltlr$pack $ICCi_2,$hint */
9012
9013static SEM_PC
9014SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9015{
9016#define FLD(f) abuf->fields.sfmt_bceqlr.f
9017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9018 int UNUSED written = 0;
9019 IADDR UNUSED pc = abuf->addr;
9020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9021
9022{
9023frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9024if (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)))) {
9025 {
9026 USI opval = GET_H_SPR (((UINT) 272));
9027 sim_queue_pc_write (current_cpu, opval);
9028 written |= (1 << 3);
9029 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9030 }
9031}
9032}
9033
9034 abuf->written = written;
9035 return vpc;
9036#undef FLD
9037}
9038
9039/* bgelr: bgelr$pack $ICCi_2,$hint */
9040
9041static SEM_PC
9042SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9043{
9044#define FLD(f) abuf->fields.sfmt_bceqlr.f
9045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9046 int UNUSED written = 0;
9047 IADDR UNUSED pc = abuf->addr;
9048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9049
9050{
9051frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9052if (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))))) {
9053 {
9054 USI opval = GET_H_SPR (((UINT) 272));
9055 sim_queue_pc_write (current_cpu, opval);
9056 written |= (1 << 3);
9057 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9058 }
9059}
9060}
9061
9062 abuf->written = written;
9063 return vpc;
9064#undef FLD
9065}
9066
9067/* blslr: blslr$pack $ICCi_2,$hint */
9068
9069static SEM_PC
9070SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9071{
9072#define FLD(f) abuf->fields.sfmt_bceqlr.f
9073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9074 int UNUSED written = 0;
9075 IADDR UNUSED pc = abuf->addr;
9076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9077
9078{
9079frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9080if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9081 {
9082 USI opval = GET_H_SPR (((UINT) 272));
9083 sim_queue_pc_write (current_cpu, opval);
9084 written |= (1 << 3);
9085 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9086 }
9087}
9088}
9089
9090 abuf->written = written;
9091 return vpc;
9092#undef FLD
9093}
9094
9095/* bhilr: bhilr$pack $ICCi_2,$hint */
9096
9097static SEM_PC
9098SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9099{
9100#define FLD(f) abuf->fields.sfmt_bceqlr.f
9101 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9102 int UNUSED written = 0;
9103 IADDR UNUSED pc = abuf->addr;
9104 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9105
9106{
9107frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9108if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
9109 {
9110 USI opval = GET_H_SPR (((UINT) 272));
9111 sim_queue_pc_write (current_cpu, opval);
9112 written |= (1 << 3);
9113 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9114 }
9115}
9116}
9117
9118 abuf->written = written;
9119 return vpc;
9120#undef FLD
9121}
9122
9123/* bclr: bclr$pack $ICCi_2,$hint */
9124
9125static SEM_PC
9126SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9127{
9128#define FLD(f) abuf->fields.sfmt_bceqlr.f
9129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9130 int UNUSED written = 0;
9131 IADDR UNUSED pc = abuf->addr;
9132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9133
9134{
9135frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9136if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9137 {
9138 USI opval = GET_H_SPR (((UINT) 272));
9139 sim_queue_pc_write (current_cpu, opval);
9140 written |= (1 << 3);
9141 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9142 }
9143}
9144}
9145
9146 abuf->written = written;
9147 return vpc;
9148#undef FLD
9149}
9150
9151/* bnclr: bnclr$pack $ICCi_2,$hint */
9152
9153static SEM_PC
9154SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9155{
9156#define FLD(f) abuf->fields.sfmt_bceqlr.f
9157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9158 int UNUSED written = 0;
9159 IADDR UNUSED pc = abuf->addr;
9160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9161
9162{
9163frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9164if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9165 {
9166 USI opval = GET_H_SPR (((UINT) 272));
9167 sim_queue_pc_write (current_cpu, opval);
9168 written |= (1 << 3);
9169 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9170 }
9171}
9172}
9173
9174 abuf->written = written;
9175 return vpc;
9176#undef FLD
9177}
9178
9179/* bnlr: bnlr$pack $ICCi_2,$hint */
9180
9181static SEM_PC
9182SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9183{
9184#define FLD(f) abuf->fields.sfmt_bceqlr.f
9185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9186 int UNUSED written = 0;
9187 IADDR UNUSED pc = abuf->addr;
9188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9189
9190{
9191frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9192if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9193 {
9194 USI opval = GET_H_SPR (((UINT) 272));
9195 sim_queue_pc_write (current_cpu, opval);
9196 written |= (1 << 3);
9197 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9198 }
9199}
9200}
9201
9202 abuf->written = written;
9203 return vpc;
9204#undef FLD
9205}
9206
9207/* bplr: bplr$pack $ICCi_2,$hint */
9208
9209static SEM_PC
9210SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9211{
9212#define FLD(f) abuf->fields.sfmt_bceqlr.f
9213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9214 int UNUSED written = 0;
9215 IADDR UNUSED pc = abuf->addr;
9216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9217
9218{
9219frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9220if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9221 {
9222 USI opval = GET_H_SPR (((UINT) 272));
9223 sim_queue_pc_write (current_cpu, opval);
9224 written |= (1 << 3);
9225 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9226 }
9227}
9228}
9229
9230 abuf->written = written;
9231 return vpc;
9232#undef FLD
9233}
9234
9235/* bvlr: bvlr$pack $ICCi_2,$hint */
9236
9237static SEM_PC
9238SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9239{
9240#define FLD(f) abuf->fields.sfmt_bceqlr.f
9241 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9242 int UNUSED written = 0;
9243 IADDR UNUSED pc = abuf->addr;
9244 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9245
9246{
9247frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9248if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9249 {
9250 USI opval = GET_H_SPR (((UINT) 272));
9251 sim_queue_pc_write (current_cpu, opval);
9252 written |= (1 << 3);
9253 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9254 }
9255}
9256}
9257
9258 abuf->written = written;
9259 return vpc;
9260#undef FLD
9261}
9262
9263/* bnvlr: bnvlr$pack $ICCi_2,$hint */
9264
9265static SEM_PC
9266SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9267{
9268#define FLD(f) abuf->fields.sfmt_bceqlr.f
9269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9270 int UNUSED written = 0;
9271 IADDR UNUSED pc = abuf->addr;
9272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9273
9274{
9275frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9276if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9277 {
9278 USI opval = GET_H_SPR (((UINT) 272));
9279 sim_queue_pc_write (current_cpu, opval);
9280 written |= (1 << 3);
9281 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9282 }
9283}
9284}
9285
9286 abuf->written = written;
9287 return vpc;
9288#undef FLD
9289}
9290
9291/* fbralr: fbralr$pack$hint_taken */
9292
9293static SEM_PC
9294SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9295{
9296#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9298 int UNUSED written = 0;
9299 IADDR UNUSED pc = abuf->addr;
9300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9301
9302{
9303frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9304 {
9305 USI opval = GET_H_SPR (((UINT) 272));
9306 sim_queue_pc_write (current_cpu, opval);
9307 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9308 }
9309}
9310
9311 return vpc;
9312#undef FLD
9313}
9314
9315/* fbnolr: fbnolr$pack$hint_not_taken */
9316
9317static SEM_PC
9318SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9319{
9320#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9322 int UNUSED written = 0;
9323 IADDR UNUSED pc = abuf->addr;
9324 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9325
9326frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9327
9328 return vpc;
9329#undef FLD
9330}
9331
9332/* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9333
9334static SEM_PC
9335SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9336{
9337#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9339 int UNUSED written = 0;
9340 IADDR UNUSED pc = abuf->addr;
9341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9342
9343{
9344frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9345if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9346 {
9347 USI opval = GET_H_SPR (((UINT) 272));
9348 sim_queue_pc_write (current_cpu, opval);
9349 written |= (1 << 3);
9350 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9351 }
9352}
9353}
9354
9355 abuf->written = written;
9356 return vpc;
9357#undef FLD
9358}
9359
9360/* fbnelr: fbnelr$pack $FCCi_2,$hint */
9361
9362static SEM_PC
9363SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9364{
9365#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9367 int UNUSED written = 0;
9368 IADDR UNUSED pc = abuf->addr;
9369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9370
9371{
9372frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9373if (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))))) {
9374 {
9375 USI opval = GET_H_SPR (((UINT) 272));
9376 sim_queue_pc_write (current_cpu, opval);
9377 written |= (1 << 3);
9378 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9379 }
9380}
9381}
9382
9383 abuf->written = written;
9384 return vpc;
9385#undef FLD
9386}
9387
9388/* fblglr: fblglr$pack $FCCi_2,$hint */
9389
9390static SEM_PC
9391SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9392{
9393#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9395 int UNUSED written = 0;
9396 IADDR UNUSED pc = abuf->addr;
9397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9398
9399{
9400frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9401if (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)))) {
9402 {
9403 USI opval = GET_H_SPR (((UINT) 272));
9404 sim_queue_pc_write (current_cpu, opval);
9405 written |= (1 << 3);
9406 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9407 }
9408}
9409}
9410
9411 abuf->written = written;
9412 return vpc;
9413#undef FLD
9414}
9415
9416/* fbuelr: fbuelr$pack $FCCi_2,$hint */
9417
9418static SEM_PC
9419SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9420{
9421#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9423 int UNUSED written = 0;
9424 IADDR UNUSED pc = abuf->addr;
9425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9426
9427{
9428frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9429if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9430 {
9431 USI opval = GET_H_SPR (((UINT) 272));
9432 sim_queue_pc_write (current_cpu, opval);
9433 written |= (1 << 3);
9434 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9435 }
9436}
9437}
9438
9439 abuf->written = written;
9440 return vpc;
9441#undef FLD
9442}
9443
9444/* fbullr: fbullr$pack $FCCi_2,$hint */
9445
9446static SEM_PC
9447SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9448{
9449#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9451 int UNUSED written = 0;
9452 IADDR UNUSED pc = abuf->addr;
9453 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9454
9455{
9456frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9457if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9458 {
9459 USI opval = GET_H_SPR (((UINT) 272));
9460 sim_queue_pc_write (current_cpu, opval);
9461 written |= (1 << 3);
9462 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9463 }
9464}
9465}
9466
9467 abuf->written = written;
9468 return vpc;
9469#undef FLD
9470}
9471
9472/* fbgelr: fbgelr$pack $FCCi_2,$hint */
9473
9474static SEM_PC
9475SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9476{
9477#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9479 int UNUSED written = 0;
9480 IADDR UNUSED pc = abuf->addr;
9481 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9482
9483{
9484frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9485if (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)))) {
9486 {
9487 USI opval = GET_H_SPR (((UINT) 272));
9488 sim_queue_pc_write (current_cpu, opval);
9489 written |= (1 << 3);
9490 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9491 }
9492}
9493}
9494
9495 abuf->written = written;
9496 return vpc;
9497#undef FLD
9498}
9499
9500/* fbltlr: fbltlr$pack $FCCi_2,$hint */
9501
9502static SEM_PC
9503SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9504{
9505#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9507 int UNUSED written = 0;
9508 IADDR UNUSED pc = abuf->addr;
9509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9510
9511{
9512frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9513if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9514 {
9515 USI opval = GET_H_SPR (((UINT) 272));
9516 sim_queue_pc_write (current_cpu, opval);
9517 written |= (1 << 3);
9518 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9519 }
9520}
9521}
9522
9523 abuf->written = written;
9524 return vpc;
9525#undef FLD
9526}
9527
9528/* fbugelr: fbugelr$pack $FCCi_2,$hint */
9529
9530static SEM_PC
9531SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9532{
9533#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9535 int UNUSED written = 0;
9536 IADDR UNUSED pc = abuf->addr;
9537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9538
9539{
9540frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9541if (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))))) {
9542 {
9543 USI opval = GET_H_SPR (((UINT) 272));
9544 sim_queue_pc_write (current_cpu, opval);
9545 written |= (1 << 3);
9546 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9547 }
9548}
9549}
9550
9551 abuf->written = written;
9552 return vpc;
9553#undef FLD
9554}
9555
9556/* fbuglr: fbuglr$pack $FCCi_2,$hint */
9557
9558static SEM_PC
9559SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9560{
9561#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9563 int UNUSED written = 0;
9564 IADDR UNUSED pc = abuf->addr;
9565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9566
9567{
9568frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9569if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9570 {
9571 USI opval = GET_H_SPR (((UINT) 272));
9572 sim_queue_pc_write (current_cpu, opval);
9573 written |= (1 << 3);
9574 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9575 }
9576}
9577}
9578
9579 abuf->written = written;
9580 return vpc;
9581#undef FLD
9582}
9583
9584/* fblelr: fblelr$pack $FCCi_2,$hint */
9585
9586static SEM_PC
9587SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9588{
9589#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9590 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9591 int UNUSED written = 0;
9592 IADDR UNUSED pc = abuf->addr;
9593 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9594
9595{
9596frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9597if (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)))) {
9598 {
9599 USI opval = GET_H_SPR (((UINT) 272));
9600 sim_queue_pc_write (current_cpu, opval);
9601 written |= (1 << 3);
9602 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9603 }
9604}
9605}
9606
9607 abuf->written = written;
9608 return vpc;
9609#undef FLD
9610}
9611
9612/* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9613
9614static SEM_PC
9615SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9616{
9617#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9619 int UNUSED written = 0;
9620 IADDR UNUSED pc = abuf->addr;
9621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9622
9623{
9624frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9625if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9626 {
9627 USI opval = GET_H_SPR (((UINT) 272));
9628 sim_queue_pc_write (current_cpu, opval);
9629 written |= (1 << 3);
9630 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9631 }
9632}
9633}
9634
9635 abuf->written = written;
9636 return vpc;
9637#undef FLD
9638}
9639
9640/* fbulelr: fbulelr$pack $FCCi_2,$hint */
9641
9642static SEM_PC
9643SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9644{
9645#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9646 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9647 int UNUSED written = 0;
9648 IADDR UNUSED pc = abuf->addr;
9649 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9650
9651{
9652frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9653if (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))))) {
9654 {
9655 USI opval = GET_H_SPR (((UINT) 272));
9656 sim_queue_pc_write (current_cpu, opval);
9657 written |= (1 << 3);
9658 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9659 }
9660}
9661}
9662
9663 abuf->written = written;
9664 return vpc;
9665#undef FLD
9666}
9667
9668/* fbulr: fbulr$pack $FCCi_2,$hint */
9669
9670static SEM_PC
9671SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9672{
9673#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9675 int UNUSED written = 0;
9676 IADDR UNUSED pc = abuf->addr;
9677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9678
9679{
9680frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9681if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9682 {
9683 USI opval = GET_H_SPR (((UINT) 272));
9684 sim_queue_pc_write (current_cpu, opval);
9685 written |= (1 << 3);
9686 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9687 }
9688}
9689}
9690
9691 abuf->written = written;
9692 return vpc;
9693#undef FLD
9694}
9695
9696/* fbolr: fbolr$pack $FCCi_2,$hint */
9697
9698static SEM_PC
9699SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9700{
9701#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9703 int UNUSED written = 0;
9704 IADDR UNUSED pc = abuf->addr;
9705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9706
9707{
9708frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9709if (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))))) {
9710 {
9711 USI opval = GET_H_SPR (((UINT) 272));
9712 sim_queue_pc_write (current_cpu, opval);
9713 written |= (1 << 3);
9714 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9715 }
9716}
9717}
9718
9719 abuf->written = written;
9720 return vpc;
9721#undef FLD
9722}
9723
9724/* bcralr: bcralr$pack $ccond$hint_taken */
9725
9726static SEM_PC
9727SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9728{
9729#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9731 int UNUSED written = 0;
9732 IADDR UNUSED pc = abuf->addr;
9733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9734
9735{
9736frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9737{
9738 SI tmp_tmp;
9739 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9740 {
9741 USI opval = tmp_tmp;
9742 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9743 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9744 }
9745if (EQSI (FLD (f_ccond), 0)) {
9746if (NESI (tmp_tmp, 0)) {
9747 {
9748 USI opval = GET_H_SPR (((UINT) 272));
9749 sim_queue_pc_write (current_cpu, opval);
9750 written |= (1 << 5);
9751 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9752 }
9753}
9754} else {
9755if (EQSI (tmp_tmp, 0)) {
9756 {
9757 USI opval = GET_H_SPR (((UINT) 272));
9758 sim_queue_pc_write (current_cpu, opval);
9759 written |= (1 << 5);
9760 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9761 }
9762}
9763}
9764}
9765}
9766
9767 abuf->written = written;
9768 return vpc;
9769#undef FLD
9770}
9771
9772/* bcnolr: bcnolr$pack$hint_not_taken */
9773
9774static SEM_PC
9775SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9776{
9777#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9779 int UNUSED written = 0;
9780 IADDR UNUSED pc = abuf->addr;
9781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9782
9783{
9784frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9785{
9786 SI tmp_tmp;
9787 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9788 {
9789 USI opval = tmp_tmp;
9790 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9791 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9792 }
9793((void) 0); /*nop*/
9794}
9795}
9796
9797 return vpc;
9798#undef FLD
9799}
9800
9801/* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9802
9803static SEM_PC
9804SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9805{
9806#define FLD(f) abuf->fields.sfmt_bceqlr.f
9807 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9808 int UNUSED written = 0;
9809 IADDR UNUSED pc = abuf->addr;
9810 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9811
9812{
9813frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9814{
9815 SI tmp_tmp;
9816 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9817 {
9818 USI opval = tmp_tmp;
9819 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9820 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9821 }
9822if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9823if (EQSI (FLD (f_ccond), 0)) {
9824if (NESI (tmp_tmp, 0)) {
9825 {
9826 USI opval = GET_H_SPR (((UINT) 272));
9827 sim_queue_pc_write (current_cpu, opval);
9828 written |= (1 << 6);
9829 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9830 }
9831}
9832} else {
9833if (EQSI (tmp_tmp, 0)) {
9834 {
9835 USI opval = GET_H_SPR (((UINT) 272));
9836 sim_queue_pc_write (current_cpu, opval);
9837 written |= (1 << 6);
9838 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9839 }
9840}
9841}
9842}
9843}
9844}
9845
9846 abuf->written = written;
9847 return vpc;
9848#undef FLD
9849}
9850
9851/* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9852
9853static SEM_PC
9854SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9855{
9856#define FLD(f) abuf->fields.sfmt_bceqlr.f
9857 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9858 int UNUSED written = 0;
9859 IADDR UNUSED pc = abuf->addr;
9860 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9861
9862{
9863frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9864{
9865 SI tmp_tmp;
9866 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9867 {
9868 USI opval = tmp_tmp;
9869 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9870 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9871 }
9872if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9873if (EQSI (FLD (f_ccond), 0)) {
9874if (NESI (tmp_tmp, 0)) {
9875 {
9876 USI opval = GET_H_SPR (((UINT) 272));
9877 sim_queue_pc_write (current_cpu, opval);
9878 written |= (1 << 6);
9879 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9880 }
9881}
9882} else {
9883if (EQSI (tmp_tmp, 0)) {
9884 {
9885 USI opval = GET_H_SPR (((UINT) 272));
9886 sim_queue_pc_write (current_cpu, opval);
9887 written |= (1 << 6);
9888 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9889 }
9890}
9891}
9892}
9893}
9894}
9895
9896 abuf->written = written;
9897 return vpc;
9898#undef FLD
9899}
9900
9901/* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9902
9903static SEM_PC
9904SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9905{
9906#define FLD(f) abuf->fields.sfmt_bceqlr.f
9907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9908 int UNUSED written = 0;
9909 IADDR UNUSED pc = abuf->addr;
9910 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9911
9912{
9913frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9914{
9915 SI tmp_tmp;
9916 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9917 {
9918 USI opval = tmp_tmp;
9919 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9920 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9921 }
9922if (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))))) {
9923if (EQSI (FLD (f_ccond), 0)) {
9924if (NESI (tmp_tmp, 0)) {
9925 {
9926 USI opval = GET_H_SPR (((UINT) 272));
9927 sim_queue_pc_write (current_cpu, opval);
9928 written |= (1 << 6);
9929 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9930 }
9931}
9932} else {
9933if (EQSI (tmp_tmp, 0)) {
9934 {
9935 USI opval = GET_H_SPR (((UINT) 272));
9936 sim_queue_pc_write (current_cpu, opval);
9937 written |= (1 << 6);
9938 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9939 }
9940}
9941}
9942}
9943}
9944}
9945
9946 abuf->written = written;
9947 return vpc;
9948#undef FLD
9949}
9950
9951/* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
9952
9953static SEM_PC
9954SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9955{
9956#define FLD(f) abuf->fields.sfmt_bceqlr.f
9957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9958 int UNUSED written = 0;
9959 IADDR UNUSED pc = abuf->addr;
9960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9961
9962{
9963frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9964{
9965 SI tmp_tmp;
9966 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9967 {
9968 USI opval = tmp_tmp;
9969 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9970 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9971 }
9972if (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)))))) {
9973if (EQSI (FLD (f_ccond), 0)) {
9974if (NESI (tmp_tmp, 0)) {
9975 {
9976 USI opval = GET_H_SPR (((UINT) 272));
9977 sim_queue_pc_write (current_cpu, opval);
9978 written |= (1 << 6);
9979 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9980 }
9981}
9982} else {
9983if (EQSI (tmp_tmp, 0)) {
9984 {
9985 USI opval = GET_H_SPR (((UINT) 272));
9986 sim_queue_pc_write (current_cpu, opval);
9987 written |= (1 << 6);
9988 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9989 }
9990}
9991}
9992}
9993}
9994}
9995
9996 abuf->written = written;
9997 return vpc;
9998#undef FLD
9999}
10000
10001/* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
10002
10003static SEM_PC
10004SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10005{
10006#define FLD(f) abuf->fields.sfmt_bceqlr.f
10007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10008 int UNUSED written = 0;
10009 IADDR UNUSED pc = abuf->addr;
10010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10011
10012{
10013frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10014{
10015 SI tmp_tmp;
10016 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10017 {
10018 USI opval = tmp_tmp;
10019 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10020 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10021 }
10022if (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)))) {
10023if (EQSI (FLD (f_ccond), 0)) {
10024if (NESI (tmp_tmp, 0)) {
10025 {
10026 USI opval = GET_H_SPR (((UINT) 272));
10027 sim_queue_pc_write (current_cpu, opval);
10028 written |= (1 << 6);
10029 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10030 }
10031}
10032} else {
10033if (EQSI (tmp_tmp, 0)) {
10034 {
10035 USI opval = GET_H_SPR (((UINT) 272));
10036 sim_queue_pc_write (current_cpu, opval);
10037 written |= (1 << 6);
10038 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10039 }
10040}
10041}
10042}
10043}
10044}
10045
10046 abuf->written = written;
10047 return vpc;
10048#undef FLD
10049}
10050
10051/* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10052
10053static SEM_PC
10054SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10055{
10056#define FLD(f) abuf->fields.sfmt_bceqlr.f
10057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10058 int UNUSED written = 0;
10059 IADDR UNUSED pc = abuf->addr;
10060 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10061
10062{
10063frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10064{
10065 SI tmp_tmp;
10066 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10067 {
10068 USI opval = tmp_tmp;
10069 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10070 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10071 }
10072if (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))))) {
10073if (EQSI (FLD (f_ccond), 0)) {
10074if (NESI (tmp_tmp, 0)) {
10075 {
10076 USI opval = GET_H_SPR (((UINT) 272));
10077 sim_queue_pc_write (current_cpu, opval);
10078 written |= (1 << 6);
10079 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10080 }
10081}
10082} else {
10083if (EQSI (tmp_tmp, 0)) {
10084 {
10085 USI opval = GET_H_SPR (((UINT) 272));
10086 sim_queue_pc_write (current_cpu, opval);
10087 written |= (1 << 6);
10088 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10089 }
10090}
10091}
10092}
10093}
10094}
10095
10096 abuf->written = written;
10097 return vpc;
10098#undef FLD
10099}
10100
10101/* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10102
10103static SEM_PC
10104SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10105{
10106#define FLD(f) abuf->fields.sfmt_bceqlr.f
10107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10108 int UNUSED written = 0;
10109 IADDR UNUSED pc = abuf->addr;
10110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10111
10112{
10113frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10114{
10115 SI tmp_tmp;
10116 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10117 {
10118 USI opval = tmp_tmp;
10119 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10120 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10121 }
10122if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10123if (EQSI (FLD (f_ccond), 0)) {
10124if (NESI (tmp_tmp, 0)) {
10125 {
10126 USI opval = GET_H_SPR (((UINT) 272));
10127 sim_queue_pc_write (current_cpu, opval);
10128 written |= (1 << 6);
10129 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10130 }
10131}
10132} else {
10133if (EQSI (tmp_tmp, 0)) {
10134 {
10135 USI opval = GET_H_SPR (((UINT) 272));
10136 sim_queue_pc_write (current_cpu, opval);
10137 written |= (1 << 6);
10138 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10139 }
10140}
10141}
10142}
10143}
10144}
10145
10146 abuf->written = written;
10147 return vpc;
10148#undef FLD
10149}
10150
10151/* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10152
10153static SEM_PC
10154SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10155{
10156#define FLD(f) abuf->fields.sfmt_bceqlr.f
10157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10158 int UNUSED written = 0;
10159 IADDR UNUSED pc = abuf->addr;
10160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10161
10162{
10163frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10164{
10165 SI tmp_tmp;
10166 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10167 {
10168 USI opval = tmp_tmp;
10169 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10170 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10171 }
10172if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
10173if (EQSI (FLD (f_ccond), 0)) {
10174if (NESI (tmp_tmp, 0)) {
10175 {
10176 USI opval = GET_H_SPR (((UINT) 272));
10177 sim_queue_pc_write (current_cpu, opval);
10178 written |= (1 << 6);
10179 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10180 }
10181}
10182} else {
10183if (EQSI (tmp_tmp, 0)) {
10184 {
10185 USI opval = GET_H_SPR (((UINT) 272));
10186 sim_queue_pc_write (current_cpu, opval);
10187 written |= (1 << 6);
10188 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10189 }
10190}
10191}
10192}
10193}
10194}
10195
10196 abuf->written = written;
10197 return vpc;
10198#undef FLD
10199}
10200
10201/* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10202
10203static SEM_PC
10204SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10205{
10206#define FLD(f) abuf->fields.sfmt_bceqlr.f
10207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10208 int UNUSED written = 0;
10209 IADDR UNUSED pc = abuf->addr;
10210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10211
10212{
10213frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10214{
10215 SI tmp_tmp;
10216 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10217 {
10218 USI opval = tmp_tmp;
10219 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10220 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10221 }
10222if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10223if (EQSI (FLD (f_ccond), 0)) {
10224if (NESI (tmp_tmp, 0)) {
10225 {
10226 USI opval = GET_H_SPR (((UINT) 272));
10227 sim_queue_pc_write (current_cpu, opval);
10228 written |= (1 << 6);
10229 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10230 }
10231}
10232} else {
10233if (EQSI (tmp_tmp, 0)) {
10234 {
10235 USI opval = GET_H_SPR (((UINT) 272));
10236 sim_queue_pc_write (current_cpu, opval);
10237 written |= (1 << 6);
10238 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10239 }
10240}
10241}
10242}
10243}
10244}
10245
10246 abuf->written = written;
10247 return vpc;
10248#undef FLD
10249}
10250
10251/* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10252
10253static SEM_PC
10254SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10255{
10256#define FLD(f) abuf->fields.sfmt_bceqlr.f
10257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10258 int UNUSED written = 0;
10259 IADDR UNUSED pc = abuf->addr;
10260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10261
10262{
10263frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10264{
10265 SI tmp_tmp;
10266 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10267 {
10268 USI opval = tmp_tmp;
10269 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10270 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10271 }
10272if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10273if (EQSI (FLD (f_ccond), 0)) {
10274if (NESI (tmp_tmp, 0)) {
10275 {
10276 USI opval = GET_H_SPR (((UINT) 272));
10277 sim_queue_pc_write (current_cpu, opval);
10278 written |= (1 << 6);
10279 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10280 }
10281}
10282} else {
10283if (EQSI (tmp_tmp, 0)) {
10284 {
10285 USI opval = GET_H_SPR (((UINT) 272));
10286 sim_queue_pc_write (current_cpu, opval);
10287 written |= (1 << 6);
10288 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10289 }
10290}
10291}
10292}
10293}
10294}
10295
10296 abuf->written = written;
10297 return vpc;
10298#undef FLD
10299}
10300
10301/* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10302
10303static SEM_PC
10304SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10305{
10306#define FLD(f) abuf->fields.sfmt_bceqlr.f
10307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10308 int UNUSED written = 0;
10309 IADDR UNUSED pc = abuf->addr;
10310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10311
10312{
10313frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10314{
10315 SI tmp_tmp;
10316 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10317 {
10318 USI opval = tmp_tmp;
10319 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10320 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10321 }
10322if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10323if (EQSI (FLD (f_ccond), 0)) {
10324if (NESI (tmp_tmp, 0)) {
10325 {
10326 USI opval = GET_H_SPR (((UINT) 272));
10327 sim_queue_pc_write (current_cpu, opval);
10328 written |= (1 << 6);
10329 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10330 }
10331}
10332} else {
10333if (EQSI (tmp_tmp, 0)) {
10334 {
10335 USI opval = GET_H_SPR (((UINT) 272));
10336 sim_queue_pc_write (current_cpu, opval);
10337 written |= (1 << 6);
10338 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10339 }
10340}
10341}
10342}
10343}
10344}
10345
10346 abuf->written = written;
10347 return vpc;
10348#undef FLD
10349}
10350
10351/* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10352
10353static SEM_PC
10354SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10355{
10356#define FLD(f) abuf->fields.sfmt_bceqlr.f
10357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10358 int UNUSED written = 0;
10359 IADDR UNUSED pc = abuf->addr;
10360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10361
10362{
10363frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10364{
10365 SI tmp_tmp;
10366 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10367 {
10368 USI opval = tmp_tmp;
10369 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10370 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10371 }
10372if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10373if (EQSI (FLD (f_ccond), 0)) {
10374if (NESI (tmp_tmp, 0)) {
10375 {
10376 USI opval = GET_H_SPR (((UINT) 272));
10377 sim_queue_pc_write (current_cpu, opval);
10378 written |= (1 << 6);
10379 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10380 }
10381}
10382} else {
10383if (EQSI (tmp_tmp, 0)) {
10384 {
10385 USI opval = GET_H_SPR (((UINT) 272));
10386 sim_queue_pc_write (current_cpu, opval);
10387 written |= (1 << 6);
10388 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10389 }
10390}
10391}
10392}
10393}
10394}
10395
10396 abuf->written = written;
10397 return vpc;
10398#undef FLD
10399}
10400
10401/* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10402
10403static SEM_PC
10404SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10405{
10406#define FLD(f) abuf->fields.sfmt_bceqlr.f
10407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10408 int UNUSED written = 0;
10409 IADDR UNUSED pc = abuf->addr;
10410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10411
10412{
10413frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10414{
10415 SI tmp_tmp;
10416 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10417 {
10418 USI opval = tmp_tmp;
10419 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10420 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10421 }
10422if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10423if (EQSI (FLD (f_ccond), 0)) {
10424if (NESI (tmp_tmp, 0)) {
10425 {
10426 USI opval = GET_H_SPR (((UINT) 272));
10427 sim_queue_pc_write (current_cpu, opval);
10428 written |= (1 << 6);
10429 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10430 }
10431}
10432} else {
10433if (EQSI (tmp_tmp, 0)) {
10434 {
10435 USI opval = GET_H_SPR (((UINT) 272));
10436 sim_queue_pc_write (current_cpu, opval);
10437 written |= (1 << 6);
10438 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10439 }
10440}
10441}
10442}
10443}
10444}
10445
10446 abuf->written = written;
10447 return vpc;
10448#undef FLD
10449}
10450
10451/* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10452
10453static SEM_PC
10454SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10455{
10456#define FLD(f) abuf->fields.sfmt_bceqlr.f
10457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10458 int UNUSED written = 0;
10459 IADDR UNUSED pc = abuf->addr;
10460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10461
10462{
10463frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10464{
10465 SI tmp_tmp;
10466 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10467 {
10468 USI opval = tmp_tmp;
10469 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10470 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10471 }
10472if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10473if (EQSI (FLD (f_ccond), 0)) {
10474if (NESI (tmp_tmp, 0)) {
10475 {
10476 USI opval = GET_H_SPR (((UINT) 272));
10477 sim_queue_pc_write (current_cpu, opval);
10478 written |= (1 << 6);
10479 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10480 }
10481}
10482} else {
10483if (EQSI (tmp_tmp, 0)) {
10484 {
10485 USI opval = GET_H_SPR (((UINT) 272));
10486 sim_queue_pc_write (current_cpu, opval);
10487 written |= (1 << 6);
10488 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10489 }
10490}
10491}
10492}
10493}
10494}
10495
10496 abuf->written = written;
10497 return vpc;
10498#undef FLD
10499}
10500
10501/* fcbralr: fcbralr$pack $ccond$hint_taken */
10502
10503static SEM_PC
10504SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10505{
10506#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10508 int UNUSED written = 0;
10509 IADDR UNUSED pc = abuf->addr;
10510 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10511
10512{
10513frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10514{
10515 SI tmp_tmp;
10516 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10517 {
10518 USI opval = tmp_tmp;
10519 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10520 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10521 }
10522if (EQSI (FLD (f_ccond), 0)) {
10523if (NESI (tmp_tmp, 0)) {
10524 {
10525 USI opval = GET_H_SPR (((UINT) 272));
10526 sim_queue_pc_write (current_cpu, opval);
10527 written |= (1 << 5);
10528 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10529 }
10530}
10531} else {
10532if (EQSI (tmp_tmp, 0)) {
10533 {
10534 USI opval = GET_H_SPR (((UINT) 272));
10535 sim_queue_pc_write (current_cpu, opval);
10536 written |= (1 << 5);
10537 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10538 }
10539}
10540}
10541}
10542}
10543
10544 abuf->written = written;
10545 return vpc;
10546#undef FLD
10547}
10548
10549/* fcbnolr: fcbnolr$pack$hint_not_taken */
10550
10551static SEM_PC
10552SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10553{
10554#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10556 int UNUSED written = 0;
10557 IADDR UNUSED pc = abuf->addr;
10558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10559
10560{
10561frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10562{
10563 SI tmp_tmp;
10564 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10565 {
10566 USI opval = tmp_tmp;
10567 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10568 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10569 }
10570((void) 0); /*nop*/
10571}
10572}
10573
10574 return vpc;
10575#undef FLD
10576}
10577
10578/* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10579
10580static SEM_PC
10581SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10582{
10583#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10585 int UNUSED written = 0;
10586 IADDR UNUSED pc = abuf->addr;
10587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10588
10589{
10590frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10591{
10592 SI tmp_tmp;
10593 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10594 {
10595 USI opval = tmp_tmp;
10596 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10597 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10598 }
10599if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10600if (EQSI (FLD (f_ccond), 0)) {
10601if (NESI (tmp_tmp, 0)) {
10602 {
10603 USI opval = GET_H_SPR (((UINT) 272));
10604 sim_queue_pc_write (current_cpu, opval);
10605 written |= (1 << 6);
10606 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10607 }
10608}
10609} else {
10610if (EQSI (tmp_tmp, 0)) {
10611 {
10612 USI opval = GET_H_SPR (((UINT) 272));
10613 sim_queue_pc_write (current_cpu, opval);
10614 written |= (1 << 6);
10615 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10616 }
10617}
10618}
10619}
10620}
10621}
10622
10623 abuf->written = written;
10624 return vpc;
10625#undef FLD
10626}
10627
10628/* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10629
10630static SEM_PC
10631SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10632{
10633#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10635 int UNUSED written = 0;
10636 IADDR UNUSED pc = abuf->addr;
10637 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10638
10639{
10640frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10641{
10642 SI tmp_tmp;
10643 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10644 {
10645 USI opval = tmp_tmp;
10646 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10647 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10648 }
10649if (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))))) {
10650if (EQSI (FLD (f_ccond), 0)) {
10651if (NESI (tmp_tmp, 0)) {
10652 {
10653 USI opval = GET_H_SPR (((UINT) 272));
10654 sim_queue_pc_write (current_cpu, opval);
10655 written |= (1 << 6);
10656 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10657 }
10658}
10659} else {
10660if (EQSI (tmp_tmp, 0)) {
10661 {
10662 USI opval = GET_H_SPR (((UINT) 272));
10663 sim_queue_pc_write (current_cpu, opval);
10664 written |= (1 << 6);
10665 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10666 }
10667}
10668}
10669}
10670}
10671}
10672
10673 abuf->written = written;
10674 return vpc;
10675#undef FLD
10676}
10677
10678/* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10679
10680static SEM_PC
10681SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10682{
10683#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10685 int UNUSED written = 0;
10686 IADDR UNUSED pc = abuf->addr;
10687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10688
10689{
10690frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10691{
10692 SI tmp_tmp;
10693 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10694 {
10695 USI opval = tmp_tmp;
10696 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10697 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10698 }
10699if (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)))) {
10700if (EQSI (FLD (f_ccond), 0)) {
10701if (NESI (tmp_tmp, 0)) {
10702 {
10703 USI opval = GET_H_SPR (((UINT) 272));
10704 sim_queue_pc_write (current_cpu, opval);
10705 written |= (1 << 6);
10706 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10707 }
10708}
10709} else {
10710if (EQSI (tmp_tmp, 0)) {
10711 {
10712 USI opval = GET_H_SPR (((UINT) 272));
10713 sim_queue_pc_write (current_cpu, opval);
10714 written |= (1 << 6);
10715 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10716 }
10717}
10718}
10719}
10720}
10721}
10722
10723 abuf->written = written;
10724 return vpc;
10725#undef FLD
10726}
10727
10728/* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10729
10730static SEM_PC
10731SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10732{
10733#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10735 int UNUSED written = 0;
10736 IADDR UNUSED pc = abuf->addr;
10737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10738
10739{
10740frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10741{
10742 SI tmp_tmp;
10743 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10744 {
10745 USI opval = tmp_tmp;
10746 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10747 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10748 }
10749if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10750if (EQSI (FLD (f_ccond), 0)) {
10751if (NESI (tmp_tmp, 0)) {
10752 {
10753 USI opval = GET_H_SPR (((UINT) 272));
10754 sim_queue_pc_write (current_cpu, opval);
10755 written |= (1 << 6);
10756 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10757 }
10758}
10759} else {
10760if (EQSI (tmp_tmp, 0)) {
10761 {
10762 USI opval = GET_H_SPR (((UINT) 272));
10763 sim_queue_pc_write (current_cpu, opval);
10764 written |= (1 << 6);
10765 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10766 }
10767}
10768}
10769}
10770}
10771}
10772
10773 abuf->written = written;
10774 return vpc;
10775#undef FLD
10776}
10777
10778/* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10779
10780static SEM_PC
10781SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10782{
10783#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10785 int UNUSED written = 0;
10786 IADDR UNUSED pc = abuf->addr;
10787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10788
10789{
10790frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10791{
10792 SI tmp_tmp;
10793 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10794 {
10795 USI opval = tmp_tmp;
10796 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10797 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10798 }
10799if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10800if (EQSI (FLD (f_ccond), 0)) {
10801if (NESI (tmp_tmp, 0)) {
10802 {
10803 USI opval = GET_H_SPR (((UINT) 272));
10804 sim_queue_pc_write (current_cpu, opval);
10805 written |= (1 << 6);
10806 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10807 }
10808}
10809} else {
10810if (EQSI (tmp_tmp, 0)) {
10811 {
10812 USI opval = GET_H_SPR (((UINT) 272));
10813 sim_queue_pc_write (current_cpu, opval);
10814 written |= (1 << 6);
10815 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10816 }
10817}
10818}
10819}
10820}
10821}
10822
10823 abuf->written = written;
10824 return vpc;
10825#undef FLD
10826}
10827
10828/* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10829
10830static SEM_PC
10831SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10832{
10833#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10835 int UNUSED written = 0;
10836 IADDR UNUSED pc = abuf->addr;
10837 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10838
10839{
10840frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10841{
10842 SI tmp_tmp;
10843 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10844 {
10845 USI opval = tmp_tmp;
10846 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10847 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10848 }
10849if (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)))) {
10850if (EQSI (FLD (f_ccond), 0)) {
10851if (NESI (tmp_tmp, 0)) {
10852 {
10853 USI opval = GET_H_SPR (((UINT) 272));
10854 sim_queue_pc_write (current_cpu, opval);
10855 written |= (1 << 6);
10856 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10857 }
10858}
10859} else {
10860if (EQSI (tmp_tmp, 0)) {
10861 {
10862 USI opval = GET_H_SPR (((UINT) 272));
10863 sim_queue_pc_write (current_cpu, opval);
10864 written |= (1 << 6);
10865 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10866 }
10867}
10868}
10869}
10870}
10871}
10872
10873 abuf->written = written;
10874 return vpc;
10875#undef FLD
10876}
10877
10878/* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10879
10880static SEM_PC
10881SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10882{
10883#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10885 int UNUSED written = 0;
10886 IADDR UNUSED pc = abuf->addr;
10887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10888
10889{
10890frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10891{
10892 SI tmp_tmp;
10893 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10894 {
10895 USI opval = tmp_tmp;
10896 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10897 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10898 }
10899if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10900if (EQSI (FLD (f_ccond), 0)) {
10901if (NESI (tmp_tmp, 0)) {
10902 {
10903 USI opval = GET_H_SPR (((UINT) 272));
10904 sim_queue_pc_write (current_cpu, opval);
10905 written |= (1 << 6);
10906 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10907 }
10908}
10909} else {
10910if (EQSI (tmp_tmp, 0)) {
10911 {
10912 USI opval = GET_H_SPR (((UINT) 272));
10913 sim_queue_pc_write (current_cpu, opval);
10914 written |= (1 << 6);
10915 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10916 }
10917}
10918}
10919}
10920}
10921}
10922
10923 abuf->written = written;
10924 return vpc;
10925#undef FLD
10926}
10927
10928/* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
10929
10930static SEM_PC
10931SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10932{
10933#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10935 int UNUSED written = 0;
10936 IADDR UNUSED pc = abuf->addr;
10937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10938
10939{
10940frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10941{
10942 SI tmp_tmp;
10943 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10944 {
10945 USI opval = tmp_tmp;
10946 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10947 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10948 }
10949if (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))))) {
10950if (EQSI (FLD (f_ccond), 0)) {
10951if (NESI (tmp_tmp, 0)) {
10952 {
10953 USI opval = GET_H_SPR (((UINT) 272));
10954 sim_queue_pc_write (current_cpu, opval);
10955 written |= (1 << 6);
10956 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10957 }
10958}
10959} else {
10960if (EQSI (tmp_tmp, 0)) {
10961 {
10962 USI opval = GET_H_SPR (((UINT) 272));
10963 sim_queue_pc_write (current_cpu, opval);
10964 written |= (1 << 6);
10965 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10966 }
10967}
10968}
10969}
10970}
10971}
10972
10973 abuf->written = written;
10974 return vpc;
10975#undef FLD
10976}
10977
10978/* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
10979
10980static SEM_PC
10981SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10982{
10983#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10985 int UNUSED written = 0;
10986 IADDR UNUSED pc = abuf->addr;
10987 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10988
10989{
10990frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10991{
10992 SI tmp_tmp;
10993 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10994 {
10995 USI opval = tmp_tmp;
10996 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10997 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10998 }
10999if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
11000if (EQSI (FLD (f_ccond), 0)) {
11001if (NESI (tmp_tmp, 0)) {
11002 {
11003 USI opval = GET_H_SPR (((UINT) 272));
11004 sim_queue_pc_write (current_cpu, opval);
11005 written |= (1 << 6);
11006 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11007 }
11008}
11009} else {
11010if (EQSI (tmp_tmp, 0)) {
11011 {
11012 USI opval = GET_H_SPR (((UINT) 272));
11013 sim_queue_pc_write (current_cpu, opval);
11014 written |= (1 << 6);
11015 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11016 }
11017}
11018}
11019}
11020}
11021}
11022
11023 abuf->written = written;
11024 return vpc;
11025#undef FLD
11026}
11027
11028/* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11029
11030static SEM_PC
11031SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11032{
11033#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11035 int UNUSED written = 0;
11036 IADDR UNUSED pc = abuf->addr;
11037 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11038
11039{
11040frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11041{
11042 SI tmp_tmp;
11043 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11044 {
11045 USI opval = tmp_tmp;
11046 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11047 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11048 }
11049if (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)))) {
11050if (EQSI (FLD (f_ccond), 0)) {
11051if (NESI (tmp_tmp, 0)) {
11052 {
11053 USI opval = GET_H_SPR (((UINT) 272));
11054 sim_queue_pc_write (current_cpu, opval);
11055 written |= (1 << 6);
11056 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11057 }
11058}
11059} else {
11060if (EQSI (tmp_tmp, 0)) {
11061 {
11062 USI opval = GET_H_SPR (((UINT) 272));
11063 sim_queue_pc_write (current_cpu, opval);
11064 written |= (1 << 6);
11065 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11066 }
11067}
11068}
11069}
11070}
11071}
11072
11073 abuf->written = written;
11074 return vpc;
11075#undef FLD
11076}
11077
11078/* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11079
11080static SEM_PC
11081SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11082{
11083#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11085 int UNUSED written = 0;
11086 IADDR UNUSED pc = abuf->addr;
11087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11088
11089{
11090frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11091{
11092 SI tmp_tmp;
11093 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11094 {
11095 USI opval = tmp_tmp;
11096 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11097 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11098 }
11099if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11100if (EQSI (FLD (f_ccond), 0)) {
11101if (NESI (tmp_tmp, 0)) {
11102 {
11103 USI opval = GET_H_SPR (((UINT) 272));
11104 sim_queue_pc_write (current_cpu, opval);
11105 written |= (1 << 6);
11106 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11107 }
11108}
11109} else {
11110if (EQSI (tmp_tmp, 0)) {
11111 {
11112 USI opval = GET_H_SPR (((UINT) 272));
11113 sim_queue_pc_write (current_cpu, opval);
11114 written |= (1 << 6);
11115 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11116 }
11117}
11118}
11119}
11120}
11121}
11122
11123 abuf->written = written;
11124 return vpc;
11125#undef FLD
11126}
11127
11128/* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11129
11130static SEM_PC
11131SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11132{
11133#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11135 int UNUSED written = 0;
11136 IADDR UNUSED pc = abuf->addr;
11137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11138
11139{
11140frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11141{
11142 SI tmp_tmp;
11143 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11144 {
11145 USI opval = tmp_tmp;
11146 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11147 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11148 }
11149if (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))))) {
11150if (EQSI (FLD (f_ccond), 0)) {
11151if (NESI (tmp_tmp, 0)) {
11152 {
11153 USI opval = GET_H_SPR (((UINT) 272));
11154 sim_queue_pc_write (current_cpu, opval);
11155 written |= (1 << 6);
11156 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11157 }
11158}
11159} else {
11160if (EQSI (tmp_tmp, 0)) {
11161 {
11162 USI opval = GET_H_SPR (((UINT) 272));
11163 sim_queue_pc_write (current_cpu, opval);
11164 written |= (1 << 6);
11165 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11166 }
11167}
11168}
11169}
11170}
11171}
11172
11173 abuf->written = written;
11174 return vpc;
11175#undef FLD
11176}
11177
11178/* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11179
11180static SEM_PC
11181SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11182{
11183#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11185 int UNUSED written = 0;
11186 IADDR UNUSED pc = abuf->addr;
11187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11188
11189{
11190frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11191{
11192 SI tmp_tmp;
11193 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11194 {
11195 USI opval = tmp_tmp;
11196 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11197 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11198 }
11199if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11200if (EQSI (FLD (f_ccond), 0)) {
11201if (NESI (tmp_tmp, 0)) {
11202 {
11203 USI opval = GET_H_SPR (((UINT) 272));
11204 sim_queue_pc_write (current_cpu, opval);
11205 written |= (1 << 6);
11206 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11207 }
11208}
11209} else {
11210if (EQSI (tmp_tmp, 0)) {
11211 {
11212 USI opval = GET_H_SPR (((UINT) 272));
11213 sim_queue_pc_write (current_cpu, opval);
11214 written |= (1 << 6);
11215 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11216 }
11217}
11218}
11219}
11220}
11221}
11222
11223 abuf->written = written;
11224 return vpc;
11225#undef FLD
11226}
11227
11228/* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11229
11230static SEM_PC
11231SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11232{
11233#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11235 int UNUSED written = 0;
11236 IADDR UNUSED pc = abuf->addr;
11237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11238
11239{
11240frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11241{
11242 SI tmp_tmp;
11243 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11244 {
11245 USI opval = tmp_tmp;
11246 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11247 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11248 }
11249if (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))))) {
11250if (EQSI (FLD (f_ccond), 0)) {
11251if (NESI (tmp_tmp, 0)) {
11252 {
11253 USI opval = GET_H_SPR (((UINT) 272));
11254 sim_queue_pc_write (current_cpu, opval);
11255 written |= (1 << 6);
11256 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11257 }
11258}
11259} else {
11260if (EQSI (tmp_tmp, 0)) {
11261 {
11262 USI opval = GET_H_SPR (((UINT) 272));
11263 sim_queue_pc_write (current_cpu, opval);
11264 written |= (1 << 6);
11265 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11266 }
11267}
11268}
11269}
11270}
11271}
11272
11273 abuf->written = written;
11274 return vpc;
11275#undef FLD
11276}
11277
11278/* jmpl: jmpl$pack @($GRi,$GRj) */
11279
11280static SEM_PC
11281SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11282{
11283#define FLD(f) abuf->fields.sfmt_cjmpl.f
11284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11285 int UNUSED written = 0;
11286 IADDR UNUSED pc = abuf->addr;
11287 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11288
11289{
11290if (EQSI (FLD (f_LI), 1)) {
11291frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11292}
11293 {
11294 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11295 sim_queue_pc_write (current_cpu, opval);
11296 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11297 }
11298frvbf_model_branch (current_cpu, pc, 2);
11299}
11300
11301 return vpc;
11302#undef FLD
11303}
11304
79e59fe6 11305/* calll: calll$pack $callann($GRi,$GRj) */
b34f6357
DB
11306
11307static SEM_PC
11308SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11309{
11310#define FLD(f) abuf->fields.sfmt_cjmpl.f
11311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11312 int UNUSED written = 0;
11313 IADDR UNUSED pc = abuf->addr;
11314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11315
11316{
11317if (EQSI (FLD (f_LI), 1)) {
11318frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11319}
11320 {
11321 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11322 sim_queue_pc_write (current_cpu, opval);
11323 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11324 }
11325frvbf_model_branch (current_cpu, pc, 2);
11326}
11327
11328 return vpc;
11329#undef FLD
11330}
11331
11332/* jmpil: jmpil$pack @($GRi,$s12) */
11333
11334static SEM_PC
11335SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11336{
11337#define FLD(f) abuf->fields.sfmt_jmpil.f
11338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11339 int UNUSED written = 0;
11340 IADDR UNUSED pc = abuf->addr;
11341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11342
11343{
11344if (EQSI (FLD (f_LI), 1)) {
11345frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11346}
11347 {
11348 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11349 sim_queue_pc_write (current_cpu, opval);
11350 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11351 }
11352frvbf_model_branch (current_cpu, pc, 2);
11353}
11354
11355 return vpc;
11356#undef FLD
11357}
11358
11359/* callil: callil$pack @($GRi,$s12) */
11360
11361static SEM_PC
11362SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11363{
11364#define FLD(f) abuf->fields.sfmt_jmpil.f
11365 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11366 int UNUSED written = 0;
11367 IADDR UNUSED pc = abuf->addr;
11368 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11369
11370{
11371if (EQSI (FLD (f_LI), 1)) {
11372frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11373}
11374 {
11375 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11376 sim_queue_pc_write (current_cpu, opval);
11377 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11378 }
11379frvbf_model_branch (current_cpu, pc, 2);
11380}
11381
11382 return vpc;
11383#undef FLD
11384}
11385
11386/* call: call$pack $label24 */
11387
11388static SEM_PC
11389SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11390{
11391#define FLD(f) abuf->fields.sfmt_call.f
11392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11393 int UNUSED written = 0;
11394 IADDR UNUSED pc = abuf->addr;
11395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11396
11397{
11398frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11399 {
11400 USI opval = FLD (i_label24);
11401 sim_queue_pc_write (current_cpu, opval);
11402 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11403 }
11404frvbf_model_branch (current_cpu, pc, 2);
11405}
11406
11407 return vpc;
11408#undef FLD
11409}
11410
11411/* rett: rett$pack $debug */
11412
11413static SEM_PC
11414SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11415{
11416#define FLD(f) abuf->fields.sfmt_rett.f
11417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11418 int UNUSED written = 0;
11419 IADDR UNUSED pc = abuf->addr;
11420 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11421
11422{
11423 {
11424 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11425 sim_queue_pc_write (current_cpu, opval);
11426 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11427 }
11428frvbf_model_branch (current_cpu, pc, 2);
11429}
11430
11431 return vpc;
11432#undef FLD
11433}
11434
11435/* rei: rei$pack $eir */
11436
11437static SEM_PC
11438SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11439{
11440#define FLD(f) abuf->fields.fmt_empty.f
11441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11442 int UNUSED written = 0;
11443 IADDR UNUSED pc = abuf->addr;
11444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11445
11446((void) 0); /*nop*/
11447
11448 return vpc;
11449#undef FLD
11450}
11451
11452/* tra: tra$pack $GRi,$GRj */
11453
11454static SEM_PC
11455SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11456{
11457#define FLD(f) abuf->fields.sfmt_ftne.f
11458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11459 int UNUSED written = 0;
11460 IADDR UNUSED pc = abuf->addr;
11461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11462
11463{
11464; /*clobber*/
11465; /*clobber*/
11466; /*clobber*/
11467; /*clobber*/
11468if (NEBI (CPU (h_psr_esr), 0)) {
11469{
11470; /*clobber*/
11471; /*clobber*/
11472; /*clobber*/
11473; /*clobber*/
11474}
11475}
11476frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11477}
11478
11479 abuf->written = written;
11480 return vpc;
11481#undef FLD
11482}
11483
11484/* tno: tno$pack */
11485
11486static SEM_PC
11487SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11488{
11489#define FLD(f) abuf->fields.fmt_empty.f
11490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11491 int UNUSED written = 0;
11492 IADDR UNUSED pc = abuf->addr;
11493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11494
11495((void) 0); /*nop*/
11496
11497 return vpc;
11498#undef FLD
11499}
11500
11501/* teq: teq$pack $ICCi_2,$GRi,$GRj */
11502
11503static SEM_PC
11504SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11505{
11506#define FLD(f) abuf->fields.sfmt_teq.f
11507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11508 int UNUSED written = 0;
11509 IADDR UNUSED pc = abuf->addr;
11510 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11511
11512if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11513{
11514; /*clobber*/
11515; /*clobber*/
11516; /*clobber*/
11517; /*clobber*/
11518if (NEBI (CPU (h_psr_esr), 0)) {
11519{
11520; /*clobber*/
11521; /*clobber*/
11522; /*clobber*/
11523; /*clobber*/
11524}
11525}
11526frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11527}
11528}
11529
11530 abuf->written = written;
11531 return vpc;
11532#undef FLD
11533}
11534
11535/* tne: tne$pack $ICCi_2,$GRi,$GRj */
11536
11537static SEM_PC
11538SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11539{
11540#define FLD(f) abuf->fields.sfmt_teq.f
11541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11542 int UNUSED written = 0;
11543 IADDR UNUSED pc = abuf->addr;
11544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11545
11546if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11547{
11548; /*clobber*/
11549; /*clobber*/
11550; /*clobber*/
11551; /*clobber*/
11552if (NEBI (CPU (h_psr_esr), 0)) {
11553{
11554; /*clobber*/
11555; /*clobber*/
11556; /*clobber*/
11557; /*clobber*/
11558}
11559}
11560frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11561}
11562}
11563
11564 abuf->written = written;
11565 return vpc;
11566#undef FLD
11567}
11568
11569/* tle: tle$pack $ICCi_2,$GRi,$GRj */
11570
11571static SEM_PC
11572SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11573{
11574#define FLD(f) abuf->fields.sfmt_teq.f
11575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11576 int UNUSED written = 0;
11577 IADDR UNUSED pc = abuf->addr;
11578 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11579
11580if (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))))) {
11581{
11582; /*clobber*/
11583; /*clobber*/
11584; /*clobber*/
11585; /*clobber*/
11586if (NEBI (CPU (h_psr_esr), 0)) {
11587{
11588; /*clobber*/
11589; /*clobber*/
11590; /*clobber*/
11591; /*clobber*/
11592}
11593}
11594frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11595}
11596}
11597
11598 abuf->written = written;
11599 return vpc;
11600#undef FLD
11601}
11602
11603/* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11604
11605static SEM_PC
11606SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11607{
11608#define FLD(f) abuf->fields.sfmt_teq.f
11609 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11610 int UNUSED written = 0;
11611 IADDR UNUSED pc = abuf->addr;
11612 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11613
11614if (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)))))) {
11615{
11616; /*clobber*/
11617; /*clobber*/
11618; /*clobber*/
11619; /*clobber*/
11620if (NEBI (CPU (h_psr_esr), 0)) {
11621{
11622; /*clobber*/
11623; /*clobber*/
11624; /*clobber*/
11625; /*clobber*/
11626}
11627}
11628frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11629}
11630}
11631
11632 abuf->written = written;
11633 return vpc;
11634#undef FLD
11635}
11636
11637/* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11638
11639static SEM_PC
11640SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11641{
11642#define FLD(f) abuf->fields.sfmt_teq.f
11643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11644 int UNUSED written = 0;
11645 IADDR UNUSED pc = abuf->addr;
11646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11647
11648if (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)))) {
11649{
11650; /*clobber*/
11651; /*clobber*/
11652; /*clobber*/
11653; /*clobber*/
11654if (NEBI (CPU (h_psr_esr), 0)) {
11655{
11656; /*clobber*/
11657; /*clobber*/
11658; /*clobber*/
11659; /*clobber*/
11660}
11661}
11662frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11663}
11664}
11665
11666 abuf->written = written;
11667 return vpc;
11668#undef FLD
11669}
11670
11671/* tge: tge$pack $ICCi_2,$GRi,$GRj */
11672
11673static SEM_PC
11674SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11675{
11676#define FLD(f) abuf->fields.sfmt_teq.f
11677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11678 int UNUSED written = 0;
11679 IADDR UNUSED pc = abuf->addr;
11680 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11681
11682if (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))))) {
11683{
11684; /*clobber*/
11685; /*clobber*/
11686; /*clobber*/
11687; /*clobber*/
11688if (NEBI (CPU (h_psr_esr), 0)) {
11689{
11690; /*clobber*/
11691; /*clobber*/
11692; /*clobber*/
11693; /*clobber*/
11694}
11695}
11696frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11697}
11698}
11699
11700 abuf->written = written;
11701 return vpc;
11702#undef FLD
11703}
11704
11705/* tls: tls$pack $ICCi_2,$GRi,$GRj */
11706
11707static SEM_PC
11708SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11709{
11710#define FLD(f) abuf->fields.sfmt_teq.f
11711 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11712 int UNUSED written = 0;
11713 IADDR UNUSED pc = abuf->addr;
11714 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11715
11716if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11717{
11718; /*clobber*/
11719; /*clobber*/
11720; /*clobber*/
11721; /*clobber*/
11722if (NEBI (CPU (h_psr_esr), 0)) {
11723{
11724; /*clobber*/
11725; /*clobber*/
11726; /*clobber*/
11727; /*clobber*/
11728}
11729}
11730frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11731}
11732}
11733
11734 abuf->written = written;
11735 return vpc;
11736#undef FLD
11737}
11738
11739/* thi: thi$pack $ICCi_2,$GRi,$GRj */
11740
11741static SEM_PC
11742SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11743{
11744#define FLD(f) abuf->fields.sfmt_teq.f
11745 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11746 int UNUSED written = 0;
11747 IADDR UNUSED pc = abuf->addr;
11748 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11749
11750if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
11751{
11752; /*clobber*/
11753; /*clobber*/
11754; /*clobber*/
11755; /*clobber*/
11756if (NEBI (CPU (h_psr_esr), 0)) {
11757{
11758; /*clobber*/
11759; /*clobber*/
11760; /*clobber*/
11761; /*clobber*/
11762}
11763}
11764frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11765}
11766}
11767
11768 abuf->written = written;
11769 return vpc;
11770#undef FLD
11771}
11772
11773/* tc: tc$pack $ICCi_2,$GRi,$GRj */
11774
11775static SEM_PC
11776SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11777{
11778#define FLD(f) abuf->fields.sfmt_teq.f
11779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11780 int UNUSED written = 0;
11781 IADDR UNUSED pc = abuf->addr;
11782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11783
11784if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11785{
11786; /*clobber*/
11787; /*clobber*/
11788; /*clobber*/
11789; /*clobber*/
11790if (NEBI (CPU (h_psr_esr), 0)) {
11791{
11792; /*clobber*/
11793; /*clobber*/
11794; /*clobber*/
11795; /*clobber*/
11796}
11797}
11798frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11799}
11800}
11801
11802 abuf->written = written;
11803 return vpc;
11804#undef FLD
11805}
11806
11807/* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11808
11809static SEM_PC
11810SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11811{
11812#define FLD(f) abuf->fields.sfmt_teq.f
11813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11814 int UNUSED written = 0;
11815 IADDR UNUSED pc = abuf->addr;
11816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11817
11818if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11819{
11820; /*clobber*/
11821; /*clobber*/
11822; /*clobber*/
11823; /*clobber*/
11824if (NEBI (CPU (h_psr_esr), 0)) {
11825{
11826; /*clobber*/
11827; /*clobber*/
11828; /*clobber*/
11829; /*clobber*/
11830}
11831}
11832frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11833}
11834}
11835
11836 abuf->written = written;
11837 return vpc;
11838#undef FLD
11839}
11840
11841/* tn: tn$pack $ICCi_2,$GRi,$GRj */
11842
11843static SEM_PC
11844SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11845{
11846#define FLD(f) abuf->fields.sfmt_teq.f
11847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11848 int UNUSED written = 0;
11849 IADDR UNUSED pc = abuf->addr;
11850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11851
11852if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11853{
11854; /*clobber*/
11855; /*clobber*/
11856; /*clobber*/
11857; /*clobber*/
11858if (NEBI (CPU (h_psr_esr), 0)) {
11859{
11860; /*clobber*/
11861; /*clobber*/
11862; /*clobber*/
11863; /*clobber*/
11864}
11865}
11866frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11867}
11868}
11869
11870 abuf->written = written;
11871 return vpc;
11872#undef FLD
11873}
11874
11875/* tp: tp$pack $ICCi_2,$GRi,$GRj */
11876
11877static SEM_PC
11878SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11879{
11880#define FLD(f) abuf->fields.sfmt_teq.f
11881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11882 int UNUSED written = 0;
11883 IADDR UNUSED pc = abuf->addr;
11884 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11885
11886if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11887{
11888; /*clobber*/
11889; /*clobber*/
11890; /*clobber*/
11891; /*clobber*/
11892if (NEBI (CPU (h_psr_esr), 0)) {
11893{
11894; /*clobber*/
11895; /*clobber*/
11896; /*clobber*/
11897; /*clobber*/
11898}
11899}
11900frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11901}
11902}
11903
11904 abuf->written = written;
11905 return vpc;
11906#undef FLD
11907}
11908
11909/* tv: tv$pack $ICCi_2,$GRi,$GRj */
11910
11911static SEM_PC
11912SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11913{
11914#define FLD(f) abuf->fields.sfmt_teq.f
11915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11916 int UNUSED written = 0;
11917 IADDR UNUSED pc = abuf->addr;
11918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11919
11920if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
11921{
11922; /*clobber*/
11923; /*clobber*/
11924; /*clobber*/
11925; /*clobber*/
11926if (NEBI (CPU (h_psr_esr), 0)) {
11927{
11928; /*clobber*/
11929; /*clobber*/
11930; /*clobber*/
11931; /*clobber*/
11932}
11933}
11934frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11935}
11936}
11937
11938 abuf->written = written;
11939 return vpc;
11940#undef FLD
11941}
11942
11943/* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
11944
11945static SEM_PC
11946SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11947{
11948#define FLD(f) abuf->fields.sfmt_teq.f
11949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11950 int UNUSED written = 0;
11951 IADDR UNUSED pc = abuf->addr;
11952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11953
11954if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11955{
11956; /*clobber*/
11957; /*clobber*/
11958; /*clobber*/
11959; /*clobber*/
11960if (NEBI (CPU (h_psr_esr), 0)) {
11961{
11962; /*clobber*/
11963; /*clobber*/
11964; /*clobber*/
11965; /*clobber*/
11966}
11967}
11968frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11969}
11970}
11971
11972 abuf->written = written;
11973 return vpc;
11974#undef FLD
11975}
11976
11977/* ftra: ftra$pack $GRi,$GRj */
11978
11979static SEM_PC
11980SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11981{
11982#define FLD(f) abuf->fields.sfmt_ftne.f
11983 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11984 int UNUSED written = 0;
11985 IADDR UNUSED pc = abuf->addr;
11986 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11987
11988{
11989; /*clobber*/
11990; /*clobber*/
11991; /*clobber*/
11992; /*clobber*/
11993if (NEBI (CPU (h_psr_esr), 0)) {
11994{
11995; /*clobber*/
11996; /*clobber*/
11997; /*clobber*/
11998; /*clobber*/
11999}
12000}
12001frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12002}
12003
12004 abuf->written = written;
12005 return vpc;
12006#undef FLD
12007}
12008
12009/* ftno: ftno$pack */
12010
12011static SEM_PC
12012SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12013{
12014#define FLD(f) abuf->fields.fmt_empty.f
12015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12016 int UNUSED written = 0;
12017 IADDR UNUSED pc = abuf->addr;
12018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12019
12020((void) 0); /*nop*/
12021
12022 return vpc;
12023#undef FLD
12024}
12025
12026/* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12027
12028static SEM_PC
12029SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12030{
12031#define FLD(f) abuf->fields.sfmt_ftne.f
12032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12033 int UNUSED written = 0;
12034 IADDR UNUSED pc = abuf->addr;
12035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12036
12037if (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))))) {
12038{
12039; /*clobber*/
12040; /*clobber*/
12041; /*clobber*/
12042; /*clobber*/
12043if (NEBI (CPU (h_psr_esr), 0)) {
12044{
12045; /*clobber*/
12046; /*clobber*/
12047; /*clobber*/
12048; /*clobber*/
12049}
12050}
12051frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12052}
12053}
12054
12055 abuf->written = written;
12056 return vpc;
12057#undef FLD
12058}
12059
12060/* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12061
12062static SEM_PC
12063SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12064{
12065#define FLD(f) abuf->fields.sfmt_ftne.f
12066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12067 int UNUSED written = 0;
12068 IADDR UNUSED pc = abuf->addr;
12069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12070
12071if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12072{
12073; /*clobber*/
12074; /*clobber*/
12075; /*clobber*/
12076; /*clobber*/
12077if (NEBI (CPU (h_psr_esr), 0)) {
12078{
12079; /*clobber*/
12080; /*clobber*/
12081; /*clobber*/
12082; /*clobber*/
12083}
12084}
12085frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12086}
12087}
12088
12089 abuf->written = written;
12090 return vpc;
12091#undef FLD
12092}
12093
12094/* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12095
12096static SEM_PC
12097SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12098{
12099#define FLD(f) abuf->fields.sfmt_ftne.f
12100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12101 int UNUSED written = 0;
12102 IADDR UNUSED pc = abuf->addr;
12103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12104
12105if (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)))) {
12106{
12107; /*clobber*/
12108; /*clobber*/
12109; /*clobber*/
12110; /*clobber*/
12111if (NEBI (CPU (h_psr_esr), 0)) {
12112{
12113; /*clobber*/
12114; /*clobber*/
12115; /*clobber*/
12116; /*clobber*/
12117}
12118}
12119frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12120}
12121}
12122
12123 abuf->written = written;
12124 return vpc;
12125#undef FLD
12126}
12127
12128/* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12129
12130static SEM_PC
12131SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12132{
12133#define FLD(f) abuf->fields.sfmt_ftne.f
12134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12135 int UNUSED written = 0;
12136 IADDR UNUSED pc = abuf->addr;
12137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12138
12139if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12140{
12141; /*clobber*/
12142; /*clobber*/
12143; /*clobber*/
12144; /*clobber*/
12145if (NEBI (CPU (h_psr_esr), 0)) {
12146{
12147; /*clobber*/
12148; /*clobber*/
12149; /*clobber*/
12150; /*clobber*/
12151}
12152}
12153frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12154}
12155}
12156
12157 abuf->written = written;
12158 return vpc;
12159#undef FLD
12160}
12161
12162/* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12163
12164static SEM_PC
12165SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12166{
12167#define FLD(f) abuf->fields.sfmt_ftne.f
12168 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12169 int UNUSED written = 0;
12170 IADDR UNUSED pc = abuf->addr;
12171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12172
12173if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12174{
12175; /*clobber*/
12176; /*clobber*/
12177; /*clobber*/
12178; /*clobber*/
12179if (NEBI (CPU (h_psr_esr), 0)) {
12180{
12181; /*clobber*/
12182; /*clobber*/
12183; /*clobber*/
12184; /*clobber*/
12185}
12186}
12187frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12188}
12189}
12190
12191 abuf->written = written;
12192 return vpc;
12193#undef FLD
12194}
12195
12196/* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12197
12198static SEM_PC
12199SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12200{
12201#define FLD(f) abuf->fields.sfmt_ftne.f
12202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12203 int UNUSED written = 0;
12204 IADDR UNUSED pc = abuf->addr;
12205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12206
12207if (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)))) {
12208{
12209; /*clobber*/
12210; /*clobber*/
12211; /*clobber*/
12212; /*clobber*/
12213if (NEBI (CPU (h_psr_esr), 0)) {
12214{
12215; /*clobber*/
12216; /*clobber*/
12217; /*clobber*/
12218; /*clobber*/
12219}
12220}
12221frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12222}
12223}
12224
12225 abuf->written = written;
12226 return vpc;
12227#undef FLD
12228}
12229
12230/* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12231
12232static SEM_PC
12233SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12234{
12235#define FLD(f) abuf->fields.sfmt_ftne.f
12236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12237 int UNUSED written = 0;
12238 IADDR UNUSED pc = abuf->addr;
12239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12240
12241if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12242{
12243; /*clobber*/
12244; /*clobber*/
12245; /*clobber*/
12246; /*clobber*/
12247if (NEBI (CPU (h_psr_esr), 0)) {
12248{
12249; /*clobber*/
12250; /*clobber*/
12251; /*clobber*/
12252; /*clobber*/
12253}
12254}
12255frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12256}
12257}
12258
12259 abuf->written = written;
12260 return vpc;
12261#undef FLD
12262}
12263
12264/* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12265
12266static SEM_PC
12267SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12268{
12269#define FLD(f) abuf->fields.sfmt_ftne.f
12270 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12271 int UNUSED written = 0;
12272 IADDR UNUSED pc = abuf->addr;
12273 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12274
12275if (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))))) {
12276{
12277; /*clobber*/
12278; /*clobber*/
12279; /*clobber*/
12280; /*clobber*/
12281if (NEBI (CPU (h_psr_esr), 0)) {
12282{
12283; /*clobber*/
12284; /*clobber*/
12285; /*clobber*/
12286; /*clobber*/
12287}
12288}
12289frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12290}
12291}
12292
12293 abuf->written = written;
12294 return vpc;
12295#undef FLD
12296}
12297
12298/* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12299
12300static SEM_PC
12301SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12302{
12303#define FLD(f) abuf->fields.sfmt_ftne.f
12304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12305 int UNUSED written = 0;
12306 IADDR UNUSED pc = abuf->addr;
12307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12308
12309if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12310{
12311; /*clobber*/
12312; /*clobber*/
12313; /*clobber*/
12314; /*clobber*/
12315if (NEBI (CPU (h_psr_esr), 0)) {
12316{
12317; /*clobber*/
12318; /*clobber*/
12319; /*clobber*/
12320; /*clobber*/
12321}
12322}
12323frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12324}
12325}
12326
12327 abuf->written = written;
12328 return vpc;
12329#undef FLD
12330}
12331
12332/* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12333
12334static SEM_PC
12335SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12336{
12337#define FLD(f) abuf->fields.sfmt_ftne.f
12338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12339 int UNUSED written = 0;
12340 IADDR UNUSED pc = abuf->addr;
12341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12342
12343if (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)))) {
12344{
12345; /*clobber*/
12346; /*clobber*/
12347; /*clobber*/
12348; /*clobber*/
12349if (NEBI (CPU (h_psr_esr), 0)) {
12350{
12351; /*clobber*/
12352; /*clobber*/
12353; /*clobber*/
12354; /*clobber*/
12355}
12356}
12357frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12358}
12359}
12360
12361 abuf->written = written;
12362 return vpc;
12363#undef FLD
12364}
12365
12366/* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12367
12368static SEM_PC
12369SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12370{
12371#define FLD(f) abuf->fields.sfmt_ftne.f
12372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12373 int UNUSED written = 0;
12374 IADDR UNUSED pc = abuf->addr;
12375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12376
12377if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12378{
12379; /*clobber*/
12380; /*clobber*/
12381; /*clobber*/
12382; /*clobber*/
12383if (NEBI (CPU (h_psr_esr), 0)) {
12384{
12385; /*clobber*/
12386; /*clobber*/
12387; /*clobber*/
12388; /*clobber*/
12389}
12390}
12391frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12392}
12393}
12394
12395 abuf->written = written;
12396 return vpc;
12397#undef FLD
12398}
12399
12400/* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12401
12402static SEM_PC
12403SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12404{
12405#define FLD(f) abuf->fields.sfmt_ftne.f
12406 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12407 int UNUSED written = 0;
12408 IADDR UNUSED pc = abuf->addr;
12409 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12410
12411if (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))))) {
12412{
12413; /*clobber*/
12414; /*clobber*/
12415; /*clobber*/
12416; /*clobber*/
12417if (NEBI (CPU (h_psr_esr), 0)) {
12418{
12419; /*clobber*/
12420; /*clobber*/
12421; /*clobber*/
12422; /*clobber*/
12423}
12424}
12425frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12426}
12427}
12428
12429 abuf->written = written;
12430 return vpc;
12431#undef FLD
12432}
12433
12434/* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12435
12436static SEM_PC
12437SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12438{
12439#define FLD(f) abuf->fields.sfmt_ftne.f
12440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12441 int UNUSED written = 0;
12442 IADDR UNUSED pc = abuf->addr;
12443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12444
12445if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12446{
12447; /*clobber*/
12448; /*clobber*/
12449; /*clobber*/
12450; /*clobber*/
12451if (NEBI (CPU (h_psr_esr), 0)) {
12452{
12453; /*clobber*/
12454; /*clobber*/
12455; /*clobber*/
12456; /*clobber*/
12457}
12458}
12459frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12460}
12461}
12462
12463 abuf->written = written;
12464 return vpc;
12465#undef FLD
12466}
12467
12468/* fto: fto$pack $FCCi_2,$GRi,$GRj */
12469
12470static SEM_PC
12471SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12472{
12473#define FLD(f) abuf->fields.sfmt_ftne.f
12474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12475 int UNUSED written = 0;
12476 IADDR UNUSED pc = abuf->addr;
12477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12478
12479if (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))))) {
12480{
12481; /*clobber*/
12482; /*clobber*/
12483; /*clobber*/
12484; /*clobber*/
12485if (NEBI (CPU (h_psr_esr), 0)) {
12486{
12487; /*clobber*/
12488; /*clobber*/
12489; /*clobber*/
12490; /*clobber*/
12491}
12492}
12493frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12494}
12495}
12496
12497 abuf->written = written;
12498 return vpc;
12499#undef FLD
12500}
12501
12502/* tira: tira$pack $GRi,$s12 */
12503
12504static SEM_PC
12505SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12506{
12507#define FLD(f) abuf->fields.sfmt_ftine.f
12508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12509 int UNUSED written = 0;
12510 IADDR UNUSED pc = abuf->addr;
12511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12512
12513{
12514; /*clobber*/
12515; /*clobber*/
12516; /*clobber*/
12517; /*clobber*/
12518if (NEBI (CPU (h_psr_esr), 0)) {
12519{
12520; /*clobber*/
12521; /*clobber*/
12522; /*clobber*/
12523; /*clobber*/
12524}
12525}
12526frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12527}
12528
12529 abuf->written = written;
12530 return vpc;
12531#undef FLD
12532}
12533
12534/* tino: tino$pack */
12535
12536static SEM_PC
12537SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12538{
12539#define FLD(f) abuf->fields.fmt_empty.f
12540 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12541 int UNUSED written = 0;
12542 IADDR UNUSED pc = abuf->addr;
12543 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12544
12545((void) 0); /*nop*/
12546
12547 return vpc;
12548#undef FLD
12549}
12550
12551/* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12552
12553static SEM_PC
12554SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12555{
12556#define FLD(f) abuf->fields.sfmt_tieq.f
12557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12558 int UNUSED written = 0;
12559 IADDR UNUSED pc = abuf->addr;
12560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12561
12562if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12563{
12564; /*clobber*/
12565; /*clobber*/
12566; /*clobber*/
12567; /*clobber*/
12568if (NEBI (CPU (h_psr_esr), 0)) {
12569{
12570; /*clobber*/
12571; /*clobber*/
12572; /*clobber*/
12573; /*clobber*/
12574}
12575}
12576frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12577}
12578}
12579
12580 abuf->written = written;
12581 return vpc;
12582#undef FLD
12583}
12584
12585/* tine: tine$pack $ICCi_2,$GRi,$s12 */
12586
12587static SEM_PC
12588SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12589{
12590#define FLD(f) abuf->fields.sfmt_tieq.f
12591 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12592 int UNUSED written = 0;
12593 IADDR UNUSED pc = abuf->addr;
12594 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12595
12596if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12597{
12598; /*clobber*/
12599; /*clobber*/
12600; /*clobber*/
12601; /*clobber*/
12602if (NEBI (CPU (h_psr_esr), 0)) {
12603{
12604; /*clobber*/
12605; /*clobber*/
12606; /*clobber*/
12607; /*clobber*/
12608}
12609}
12610frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12611}
12612}
12613
12614 abuf->written = written;
12615 return vpc;
12616#undef FLD
12617}
12618
12619/* tile: tile$pack $ICCi_2,$GRi,$s12 */
12620
12621static SEM_PC
12622SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12623{
12624#define FLD(f) abuf->fields.sfmt_tieq.f
12625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12626 int UNUSED written = 0;
12627 IADDR UNUSED pc = abuf->addr;
12628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12629
12630if (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))))) {
12631{
12632; /*clobber*/
12633; /*clobber*/
12634; /*clobber*/
12635; /*clobber*/
12636if (NEBI (CPU (h_psr_esr), 0)) {
12637{
12638; /*clobber*/
12639; /*clobber*/
12640; /*clobber*/
12641; /*clobber*/
12642}
12643}
12644frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12645}
12646}
12647
12648 abuf->written = written;
12649 return vpc;
12650#undef FLD
12651}
12652
12653/* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12654
12655static SEM_PC
12656SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12657{
12658#define FLD(f) abuf->fields.sfmt_tieq.f
12659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12660 int UNUSED written = 0;
12661 IADDR UNUSED pc = abuf->addr;
12662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12663
12664if (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)))))) {
12665{
12666; /*clobber*/
12667; /*clobber*/
12668; /*clobber*/
12669; /*clobber*/
12670if (NEBI (CPU (h_psr_esr), 0)) {
12671{
12672; /*clobber*/
12673; /*clobber*/
12674; /*clobber*/
12675; /*clobber*/
12676}
12677}
12678frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12679}
12680}
12681
12682 abuf->written = written;
12683 return vpc;
12684#undef FLD
12685}
12686
12687/* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12688
12689static SEM_PC
12690SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12691{
12692#define FLD(f) abuf->fields.sfmt_tieq.f
12693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12694 int UNUSED written = 0;
12695 IADDR UNUSED pc = abuf->addr;
12696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12697
12698if (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)))) {
12699{
12700; /*clobber*/
12701; /*clobber*/
12702; /*clobber*/
12703; /*clobber*/
12704if (NEBI (CPU (h_psr_esr), 0)) {
12705{
12706; /*clobber*/
12707; /*clobber*/
12708; /*clobber*/
12709; /*clobber*/
12710}
12711}
12712frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12713}
12714}
12715
12716 abuf->written = written;
12717 return vpc;
12718#undef FLD
12719}
12720
12721/* tige: tige$pack $ICCi_2,$GRi,$s12 */
12722
12723static SEM_PC
12724SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12725{
12726#define FLD(f) abuf->fields.sfmt_tieq.f
12727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12728 int UNUSED written = 0;
12729 IADDR UNUSED pc = abuf->addr;
12730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12731
12732if (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))))) {
12733{
12734; /*clobber*/
12735; /*clobber*/
12736; /*clobber*/
12737; /*clobber*/
12738if (NEBI (CPU (h_psr_esr), 0)) {
12739{
12740; /*clobber*/
12741; /*clobber*/
12742; /*clobber*/
12743; /*clobber*/
12744}
12745}
12746frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12747}
12748}
12749
12750 abuf->written = written;
12751 return vpc;
12752#undef FLD
12753}
12754
12755/* tils: tils$pack $ICCi_2,$GRi,$s12 */
12756
12757static SEM_PC
12758SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12759{
12760#define FLD(f) abuf->fields.sfmt_tieq.f
12761 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12762 int UNUSED written = 0;
12763 IADDR UNUSED pc = abuf->addr;
12764 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12765
12766if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12767{
12768; /*clobber*/
12769; /*clobber*/
12770; /*clobber*/
12771; /*clobber*/
12772if (NEBI (CPU (h_psr_esr), 0)) {
12773{
12774; /*clobber*/
12775; /*clobber*/
12776; /*clobber*/
12777; /*clobber*/
12778}
12779}
12780frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12781}
12782}
12783
12784 abuf->written = written;
12785 return vpc;
12786#undef FLD
12787}
12788
12789/* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12790
12791static SEM_PC
12792SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12793{
12794#define FLD(f) abuf->fields.sfmt_tieq.f
12795 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12796 int UNUSED written = 0;
12797 IADDR UNUSED pc = abuf->addr;
12798 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12799
12800if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
12801{
12802; /*clobber*/
12803; /*clobber*/
12804; /*clobber*/
12805; /*clobber*/
12806if (NEBI (CPU (h_psr_esr), 0)) {
12807{
12808; /*clobber*/
12809; /*clobber*/
12810; /*clobber*/
12811; /*clobber*/
12812}
12813}
12814frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12815}
12816}
12817
12818 abuf->written = written;
12819 return vpc;
12820#undef FLD
12821}
12822
12823/* tic: tic$pack $ICCi_2,$GRi,$s12 */
12824
12825static SEM_PC
12826SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12827{
12828#define FLD(f) abuf->fields.sfmt_tieq.f
12829 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12830 int UNUSED written = 0;
12831 IADDR UNUSED pc = abuf->addr;
12832 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12833
12834if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12835{
12836; /*clobber*/
12837; /*clobber*/
12838; /*clobber*/
12839; /*clobber*/
12840if (NEBI (CPU (h_psr_esr), 0)) {
12841{
12842; /*clobber*/
12843; /*clobber*/
12844; /*clobber*/
12845; /*clobber*/
12846}
12847}
12848frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12849}
12850}
12851
12852 abuf->written = written;
12853 return vpc;
12854#undef FLD
12855}
12856
12857/* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12858
12859static SEM_PC
12860SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12861{
12862#define FLD(f) abuf->fields.sfmt_tieq.f
12863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12864 int UNUSED written = 0;
12865 IADDR UNUSED pc = abuf->addr;
12866 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12867
12868if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12869{
12870; /*clobber*/
12871; /*clobber*/
12872; /*clobber*/
12873; /*clobber*/
12874if (NEBI (CPU (h_psr_esr), 0)) {
12875{
12876; /*clobber*/
12877; /*clobber*/
12878; /*clobber*/
12879; /*clobber*/
12880}
12881}
12882frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12883}
12884}
12885
12886 abuf->written = written;
12887 return vpc;
12888#undef FLD
12889}
12890
12891/* tin: tin$pack $ICCi_2,$GRi,$s12 */
12892
12893static SEM_PC
12894SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12895{
12896#define FLD(f) abuf->fields.sfmt_tieq.f
12897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12898 int UNUSED written = 0;
12899 IADDR UNUSED pc = abuf->addr;
12900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12901
12902if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12903{
12904; /*clobber*/
12905; /*clobber*/
12906; /*clobber*/
12907; /*clobber*/
12908if (NEBI (CPU (h_psr_esr), 0)) {
12909{
12910; /*clobber*/
12911; /*clobber*/
12912; /*clobber*/
12913; /*clobber*/
12914}
12915}
12916frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12917}
12918}
12919
12920 abuf->written = written;
12921 return vpc;
12922#undef FLD
12923}
12924
12925/* tip: tip$pack $ICCi_2,$GRi,$s12 */
12926
12927static SEM_PC
12928SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12929{
12930#define FLD(f) abuf->fields.sfmt_tieq.f
12931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12932 int UNUSED written = 0;
12933 IADDR UNUSED pc = abuf->addr;
12934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12935
12936if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12937{
12938; /*clobber*/
12939; /*clobber*/
12940; /*clobber*/
12941; /*clobber*/
12942if (NEBI (CPU (h_psr_esr), 0)) {
12943{
12944; /*clobber*/
12945; /*clobber*/
12946; /*clobber*/
12947; /*clobber*/
12948}
12949}
12950frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12951}
12952}
12953
12954 abuf->written = written;
12955 return vpc;
12956#undef FLD
12957}
12958
12959/* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
12960
12961static SEM_PC
12962SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12963{
12964#define FLD(f) abuf->fields.sfmt_tieq.f
12965 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12966 int UNUSED written = 0;
12967 IADDR UNUSED pc = abuf->addr;
12968 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12969
12970if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12971{
12972; /*clobber*/
12973; /*clobber*/
12974; /*clobber*/
12975; /*clobber*/
12976if (NEBI (CPU (h_psr_esr), 0)) {
12977{
12978; /*clobber*/
12979; /*clobber*/
12980; /*clobber*/
12981; /*clobber*/
12982}
12983}
12984frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12985}
12986}
12987
12988 abuf->written = written;
12989 return vpc;
12990#undef FLD
12991}
12992
12993/* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
12994
12995static SEM_PC
12996SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12997{
12998#define FLD(f) abuf->fields.sfmt_tieq.f
12999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13000 int UNUSED written = 0;
13001 IADDR UNUSED pc = abuf->addr;
13002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13003
13004if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13005{
13006; /*clobber*/
13007; /*clobber*/
13008; /*clobber*/
13009; /*clobber*/
13010if (NEBI (CPU (h_psr_esr), 0)) {
13011{
13012; /*clobber*/
13013; /*clobber*/
13014; /*clobber*/
13015; /*clobber*/
13016}
13017}
13018frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13019}
13020}
13021
13022 abuf->written = written;
13023 return vpc;
13024#undef FLD
13025}
13026
13027/* ftira: ftira$pack $GRi,$s12 */
13028
13029static SEM_PC
13030SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13031{
13032#define FLD(f) abuf->fields.sfmt_ftine.f
13033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13034 int UNUSED written = 0;
13035 IADDR UNUSED pc = abuf->addr;
13036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13037
13038{
13039; /*clobber*/
13040; /*clobber*/
13041; /*clobber*/
13042; /*clobber*/
13043if (NEBI (CPU (h_psr_esr), 0)) {
13044{
13045; /*clobber*/
13046; /*clobber*/
13047; /*clobber*/
13048; /*clobber*/
13049}
13050}
13051frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13052}
13053
13054 abuf->written = written;
13055 return vpc;
13056#undef FLD
13057}
13058
13059/* ftino: ftino$pack */
13060
13061static SEM_PC
13062SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13063{
13064#define FLD(f) abuf->fields.fmt_empty.f
13065 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13066 int UNUSED written = 0;
13067 IADDR UNUSED pc = abuf->addr;
13068 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13069
13070((void) 0); /*nop*/
13071
13072 return vpc;
13073#undef FLD
13074}
13075
13076/* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13077
13078static SEM_PC
13079SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13080{
13081#define FLD(f) abuf->fields.sfmt_ftine.f
13082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13083 int UNUSED written = 0;
13084 IADDR UNUSED pc = abuf->addr;
13085 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13086
13087if (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))))) {
13088{
13089; /*clobber*/
13090; /*clobber*/
13091; /*clobber*/
13092; /*clobber*/
13093if (NEBI (CPU (h_psr_esr), 0)) {
13094{
13095; /*clobber*/
13096; /*clobber*/
13097; /*clobber*/
13098; /*clobber*/
13099}
13100}
13101frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13102}
13103}
13104
13105 abuf->written = written;
13106 return vpc;
13107#undef FLD
13108}
13109
13110/* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13111
13112static SEM_PC
13113SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13114{
13115#define FLD(f) abuf->fields.sfmt_ftine.f
13116 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13117 int UNUSED written = 0;
13118 IADDR UNUSED pc = abuf->addr;
13119 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13120
13121if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13122{
13123; /*clobber*/
13124; /*clobber*/
13125; /*clobber*/
13126; /*clobber*/
13127if (NEBI (CPU (h_psr_esr), 0)) {
13128{
13129; /*clobber*/
13130; /*clobber*/
13131; /*clobber*/
13132; /*clobber*/
13133}
13134}
13135frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13136}
13137}
13138
13139 abuf->written = written;
13140 return vpc;
13141#undef FLD
13142}
13143
13144/* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13145
13146static SEM_PC
13147SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13148{
13149#define FLD(f) abuf->fields.sfmt_ftine.f
13150 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13151 int UNUSED written = 0;
13152 IADDR UNUSED pc = abuf->addr;
13153 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13154
13155if (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)))) {
13156{
13157; /*clobber*/
13158; /*clobber*/
13159; /*clobber*/
13160; /*clobber*/
13161if (NEBI (CPU (h_psr_esr), 0)) {
13162{
13163; /*clobber*/
13164; /*clobber*/
13165; /*clobber*/
13166; /*clobber*/
13167}
13168}
13169frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13170}
13171}
13172
13173 abuf->written = written;
13174 return vpc;
13175#undef FLD
13176}
13177
13178/* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13179
13180static SEM_PC
13181SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13182{
13183#define FLD(f) abuf->fields.sfmt_ftine.f
13184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13185 int UNUSED written = 0;
13186 IADDR UNUSED pc = abuf->addr;
13187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13188
13189if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13190{
13191; /*clobber*/
13192; /*clobber*/
13193; /*clobber*/
13194; /*clobber*/
13195if (NEBI (CPU (h_psr_esr), 0)) {
13196{
13197; /*clobber*/
13198; /*clobber*/
13199; /*clobber*/
13200; /*clobber*/
13201}
13202}
13203frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13204}
13205}
13206
13207 abuf->written = written;
13208 return vpc;
13209#undef FLD
13210}
13211
13212/* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13213
13214static SEM_PC
13215SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13216{
13217#define FLD(f) abuf->fields.sfmt_ftine.f
13218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13219 int UNUSED written = 0;
13220 IADDR UNUSED pc = abuf->addr;
13221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13222
13223if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13224{
13225; /*clobber*/
13226; /*clobber*/
13227; /*clobber*/
13228; /*clobber*/
13229if (NEBI (CPU (h_psr_esr), 0)) {
13230{
13231; /*clobber*/
13232; /*clobber*/
13233; /*clobber*/
13234; /*clobber*/
13235}
13236}
13237frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13238}
13239}
13240
13241 abuf->written = written;
13242 return vpc;
13243#undef FLD
13244}
13245
13246/* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13247
13248static SEM_PC
13249SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13250{
13251#define FLD(f) abuf->fields.sfmt_ftine.f
13252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13253 int UNUSED written = 0;
13254 IADDR UNUSED pc = abuf->addr;
13255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13256
13257if (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)))) {
13258{
13259; /*clobber*/
13260; /*clobber*/
13261; /*clobber*/
13262; /*clobber*/
13263if (NEBI (CPU (h_psr_esr), 0)) {
13264{
13265; /*clobber*/
13266; /*clobber*/
13267; /*clobber*/
13268; /*clobber*/
13269}
13270}
13271frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13272}
13273}
13274
13275 abuf->written = written;
13276 return vpc;
13277#undef FLD
13278}
13279
13280/* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13281
13282static SEM_PC
13283SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13284{
13285#define FLD(f) abuf->fields.sfmt_ftine.f
13286 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13287 int UNUSED written = 0;
13288 IADDR UNUSED pc = abuf->addr;
13289 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13290
13291if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13292{
13293; /*clobber*/
13294; /*clobber*/
13295; /*clobber*/
13296; /*clobber*/
13297if (NEBI (CPU (h_psr_esr), 0)) {
13298{
13299; /*clobber*/
13300; /*clobber*/
13301; /*clobber*/
13302; /*clobber*/
13303}
13304}
13305frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13306}
13307}
13308
13309 abuf->written = written;
13310 return vpc;
13311#undef FLD
13312}
13313
13314/* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13315
13316static SEM_PC
13317SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13318{
13319#define FLD(f) abuf->fields.sfmt_ftine.f
13320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13321 int UNUSED written = 0;
13322 IADDR UNUSED pc = abuf->addr;
13323 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13324
13325if (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))))) {
13326{
13327; /*clobber*/
13328; /*clobber*/
13329; /*clobber*/
13330; /*clobber*/
13331if (NEBI (CPU (h_psr_esr), 0)) {
13332{
13333; /*clobber*/
13334; /*clobber*/
13335; /*clobber*/
13336; /*clobber*/
13337}
13338}
13339frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13340}
13341}
13342
13343 abuf->written = written;
13344 return vpc;
13345#undef FLD
13346}
13347
13348/* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13349
13350static SEM_PC
13351SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13352{
13353#define FLD(f) abuf->fields.sfmt_ftine.f
13354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13355 int UNUSED written = 0;
13356 IADDR UNUSED pc = abuf->addr;
13357 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13358
13359if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13360{
13361; /*clobber*/
13362; /*clobber*/
13363; /*clobber*/
13364; /*clobber*/
13365if (NEBI (CPU (h_psr_esr), 0)) {
13366{
13367; /*clobber*/
13368; /*clobber*/
13369; /*clobber*/
13370; /*clobber*/
13371}
13372}
13373frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13374}
13375}
13376
13377 abuf->written = written;
13378 return vpc;
13379#undef FLD
13380}
13381
13382/* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13383
13384static SEM_PC
13385SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13386{
13387#define FLD(f) abuf->fields.sfmt_ftine.f
13388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13389 int UNUSED written = 0;
13390 IADDR UNUSED pc = abuf->addr;
13391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13392
13393if (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)))) {
13394{
13395; /*clobber*/
13396; /*clobber*/
13397; /*clobber*/
13398; /*clobber*/
13399if (NEBI (CPU (h_psr_esr), 0)) {
13400{
13401; /*clobber*/
13402; /*clobber*/
13403; /*clobber*/
13404; /*clobber*/
13405}
13406}
13407frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13408}
13409}
13410
13411 abuf->written = written;
13412 return vpc;
13413#undef FLD
13414}
13415
13416/* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13417
13418static SEM_PC
13419SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13420{
13421#define FLD(f) abuf->fields.sfmt_ftine.f
13422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13423 int UNUSED written = 0;
13424 IADDR UNUSED pc = abuf->addr;
13425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13426
13427if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13428{
13429; /*clobber*/
13430; /*clobber*/
13431; /*clobber*/
13432; /*clobber*/
13433if (NEBI (CPU (h_psr_esr), 0)) {
13434{
13435; /*clobber*/
13436; /*clobber*/
13437; /*clobber*/
13438; /*clobber*/
13439}
13440}
13441frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13442}
13443}
13444
13445 abuf->written = written;
13446 return vpc;
13447#undef FLD
13448}
13449
13450/* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13451
13452static SEM_PC
13453SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13454{
13455#define FLD(f) abuf->fields.sfmt_ftine.f
13456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13457 int UNUSED written = 0;
13458 IADDR UNUSED pc = abuf->addr;
13459 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13460
13461if (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))))) {
13462{
13463; /*clobber*/
13464; /*clobber*/
13465; /*clobber*/
13466; /*clobber*/
13467if (NEBI (CPU (h_psr_esr), 0)) {
13468{
13469; /*clobber*/
13470; /*clobber*/
13471; /*clobber*/
13472; /*clobber*/
13473}
13474}
13475frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13476}
13477}
13478
13479 abuf->written = written;
13480 return vpc;
13481#undef FLD
13482}
13483
13484/* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13485
13486static SEM_PC
13487SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13488{
13489#define FLD(f) abuf->fields.sfmt_ftine.f
13490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13491 int UNUSED written = 0;
13492 IADDR UNUSED pc = abuf->addr;
13493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13494
13495if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13496{
13497; /*clobber*/
13498; /*clobber*/
13499; /*clobber*/
13500; /*clobber*/
13501if (NEBI (CPU (h_psr_esr), 0)) {
13502{
13503; /*clobber*/
13504; /*clobber*/
13505; /*clobber*/
13506; /*clobber*/
13507}
13508}
13509frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13510}
13511}
13512
13513 abuf->written = written;
13514 return vpc;
13515#undef FLD
13516}
13517
13518/* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13519
13520static SEM_PC
13521SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13522{
13523#define FLD(f) abuf->fields.sfmt_ftine.f
13524 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13525 int UNUSED written = 0;
13526 IADDR UNUSED pc = abuf->addr;
13527 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13528
13529if (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))))) {
13530{
13531; /*clobber*/
13532; /*clobber*/
13533; /*clobber*/
13534; /*clobber*/
13535if (NEBI (CPU (h_psr_esr), 0)) {
13536{
13537; /*clobber*/
13538; /*clobber*/
13539; /*clobber*/
13540; /*clobber*/
13541}
13542}
13543frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13544}
13545}
13546
13547 abuf->written = written;
13548 return vpc;
13549#undef FLD
13550}
13551
13552/* break: break$pack */
13553
13554static SEM_PC
13555SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13556{
13557#define FLD(f) abuf->fields.sfmt_break.f
13558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13559 int UNUSED written = 0;
13560 IADDR UNUSED pc = abuf->addr;
13561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13562
13563{
13564; /*clobber*/
13565; /*clobber*/
13566; /*clobber*/
13567; /*clobber*/
13568; /*clobber*/
13569; /*clobber*/
13570frv_break (current_cpu);
13571}
13572
13573 return vpc;
13574#undef FLD
13575}
13576
13577/* mtrap: mtrap$pack */
13578
13579static SEM_PC
13580SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13581{
13582#define FLD(f) abuf->fields.fmt_empty.f
13583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13584 int UNUSED written = 0;
13585 IADDR UNUSED pc = abuf->addr;
13586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13587
13588frv_mtrap (current_cpu);
13589
13590 return vpc;
13591#undef FLD
13592}
13593
13594/* andcr: andcr$pack $CRi,$CRj,$CRk */
13595
13596static SEM_PC
13597SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13598{
13599#define FLD(f) abuf->fields.sfmt_andcr.f
13600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13601 int UNUSED written = 0;
13602 IADDR UNUSED pc = abuf->addr;
13603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13604
13605 {
13606 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13607 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13608 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13609 }
13610
13611 return vpc;
13612#undef FLD
13613}
13614
13615/* orcr: orcr$pack $CRi,$CRj,$CRk */
13616
13617static SEM_PC
13618SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13619{
13620#define FLD(f) abuf->fields.sfmt_andcr.f
13621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13622 int UNUSED written = 0;
13623 IADDR UNUSED pc = abuf->addr;
13624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13625
13626 {
13627 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13628 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13629 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13630 }
13631
13632 return vpc;
13633#undef FLD
13634}
13635
13636/* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13637
13638static SEM_PC
13639SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13640{
13641#define FLD(f) abuf->fields.sfmt_andcr.f
13642 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13643 int UNUSED written = 0;
13644 IADDR UNUSED pc = abuf->addr;
13645 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13646
13647 {
13648 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13649 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13650 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13651 }
13652
13653 return vpc;
13654#undef FLD
13655}
13656
13657/* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13658
13659static SEM_PC
13660SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13661{
13662#define FLD(f) abuf->fields.sfmt_andcr.f
13663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13664 int UNUSED written = 0;
13665 IADDR UNUSED pc = abuf->addr;
13666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13667
13668 {
13669 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13670 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13671 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13672 }
13673
13674 return vpc;
13675#undef FLD
13676}
13677
13678/* norcr: norcr$pack $CRi,$CRj,$CRk */
13679
13680static SEM_PC
13681SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13682{
13683#define FLD(f) abuf->fields.sfmt_andcr.f
13684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13685 int UNUSED written = 0;
13686 IADDR UNUSED pc = abuf->addr;
13687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13688
13689 {
13690 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13691 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13692 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13693 }
13694
13695 return vpc;
13696#undef FLD
13697}
13698
13699/* andncr: andncr$pack $CRi,$CRj,$CRk */
13700
13701static SEM_PC
13702SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13703{
13704#define FLD(f) abuf->fields.sfmt_andcr.f
13705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13706 int UNUSED written = 0;
13707 IADDR UNUSED pc = abuf->addr;
13708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13709
13710 {
13711 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13712 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13713 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13714 }
13715
13716 return vpc;
13717#undef FLD
13718}
13719
13720/* orncr: orncr$pack $CRi,$CRj,$CRk */
13721
13722static SEM_PC
13723SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13724{
13725#define FLD(f) abuf->fields.sfmt_andcr.f
13726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13727 int UNUSED written = 0;
13728 IADDR UNUSED pc = abuf->addr;
13729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13730
13731 {
13732 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13733 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13734 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13735 }
13736
13737 return vpc;
13738#undef FLD
13739}
13740
13741/* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13742
13743static SEM_PC
13744SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13745{
13746#define FLD(f) abuf->fields.sfmt_andcr.f
13747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13748 int UNUSED written = 0;
13749 IADDR UNUSED pc = abuf->addr;
13750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13751
13752 {
13753 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13754 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13755 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13756 }
13757
13758 return vpc;
13759#undef FLD
13760}
13761
13762/* norncr: norncr$pack $CRi,$CRj,$CRk */
13763
13764static SEM_PC
13765SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13766{
13767#define FLD(f) abuf->fields.sfmt_andcr.f
13768 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13769 int UNUSED written = 0;
13770 IADDR UNUSED pc = abuf->addr;
13771 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13772
13773 {
13774 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13775 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13776 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13777 }
13778
13779 return vpc;
13780#undef FLD
13781}
13782
13783/* notcr: notcr$pack $CRj,$CRk */
13784
13785static SEM_PC
13786SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13787{
13788#define FLD(f) abuf->fields.sfmt_andcr.f
13789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13790 int UNUSED written = 0;
13791 IADDR UNUSED pc = abuf->addr;
13792 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13793
13794 {
13795 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13796 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13797 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13798 }
13799
13800 return vpc;
13801#undef FLD
13802}
13803
13804/* ckra: ckra$pack $CRj_int */
13805
13806static SEM_PC
13807SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13808{
13809#define FLD(f) abuf->fields.sfmt_cckeq.f
13810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13811 int UNUSED written = 0;
13812 IADDR UNUSED pc = abuf->addr;
13813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13814
13815 {
13816 UQI opval = 3;
13817 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13818 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13819 }
13820
13821 return vpc;
13822#undef FLD
13823}
13824
13825/* ckno: ckno$pack $CRj_int */
13826
13827static SEM_PC
13828SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13829{
13830#define FLD(f) abuf->fields.sfmt_cckeq.f
13831 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13832 int UNUSED written = 0;
13833 IADDR UNUSED pc = abuf->addr;
13834 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13835
13836 {
13837 UQI opval = 2;
13838 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13839 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13840 }
13841
13842 return vpc;
13843#undef FLD
13844}
13845
13846/* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13847
13848static SEM_PC
13849SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13850{
13851#define FLD(f) abuf->fields.sfmt_cckeq.f
13852 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13853 int UNUSED written = 0;
13854 IADDR UNUSED pc = abuf->addr;
13855 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13856
13857if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13858 {
13859 UQI opval = 3;
13860 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13861 written |= (1 << 1);
13862 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13863 }
13864} else {
13865 {
13866 UQI opval = 2;
13867 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13868 written |= (1 << 1);
13869 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13870 }
13871}
13872
13873 abuf->written = written;
13874 return vpc;
13875#undef FLD
13876}
13877
13878/* ckne: ckne$pack $ICCi_3,$CRj_int */
13879
13880static SEM_PC
13881SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13882{
13883#define FLD(f) abuf->fields.sfmt_cckeq.f
13884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13885 int UNUSED written = 0;
13886 IADDR UNUSED pc = abuf->addr;
13887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13888
13889if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13890 {
13891 UQI opval = 3;
13892 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13893 written |= (1 << 1);
13894 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13895 }
13896} else {
13897 {
13898 UQI opval = 2;
13899 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13900 written |= (1 << 1);
13901 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13902 }
13903}
13904
13905 abuf->written = written;
13906 return vpc;
13907#undef FLD
13908}
13909
13910/* ckle: ckle$pack $ICCi_3,$CRj_int */
13911
13912static SEM_PC
13913SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13914{
13915#define FLD(f) abuf->fields.sfmt_cckeq.f
13916 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13917 int UNUSED written = 0;
13918 IADDR UNUSED pc = abuf->addr;
13919 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13920
13921if (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))))) {
13922 {
13923 UQI opval = 3;
13924 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13925 written |= (1 << 1);
13926 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13927 }
13928} else {
13929 {
13930 UQI opval = 2;
13931 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13932 written |= (1 << 1);
13933 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13934 }
13935}
13936
13937 abuf->written = written;
13938 return vpc;
13939#undef FLD
13940}
13941
13942/* ckgt: ckgt$pack $ICCi_3,$CRj_int */
13943
13944static SEM_PC
13945SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13946{
13947#define FLD(f) abuf->fields.sfmt_cckeq.f
13948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13949 int UNUSED written = 0;
13950 IADDR UNUSED pc = abuf->addr;
13951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13952
13953if (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)))))) {
13954 {
13955 UQI opval = 3;
13956 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13957 written |= (1 << 1);
13958 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13959 }
13960} else {
13961 {
13962 UQI opval = 2;
13963 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13964 written |= (1 << 1);
13965 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13966 }
13967}
13968
13969 abuf->written = written;
13970 return vpc;
13971#undef FLD
13972}
13973
13974/* cklt: cklt$pack $ICCi_3,$CRj_int */
13975
13976static SEM_PC
13977SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13978{
13979#define FLD(f) abuf->fields.sfmt_cckeq.f
13980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13981 int UNUSED written = 0;
13982 IADDR UNUSED pc = abuf->addr;
13983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13984
13985if (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)))) {
13986 {
13987 UQI opval = 3;
13988 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13989 written |= (1 << 1);
13990 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13991 }
13992} else {
13993 {
13994 UQI opval = 2;
13995 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13996 written |= (1 << 1);
13997 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13998 }
13999}
14000
14001 abuf->written = written;
14002 return vpc;
14003#undef FLD
14004}
14005
14006/* ckge: ckge$pack $ICCi_3,$CRj_int */
14007
14008static SEM_PC
14009SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14010{
14011#define FLD(f) abuf->fields.sfmt_cckeq.f
14012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14013 int UNUSED written = 0;
14014 IADDR UNUSED pc = abuf->addr;
14015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14016
14017if (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))))) {
14018 {
14019 UQI opval = 3;
14020 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14021 written |= (1 << 1);
14022 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14023 }
14024} else {
14025 {
14026 UQI opval = 2;
14027 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14028 written |= (1 << 1);
14029 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14030 }
14031}
14032
14033 abuf->written = written;
14034 return vpc;
14035#undef FLD
14036}
14037
14038/* ckls: ckls$pack $ICCi_3,$CRj_int */
14039
14040static SEM_PC
14041SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14042{
14043#define FLD(f) abuf->fields.sfmt_cckeq.f
14044 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14045 int UNUSED written = 0;
14046 IADDR UNUSED pc = abuf->addr;
14047 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14048
14049if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14050 {
14051 UQI opval = 3;
14052 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14053 written |= (1 << 1);
14054 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14055 }
14056} else {
14057 {
14058 UQI opval = 2;
14059 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14060 written |= (1 << 1);
14061 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14062 }
14063}
14064
14065 abuf->written = written;
14066 return vpc;
14067#undef FLD
14068}
14069
14070/* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14071
14072static SEM_PC
14073SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14074{
14075#define FLD(f) abuf->fields.sfmt_cckeq.f
14076 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14077 int UNUSED written = 0;
14078 IADDR UNUSED pc = abuf->addr;
14079 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14080
14081if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
14082 {
14083 UQI opval = 3;
14084 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14085 written |= (1 << 1);
14086 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14087 }
14088} else {
14089 {
14090 UQI opval = 2;
14091 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14092 written |= (1 << 1);
14093 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14094 }
14095}
14096
14097 abuf->written = written;
14098 return vpc;
14099#undef FLD
14100}
14101
14102/* ckc: ckc$pack $ICCi_3,$CRj_int */
14103
14104static SEM_PC
14105SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14106{
14107#define FLD(f) abuf->fields.sfmt_cckeq.f
14108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14109 int UNUSED written = 0;
14110 IADDR UNUSED pc = abuf->addr;
14111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14112
14113if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14114 {
14115 UQI opval = 3;
14116 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14117 written |= (1 << 1);
14118 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14119 }
14120} else {
14121 {
14122 UQI opval = 2;
14123 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14124 written |= (1 << 1);
14125 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14126 }
14127}
14128
14129 abuf->written = written;
14130 return vpc;
14131#undef FLD
14132}
14133
14134/* cknc: cknc$pack $ICCi_3,$CRj_int */
14135
14136static SEM_PC
14137SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14138{
14139#define FLD(f) abuf->fields.sfmt_cckeq.f
14140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14141 int UNUSED written = 0;
14142 IADDR UNUSED pc = abuf->addr;
14143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14144
14145if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14146 {
14147 UQI opval = 3;
14148 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14149 written |= (1 << 1);
14150 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14151 }
14152} else {
14153 {
14154 UQI opval = 2;
14155 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14156 written |= (1 << 1);
14157 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14158 }
14159}
14160
14161 abuf->written = written;
14162 return vpc;
14163#undef FLD
14164}
14165
14166/* ckn: ckn$pack $ICCi_3,$CRj_int */
14167
14168static SEM_PC
14169SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14170{
14171#define FLD(f) abuf->fields.sfmt_cckeq.f
14172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14173 int UNUSED written = 0;
14174 IADDR UNUSED pc = abuf->addr;
14175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14176
14177if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14178 {
14179 UQI opval = 3;
14180 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14181 written |= (1 << 1);
14182 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14183 }
14184} else {
14185 {
14186 UQI opval = 2;
14187 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14188 written |= (1 << 1);
14189 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14190 }
14191}
14192
14193 abuf->written = written;
14194 return vpc;
14195#undef FLD
14196}
14197
14198/* ckp: ckp$pack $ICCi_3,$CRj_int */
14199
14200static SEM_PC
14201SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14202{
14203#define FLD(f) abuf->fields.sfmt_cckeq.f
14204 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14205 int UNUSED written = 0;
14206 IADDR UNUSED pc = abuf->addr;
14207 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14208
14209if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14210 {
14211 UQI opval = 3;
14212 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14213 written |= (1 << 1);
14214 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14215 }
14216} else {
14217 {
14218 UQI opval = 2;
14219 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14220 written |= (1 << 1);
14221 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14222 }
14223}
14224
14225 abuf->written = written;
14226 return vpc;
14227#undef FLD
14228}
14229
14230/* ckv: ckv$pack $ICCi_3,$CRj_int */
14231
14232static SEM_PC
14233SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14234{
14235#define FLD(f) abuf->fields.sfmt_cckeq.f
14236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14237 int UNUSED written = 0;
14238 IADDR UNUSED pc = abuf->addr;
14239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14240
14241if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14242 {
14243 UQI opval = 3;
14244 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14245 written |= (1 << 1);
14246 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14247 }
14248} else {
14249 {
14250 UQI opval = 2;
14251 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14252 written |= (1 << 1);
14253 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14254 }
14255}
14256
14257 abuf->written = written;
14258 return vpc;
14259#undef FLD
14260}
14261
14262/* cknv: cknv$pack $ICCi_3,$CRj_int */
14263
14264static SEM_PC
14265SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14266{
14267#define FLD(f) abuf->fields.sfmt_cckeq.f
14268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14269 int UNUSED written = 0;
14270 IADDR UNUSED pc = abuf->addr;
14271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14272
14273if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14274 {
14275 UQI opval = 3;
14276 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14277 written |= (1 << 1);
14278 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14279 }
14280} else {
14281 {
14282 UQI opval = 2;
14283 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14284 written |= (1 << 1);
14285 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14286 }
14287}
14288
14289 abuf->written = written;
14290 return vpc;
14291#undef FLD
14292}
14293
14294/* fckra: fckra$pack $CRj_float */
14295
14296static SEM_PC
14297SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14298{
14299#define FLD(f) abuf->fields.sfmt_cfckne.f
14300 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14301 int UNUSED written = 0;
14302 IADDR UNUSED pc = abuf->addr;
14303 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14304
14305 {
14306 UQI opval = 3;
14307 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14308 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14309 }
14310
14311 return vpc;
14312#undef FLD
14313}
14314
14315/* fckno: fckno$pack $CRj_float */
14316
14317static SEM_PC
14318SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14319{
14320#define FLD(f) abuf->fields.sfmt_cfckne.f
14321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14322 int UNUSED written = 0;
14323 IADDR UNUSED pc = abuf->addr;
14324 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14325
14326 {
14327 UQI opval = 2;
14328 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14329 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14330 }
14331
14332 return vpc;
14333#undef FLD
14334}
14335
14336/* fckne: fckne$pack $FCCi_3,$CRj_float */
14337
14338static SEM_PC
14339SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14340{
14341#define FLD(f) abuf->fields.sfmt_cfckne.f
14342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14343 int UNUSED written = 0;
14344 IADDR UNUSED pc = abuf->addr;
14345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14346
14347if (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))))) {
14348 {
14349 UQI opval = 3;
14350 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14351 written |= (1 << 1);
14352 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14353 }
14354} else {
14355 {
14356 UQI opval = 2;
14357 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14358 written |= (1 << 1);
14359 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14360 }
14361}
14362
14363 abuf->written = written;
14364 return vpc;
14365#undef FLD
14366}
14367
14368/* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14369
14370static SEM_PC
14371SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14372{
14373#define FLD(f) abuf->fields.sfmt_cfckne.f
14374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14375 int UNUSED written = 0;
14376 IADDR UNUSED pc = abuf->addr;
14377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14378
14379if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14380 {
14381 UQI opval = 3;
14382 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14383 written |= (1 << 1);
14384 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14385 }
14386} else {
14387 {
14388 UQI opval = 2;
14389 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14390 written |= (1 << 1);
14391 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14392 }
14393}
14394
14395 abuf->written = written;
14396 return vpc;
14397#undef FLD
14398}
14399
14400/* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14401
14402static SEM_PC
14403SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14404{
14405#define FLD(f) abuf->fields.sfmt_cfckne.f
14406 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14407 int UNUSED written = 0;
14408 IADDR UNUSED pc = abuf->addr;
14409 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14410
14411if (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)))) {
14412 {
14413 UQI opval = 3;
14414 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14415 written |= (1 << 1);
14416 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14417 }
14418} else {
14419 {
14420 UQI opval = 2;
14421 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14422 written |= (1 << 1);
14423 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14424 }
14425}
14426
14427 abuf->written = written;
14428 return vpc;
14429#undef FLD
14430}
14431
14432/* fckue: fckue$pack $FCCi_3,$CRj_float */
14433
14434static SEM_PC
14435SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14436{
14437#define FLD(f) abuf->fields.sfmt_cfckne.f
14438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14439 int UNUSED written = 0;
14440 IADDR UNUSED pc = abuf->addr;
14441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14442
14443if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14444 {
14445 UQI opval = 3;
14446 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14447 written |= (1 << 1);
14448 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14449 }
14450} else {
14451 {
14452 UQI opval = 2;
14453 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14454 written |= (1 << 1);
14455 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14456 }
14457}
14458
14459 abuf->written = written;
14460 return vpc;
14461#undef FLD
14462}
14463
14464/* fckul: fckul$pack $FCCi_3,$CRj_float */
14465
14466static SEM_PC
14467SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14468{
14469#define FLD(f) abuf->fields.sfmt_cfckne.f
14470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14471 int UNUSED written = 0;
14472 IADDR UNUSED pc = abuf->addr;
14473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14474
14475if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14476 {
14477 UQI opval = 3;
14478 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14479 written |= (1 << 1);
14480 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14481 }
14482} else {
14483 {
14484 UQI opval = 2;
14485 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14486 written |= (1 << 1);
14487 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14488 }
14489}
14490
14491 abuf->written = written;
14492 return vpc;
14493#undef FLD
14494}
14495
14496/* fckge: fckge$pack $FCCi_3,$CRj_float */
14497
14498static SEM_PC
14499SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14500{
14501#define FLD(f) abuf->fields.sfmt_cfckne.f
14502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14503 int UNUSED written = 0;
14504 IADDR UNUSED pc = abuf->addr;
14505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14506
14507if (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)))) {
14508 {
14509 UQI opval = 3;
14510 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14511 written |= (1 << 1);
14512 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14513 }
14514} else {
14515 {
14516 UQI opval = 2;
14517 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14518 written |= (1 << 1);
14519 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14520 }
14521}
14522
14523 abuf->written = written;
14524 return vpc;
14525#undef FLD
14526}
14527
14528/* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14529
14530static SEM_PC
14531SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14532{
14533#define FLD(f) abuf->fields.sfmt_cfckne.f
14534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14535 int UNUSED written = 0;
14536 IADDR UNUSED pc = abuf->addr;
14537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14538
14539if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14540 {
14541 UQI opval = 3;
14542 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14543 written |= (1 << 1);
14544 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14545 }
14546} else {
14547 {
14548 UQI opval = 2;
14549 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14550 written |= (1 << 1);
14551 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14552 }
14553}
14554
14555 abuf->written = written;
14556 return vpc;
14557#undef FLD
14558}
14559
14560/* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14561
14562static SEM_PC
14563SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14564{
14565#define FLD(f) abuf->fields.sfmt_cfckne.f
14566 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14567 int UNUSED written = 0;
14568 IADDR UNUSED pc = abuf->addr;
14569 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14570
14571if (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))))) {
14572 {
14573 UQI opval = 3;
14574 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14575 written |= (1 << 1);
14576 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14577 }
14578} else {
14579 {
14580 UQI opval = 2;
14581 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14582 written |= (1 << 1);
14583 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14584 }
14585}
14586
14587 abuf->written = written;
14588 return vpc;
14589#undef FLD
14590}
14591
14592/* fckug: fckug$pack $FCCi_3,$CRj_float */
14593
14594static SEM_PC
14595SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14596{
14597#define FLD(f) abuf->fields.sfmt_cfckne.f
14598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14599 int UNUSED written = 0;
14600 IADDR UNUSED pc = abuf->addr;
14601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14602
14603if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14604 {
14605 UQI opval = 3;
14606 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14607 written |= (1 << 1);
14608 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14609 }
14610} else {
14611 {
14612 UQI opval = 2;
14613 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14614 written |= (1 << 1);
14615 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14616 }
14617}
14618
14619 abuf->written = written;
14620 return vpc;
14621#undef FLD
14622}
14623
14624/* fckle: fckle$pack $FCCi_3,$CRj_float */
14625
14626static SEM_PC
14627SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14628{
14629#define FLD(f) abuf->fields.sfmt_cfckne.f
14630 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14631 int UNUSED written = 0;
14632 IADDR UNUSED pc = abuf->addr;
14633 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14634
14635if (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)))) {
14636 {
14637 UQI opval = 3;
14638 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14639 written |= (1 << 1);
14640 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14641 }
14642} else {
14643 {
14644 UQI opval = 2;
14645 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14646 written |= (1 << 1);
14647 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14648 }
14649}
14650
14651 abuf->written = written;
14652 return vpc;
14653#undef FLD
14654}
14655
14656/* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14657
14658static SEM_PC
14659SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14660{
14661#define FLD(f) abuf->fields.sfmt_cfckne.f
14662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14663 int UNUSED written = 0;
14664 IADDR UNUSED pc = abuf->addr;
14665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14666
14667if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14668 {
14669 UQI opval = 3;
14670 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14671 written |= (1 << 1);
14672 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14673 }
14674} else {
14675 {
14676 UQI opval = 2;
14677 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14678 written |= (1 << 1);
14679 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14680 }
14681}
14682
14683 abuf->written = written;
14684 return vpc;
14685#undef FLD
14686}
14687
14688/* fckule: fckule$pack $FCCi_3,$CRj_float */
14689
14690static SEM_PC
14691SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14692{
14693#define FLD(f) abuf->fields.sfmt_cfckne.f
14694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14695 int UNUSED written = 0;
14696 IADDR UNUSED pc = abuf->addr;
14697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14698
14699if (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))))) {
14700 {
14701 UQI opval = 3;
14702 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14703 written |= (1 << 1);
14704 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14705 }
14706} else {
14707 {
14708 UQI opval = 2;
14709 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14710 written |= (1 << 1);
14711 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14712 }
14713}
14714
14715 abuf->written = written;
14716 return vpc;
14717#undef FLD
14718}
14719
14720/* fcku: fcku$pack $FCCi_3,$CRj_float */
14721
14722static SEM_PC
14723SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14724{
14725#define FLD(f) abuf->fields.sfmt_cfckne.f
14726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14727 int UNUSED written = 0;
14728 IADDR UNUSED pc = abuf->addr;
14729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14730
14731if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14732 {
14733 UQI opval = 3;
14734 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14735 written |= (1 << 1);
14736 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14737 }
14738} else {
14739 {
14740 UQI opval = 2;
14741 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14742 written |= (1 << 1);
14743 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14744 }
14745}
14746
14747 abuf->written = written;
14748 return vpc;
14749#undef FLD
14750}
14751
14752/* fcko: fcko$pack $FCCi_3,$CRj_float */
14753
14754static SEM_PC
14755SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14756{
14757#define FLD(f) abuf->fields.sfmt_cfckne.f
14758 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14759 int UNUSED written = 0;
14760 IADDR UNUSED pc = abuf->addr;
14761 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14762
14763if (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))))) {
14764 {
14765 UQI opval = 3;
14766 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14767 written |= (1 << 1);
14768 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14769 }
14770} else {
14771 {
14772 UQI opval = 2;
14773 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14774 written |= (1 << 1);
14775 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14776 }
14777}
14778
14779 abuf->written = written;
14780 return vpc;
14781#undef FLD
14782}
14783
14784/* cckra: cckra$pack $CRj_int,$CCi,$cond */
14785
14786static SEM_PC
14787SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14788{
14789#define FLD(f) abuf->fields.sfmt_cckeq.f
14790 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14791 int UNUSED written = 0;
14792 IADDR UNUSED pc = abuf->addr;
14793 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14794
14795if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14796 {
14797 UQI opval = 3;
14798 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14799 written |= (1 << 2);
14800 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14801 }
14802} else {
14803 {
14804 UQI opval = 0;
14805 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14806 written |= (1 << 2);
14807 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14808 }
14809}
14810
14811 abuf->written = written;
14812 return vpc;
14813#undef FLD
14814}
14815
14816/* cckno: cckno$pack $CRj_int,$CCi,$cond */
14817
14818static SEM_PC
14819SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14820{
14821#define FLD(f) abuf->fields.sfmt_cckeq.f
14822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14823 int UNUSED written = 0;
14824 IADDR UNUSED pc = abuf->addr;
14825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14826
14827if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14828 {
14829 UQI opval = 2;
14830 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14831 written |= (1 << 2);
14832 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14833 }
14834} else {
14835 {
14836 UQI opval = 0;
14837 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14838 written |= (1 << 2);
14839 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14840 }
14841}
14842
14843 abuf->written = written;
14844 return vpc;
14845#undef FLD
14846}
14847
14848/* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14849
14850static SEM_PC
14851SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14852{
14853#define FLD(f) abuf->fields.sfmt_cckeq.f
14854 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14855 int UNUSED written = 0;
14856 IADDR UNUSED pc = abuf->addr;
14857 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14858
14859if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14860if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14861 {
14862 UQI opval = 3;
14863 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14864 written |= (1 << 3);
14865 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14866 }
14867} else {
14868 {
14869 UQI opval = 2;
14870 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14871 written |= (1 << 3);
14872 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14873 }
14874}
14875} else {
14876 {
14877 UQI opval = 0;
14878 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14879 written |= (1 << 3);
14880 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14881 }
14882}
14883
14884 abuf->written = written;
14885 return vpc;
14886#undef FLD
14887}
14888
14889/* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14890
14891static SEM_PC
14892SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14893{
14894#define FLD(f) abuf->fields.sfmt_cckeq.f
14895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14896 int UNUSED written = 0;
14897 IADDR UNUSED pc = abuf->addr;
14898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14899
14900if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14901if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14902 {
14903 UQI opval = 3;
14904 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14905 written |= (1 << 3);
14906 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14907 }
14908} else {
14909 {
14910 UQI opval = 2;
14911 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14912 written |= (1 << 3);
14913 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14914 }
14915}
14916} else {
14917 {
14918 UQI opval = 0;
14919 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14920 written |= (1 << 3);
14921 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14922 }
14923}
14924
14925 abuf->written = written;
14926 return vpc;
14927#undef FLD
14928}
14929
14930/* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
14931
14932static SEM_PC
14933SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14934{
14935#define FLD(f) abuf->fields.sfmt_cckeq.f
14936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14937 int UNUSED written = 0;
14938 IADDR UNUSED pc = abuf->addr;
14939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14940
14941if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14942if (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))))) {
14943 {
14944 UQI opval = 3;
14945 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14946 written |= (1 << 3);
14947 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14948 }
14949} else {
14950 {
14951 UQI opval = 2;
14952 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14953 written |= (1 << 3);
14954 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14955 }
14956}
14957} else {
14958 {
14959 UQI opval = 0;
14960 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14961 written |= (1 << 3);
14962 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14963 }
14964}
14965
14966 abuf->written = written;
14967 return vpc;
14968#undef FLD
14969}
14970
14971/* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
14972
14973static SEM_PC
14974SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14975{
14976#define FLD(f) abuf->fields.sfmt_cckeq.f
14977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14978 int UNUSED written = 0;
14979 IADDR UNUSED pc = abuf->addr;
14980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14981
14982if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14983if (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)))))) {
14984 {
14985 UQI opval = 3;
14986 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14987 written |= (1 << 3);
14988 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14989 }
14990} else {
14991 {
14992 UQI opval = 2;
14993 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14994 written |= (1 << 3);
14995 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14996 }
14997}
14998} else {
14999 {
15000 UQI opval = 0;
15001 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15002 written |= (1 << 3);
15003 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15004 }
15005}
15006
15007 abuf->written = written;
15008 return vpc;
15009#undef FLD
15010}
15011
15012/* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15013
15014static SEM_PC
15015SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15016{
15017#define FLD(f) abuf->fields.sfmt_cckeq.f
15018 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15019 int UNUSED written = 0;
15020 IADDR UNUSED pc = abuf->addr;
15021 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15022
15023if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15024if (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)))) {
15025 {
15026 UQI opval = 3;
15027 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15028 written |= (1 << 3);
15029 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15030 }
15031} else {
15032 {
15033 UQI opval = 2;
15034 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15035 written |= (1 << 3);
15036 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15037 }
15038}
15039} else {
15040 {
15041 UQI opval = 0;
15042 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15043 written |= (1 << 3);
15044 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15045 }
15046}
15047
15048 abuf->written = written;
15049 return vpc;
15050#undef FLD
15051}
15052
15053/* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15054
15055static SEM_PC
15056SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15057{
15058#define FLD(f) abuf->fields.sfmt_cckeq.f
15059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15060 int UNUSED written = 0;
15061 IADDR UNUSED pc = abuf->addr;
15062 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15063
15064if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15065if (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))))) {
15066 {
15067 UQI opval = 3;
15068 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15069 written |= (1 << 3);
15070 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15071 }
15072} else {
15073 {
15074 UQI opval = 2;
15075 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15076 written |= (1 << 3);
15077 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15078 }
15079}
15080} else {
15081 {
15082 UQI opval = 0;
15083 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15084 written |= (1 << 3);
15085 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15086 }
15087}
15088
15089 abuf->written = written;
15090 return vpc;
15091#undef FLD
15092}
15093
15094/* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15095
15096static SEM_PC
15097SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15098{
15099#define FLD(f) abuf->fields.sfmt_cckeq.f
15100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15101 int UNUSED written = 0;
15102 IADDR UNUSED pc = abuf->addr;
15103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15104
15105if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15106if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15107 {
15108 UQI opval = 3;
15109 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15110 written |= (1 << 3);
15111 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15112 }
15113} else {
15114 {
15115 UQI opval = 2;
15116 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15117 written |= (1 << 3);
15118 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15119 }
15120}
15121} else {
15122 {
15123 UQI opval = 0;
15124 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15125 written |= (1 << 3);
15126 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15127 }
15128}
15129
15130 abuf->written = written;
15131 return vpc;
15132#undef FLD
15133}
15134
15135/* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15136
15137static SEM_PC
15138SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15139{
15140#define FLD(f) abuf->fields.sfmt_cckeq.f
15141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15142 int UNUSED written = 0;
15143 IADDR UNUSED pc = abuf->addr;
15144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15145
15146if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15147if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
15148 {
15149 UQI opval = 3;
15150 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15151 written |= (1 << 3);
15152 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15153 }
15154} else {
15155 {
15156 UQI opval = 2;
15157 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15158 written |= (1 << 3);
15159 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15160 }
15161}
15162} else {
15163 {
15164 UQI opval = 0;
15165 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15166 written |= (1 << 3);
15167 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15168 }
15169}
15170
15171 abuf->written = written;
15172 return vpc;
15173#undef FLD
15174}
15175
15176/* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15177
15178static SEM_PC
15179SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15180{
15181#define FLD(f) abuf->fields.sfmt_cckeq.f
15182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15183 int UNUSED written = 0;
15184 IADDR UNUSED pc = abuf->addr;
15185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15186
15187if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15188if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15189 {
15190 UQI opval = 3;
15191 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15192 written |= (1 << 3);
15193 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15194 }
15195} else {
15196 {
15197 UQI opval = 2;
15198 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15199 written |= (1 << 3);
15200 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15201 }
15202}
15203} else {
15204 {
15205 UQI opval = 0;
15206 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15207 written |= (1 << 3);
15208 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15209 }
15210}
15211
15212 abuf->written = written;
15213 return vpc;
15214#undef FLD
15215}
15216
15217/* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15218
15219static SEM_PC
15220SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15221{
15222#define FLD(f) abuf->fields.sfmt_cckeq.f
15223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15224 int UNUSED written = 0;
15225 IADDR UNUSED pc = abuf->addr;
15226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15227
15228if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15229if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15230 {
15231 UQI opval = 3;
15232 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15233 written |= (1 << 3);
15234 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15235 }
15236} else {
15237 {
15238 UQI opval = 2;
15239 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15240 written |= (1 << 3);
15241 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15242 }
15243}
15244} else {
15245 {
15246 UQI opval = 0;
15247 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15248 written |= (1 << 3);
15249 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15250 }
15251}
15252
15253 abuf->written = written;
15254 return vpc;
15255#undef FLD
15256}
15257
15258/* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15259
15260static SEM_PC
15261SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15262{
15263#define FLD(f) abuf->fields.sfmt_cckeq.f
15264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15265 int UNUSED written = 0;
15266 IADDR UNUSED pc = abuf->addr;
15267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15268
15269if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15270if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15271 {
15272 UQI opval = 3;
15273 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15274 written |= (1 << 3);
15275 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15276 }
15277} else {
15278 {
15279 UQI opval = 2;
15280 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15281 written |= (1 << 3);
15282 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15283 }
15284}
15285} else {
15286 {
15287 UQI opval = 0;
15288 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15289 written |= (1 << 3);
15290 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15291 }
15292}
15293
15294 abuf->written = written;
15295 return vpc;
15296#undef FLD
15297}
15298
15299/* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15300
15301static SEM_PC
15302SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15303{
15304#define FLD(f) abuf->fields.sfmt_cckeq.f
15305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15306 int UNUSED written = 0;
15307 IADDR UNUSED pc = abuf->addr;
15308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15309
15310if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15311if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15312 {
15313 UQI opval = 3;
15314 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15315 written |= (1 << 3);
15316 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15317 }
15318} else {
15319 {
15320 UQI opval = 2;
15321 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15322 written |= (1 << 3);
15323 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15324 }
15325}
15326} else {
15327 {
15328 UQI opval = 0;
15329 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15330 written |= (1 << 3);
15331 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15332 }
15333}
15334
15335 abuf->written = written;
15336 return vpc;
15337#undef FLD
15338}
15339
15340/* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15341
15342static SEM_PC
15343SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15344{
15345#define FLD(f) abuf->fields.sfmt_cckeq.f
15346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15347 int UNUSED written = 0;
15348 IADDR UNUSED pc = abuf->addr;
15349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15350
15351if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15352if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15353 {
15354 UQI opval = 3;
15355 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15356 written |= (1 << 3);
15357 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15358 }
15359} else {
15360 {
15361 UQI opval = 2;
15362 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15363 written |= (1 << 3);
15364 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15365 }
15366}
15367} else {
15368 {
15369 UQI opval = 0;
15370 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15371 written |= (1 << 3);
15372 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15373 }
15374}
15375
15376 abuf->written = written;
15377 return vpc;
15378#undef FLD
15379}
15380
15381/* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15382
15383static SEM_PC
15384SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15385{
15386#define FLD(f) abuf->fields.sfmt_cckeq.f
15387 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15388 int UNUSED written = 0;
15389 IADDR UNUSED pc = abuf->addr;
15390 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15391
15392if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15393if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15394 {
15395 UQI opval = 3;
15396 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15397 written |= (1 << 3);
15398 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15399 }
15400} else {
15401 {
15402 UQI opval = 2;
15403 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15404 written |= (1 << 3);
15405 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15406 }
15407}
15408} else {
15409 {
15410 UQI opval = 0;
15411 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15412 written |= (1 << 3);
15413 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15414 }
15415}
15416
15417 abuf->written = written;
15418 return vpc;
15419#undef FLD
15420}
15421
15422/* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15423
15424static SEM_PC
15425SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15426{
15427#define FLD(f) abuf->fields.sfmt_cfckne.f
15428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15429 int UNUSED written = 0;
15430 IADDR UNUSED pc = abuf->addr;
15431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15432
15433if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15434 {
15435 UQI opval = 3;
15436 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15437 written |= (1 << 2);
15438 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15439 }
15440} else {
15441 {
15442 UQI opval = 0;
15443 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15444 written |= (1 << 2);
15445 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15446 }
15447}
15448
15449 abuf->written = written;
15450 return vpc;
15451#undef FLD
15452}
15453
15454/* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15455
15456static SEM_PC
15457SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15458{
15459#define FLD(f) abuf->fields.sfmt_cfckne.f
15460 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15461 int UNUSED written = 0;
15462 IADDR UNUSED pc = abuf->addr;
15463 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15464
15465if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15466 {
15467 UQI opval = 2;
15468 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15469 written |= (1 << 2);
15470 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15471 }
15472} else {
15473 {
15474 UQI opval = 0;
15475 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15476 written |= (1 << 2);
15477 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15478 }
15479}
15480
15481 abuf->written = written;
15482 return vpc;
15483#undef FLD
15484}
15485
15486/* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15487
15488static SEM_PC
15489SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15490{
15491#define FLD(f) abuf->fields.sfmt_cfckne.f
15492 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15493 int UNUSED written = 0;
15494 IADDR UNUSED pc = abuf->addr;
15495 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15496
15497if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15498if (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))))) {
15499 {
15500 UQI opval = 3;
15501 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15502 written |= (1 << 3);
15503 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15504 }
15505} else {
15506 {
15507 UQI opval = 2;
15508 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15509 written |= (1 << 3);
15510 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15511 }
15512}
15513} else {
15514 {
15515 UQI opval = 0;
15516 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15517 written |= (1 << 3);
15518 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15519 }
15520}
15521
15522 abuf->written = written;
15523 return vpc;
15524#undef FLD
15525}
15526
15527/* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15528
15529static SEM_PC
15530SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15531{
15532#define FLD(f) abuf->fields.sfmt_cfckne.f
15533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15534 int UNUSED written = 0;
15535 IADDR UNUSED pc = abuf->addr;
15536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15537
15538if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15539if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15540 {
15541 UQI opval = 3;
15542 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15543 written |= (1 << 3);
15544 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15545 }
15546} else {
15547 {
15548 UQI opval = 2;
15549 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15550 written |= (1 << 3);
15551 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15552 }
15553}
15554} else {
15555 {
15556 UQI opval = 0;
15557 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15558 written |= (1 << 3);
15559 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15560 }
15561}
15562
15563 abuf->written = written;
15564 return vpc;
15565#undef FLD
15566}
15567
15568/* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15569
15570static SEM_PC
15571SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15572{
15573#define FLD(f) abuf->fields.sfmt_cfckne.f
15574 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15575 int UNUSED written = 0;
15576 IADDR UNUSED pc = abuf->addr;
15577 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15578
15579if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15580if (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)))) {
15581 {
15582 UQI opval = 3;
15583 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15584 written |= (1 << 3);
15585 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15586 }
15587} else {
15588 {
15589 UQI opval = 2;
15590 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15591 written |= (1 << 3);
15592 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15593 }
15594}
15595} else {
15596 {
15597 UQI opval = 0;
15598 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15599 written |= (1 << 3);
15600 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15601 }
15602}
15603
15604 abuf->written = written;
15605 return vpc;
15606#undef FLD
15607}
15608
15609/* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15610
15611static SEM_PC
15612SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15613{
15614#define FLD(f) abuf->fields.sfmt_cfckne.f
15615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15616 int UNUSED written = 0;
15617 IADDR UNUSED pc = abuf->addr;
15618 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15619
15620if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15621if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15622 {
15623 UQI opval = 3;
15624 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15625 written |= (1 << 3);
15626 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15627 }
15628} else {
15629 {
15630 UQI opval = 2;
15631 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15632 written |= (1 << 3);
15633 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15634 }
15635}
15636} else {
15637 {
15638 UQI opval = 0;
15639 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15640 written |= (1 << 3);
15641 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15642 }
15643}
15644
15645 abuf->written = written;
15646 return vpc;
15647#undef FLD
15648}
15649
15650/* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15651
15652static SEM_PC
15653SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15654{
15655#define FLD(f) abuf->fields.sfmt_cfckne.f
15656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15657 int UNUSED written = 0;
15658 IADDR UNUSED pc = abuf->addr;
15659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15660
15661if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15662if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15663 {
15664 UQI opval = 3;
15665 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15666 written |= (1 << 3);
15667 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15668 }
15669} else {
15670 {
15671 UQI opval = 2;
15672 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15673 written |= (1 << 3);
15674 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15675 }
15676}
15677} else {
15678 {
15679 UQI opval = 0;
15680 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15681 written |= (1 << 3);
15682 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15683 }
15684}
15685
15686 abuf->written = written;
15687 return vpc;
15688#undef FLD
15689}
15690
15691/* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15692
15693static SEM_PC
15694SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15695{
15696#define FLD(f) abuf->fields.sfmt_cfckne.f
15697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15698 int UNUSED written = 0;
15699 IADDR UNUSED pc = abuf->addr;
15700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15701
15702if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15703if (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)))) {
15704 {
15705 UQI opval = 3;
15706 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15707 written |= (1 << 3);
15708 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15709 }
15710} else {
15711 {
15712 UQI opval = 2;
15713 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15714 written |= (1 << 3);
15715 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15716 }
15717}
15718} else {
15719 {
15720 UQI opval = 0;
15721 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15722 written |= (1 << 3);
15723 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15724 }
15725}
15726
15727 abuf->written = written;
15728 return vpc;
15729#undef FLD
15730}
15731
15732/* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15733
15734static SEM_PC
15735SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15736{
15737#define FLD(f) abuf->fields.sfmt_cfckne.f
15738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15739 int UNUSED written = 0;
15740 IADDR UNUSED pc = abuf->addr;
15741 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15742
15743if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15744if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15745 {
15746 UQI opval = 3;
15747 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15748 written |= (1 << 3);
15749 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15750 }
15751} else {
15752 {
15753 UQI opval = 2;
15754 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15755 written |= (1 << 3);
15756 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15757 }
15758}
15759} else {
15760 {
15761 UQI opval = 0;
15762 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15763 written |= (1 << 3);
15764 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15765 }
15766}
15767
15768 abuf->written = written;
15769 return vpc;
15770#undef FLD
15771}
15772
15773/* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15774
15775static SEM_PC
15776SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15777{
15778#define FLD(f) abuf->fields.sfmt_cfckne.f
15779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15780 int UNUSED written = 0;
15781 IADDR UNUSED pc = abuf->addr;
15782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15783
15784if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15785if (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))))) {
15786 {
15787 UQI opval = 3;
15788 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15789 written |= (1 << 3);
15790 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15791 }
15792} else {
15793 {
15794 UQI opval = 2;
15795 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15796 written |= (1 << 3);
15797 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15798 }
15799}
15800} else {
15801 {
15802 UQI opval = 0;
15803 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15804 written |= (1 << 3);
15805 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15806 }
15807}
15808
15809 abuf->written = written;
15810 return vpc;
15811#undef FLD
15812}
15813
15814/* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15815
15816static SEM_PC
15817SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15818{
15819#define FLD(f) abuf->fields.sfmt_cfckne.f
15820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15821 int UNUSED written = 0;
15822 IADDR UNUSED pc = abuf->addr;
15823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15824
15825if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15826if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15827 {
15828 UQI opval = 3;
15829 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15830 written |= (1 << 3);
15831 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15832 }
15833} else {
15834 {
15835 UQI opval = 2;
15836 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15837 written |= (1 << 3);
15838 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15839 }
15840}
15841} else {
15842 {
15843 UQI opval = 0;
15844 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15845 written |= (1 << 3);
15846 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15847 }
15848}
15849
15850 abuf->written = written;
15851 return vpc;
15852#undef FLD
15853}
15854
15855/* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15856
15857static SEM_PC
15858SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15859{
15860#define FLD(f) abuf->fields.sfmt_cfckne.f
15861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15862 int UNUSED written = 0;
15863 IADDR UNUSED pc = abuf->addr;
15864 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15865
15866if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15867if (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)))) {
15868 {
15869 UQI opval = 3;
15870 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15871 written |= (1 << 3);
15872 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15873 }
15874} else {
15875 {
15876 UQI opval = 2;
15877 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15878 written |= (1 << 3);
15879 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15880 }
15881}
15882} else {
15883 {
15884 UQI opval = 0;
15885 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15886 written |= (1 << 3);
15887 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15888 }
15889}
15890
15891 abuf->written = written;
15892 return vpc;
15893#undef FLD
15894}
15895
15896/* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15897
15898static SEM_PC
15899SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15900{
15901#define FLD(f) abuf->fields.sfmt_cfckne.f
15902 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15903 int UNUSED written = 0;
15904 IADDR UNUSED pc = abuf->addr;
15905 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15906
15907if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15908if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15909 {
15910 UQI opval = 3;
15911 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15912 written |= (1 << 3);
15913 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15914 }
15915} else {
15916 {
15917 UQI opval = 2;
15918 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15919 written |= (1 << 3);
15920 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15921 }
15922}
15923} else {
15924 {
15925 UQI opval = 0;
15926 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15927 written |= (1 << 3);
15928 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15929 }
15930}
15931
15932 abuf->written = written;
15933 return vpc;
15934#undef FLD
15935}
15936
15937/* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
15938
15939static SEM_PC
15940SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15941{
15942#define FLD(f) abuf->fields.sfmt_cfckne.f
15943 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15944 int UNUSED written = 0;
15945 IADDR UNUSED pc = abuf->addr;
15946 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15947
15948if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15949if (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))))) {
15950 {
15951 UQI opval = 3;
15952 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15953 written |= (1 << 3);
15954 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15955 }
15956} else {
15957 {
15958 UQI opval = 2;
15959 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15960 written |= (1 << 3);
15961 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15962 }
15963}
15964} else {
15965 {
15966 UQI opval = 0;
15967 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15968 written |= (1 << 3);
15969 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15970 }
15971}
15972
15973 abuf->written = written;
15974 return vpc;
15975#undef FLD
15976}
15977
15978/* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
15979
15980static SEM_PC
15981SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15982{
15983#define FLD(f) abuf->fields.sfmt_cfckne.f
15984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15985 int UNUSED written = 0;
15986 IADDR UNUSED pc = abuf->addr;
15987 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15988
15989if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15990if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
15991 {
15992 UQI opval = 3;
15993 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15994 written |= (1 << 3);
15995 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15996 }
15997} else {
15998 {
15999 UQI opval = 2;
16000 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16001 written |= (1 << 3);
16002 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16003 }
16004}
16005} else {
16006 {
16007 UQI opval = 0;
16008 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16009 written |= (1 << 3);
16010 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16011 }
16012}
16013
16014 abuf->written = written;
16015 return vpc;
16016#undef FLD
16017}
16018
16019/* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16020
16021static SEM_PC
16022SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16023{
16024#define FLD(f) abuf->fields.sfmt_cfckne.f
16025 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16026 int UNUSED written = 0;
16027 IADDR UNUSED pc = abuf->addr;
16028 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16029
16030if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16031if (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))))) {
16032 {
16033 UQI opval = 3;
16034 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16035 written |= (1 << 3);
16036 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16037 }
16038} else {
16039 {
16040 UQI opval = 2;
16041 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16042 written |= (1 << 3);
16043 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16044 }
16045}
16046} else {
16047 {
16048 UQI opval = 0;
16049 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16050 written |= (1 << 3);
16051 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16052 }
16053}
16054
16055 abuf->written = written;
16056 return vpc;
16057#undef FLD
16058}
16059
16060/* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16061
16062static SEM_PC
16063SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16064{
16065#define FLD(f) abuf->fields.sfmt_cjmpl.f
16066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16067 int UNUSED written = 0;
16068 IADDR UNUSED pc = abuf->addr;
16069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16070
16071if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16072{
16073if (EQSI (FLD (f_LI), 1)) {
16074frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16075}
16076 {
16077 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16078 sim_queue_pc_write (current_cpu, opval);
16079 written |= (1 << 6);
16080 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16081 }
16082frvbf_model_branch (current_cpu, pc, 2);
16083}
16084}
16085
16086 abuf->written = written;
16087 return vpc;
16088#undef FLD
16089}
16090
16091/* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16092
16093static SEM_PC
16094SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16095{
16096#define FLD(f) abuf->fields.sfmt_cjmpl.f
16097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16098 int UNUSED written = 0;
16099 IADDR UNUSED pc = abuf->addr;
16100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16101
16102if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16103{
16104if (EQSI (FLD (f_LI), 1)) {
16105frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16106}
16107 {
16108 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16109 sim_queue_pc_write (current_cpu, opval);
16110 written |= (1 << 6);
16111 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16112 }
16113frvbf_model_branch (current_cpu, pc, 2);
16114}
16115}
16116
16117 abuf->written = written;
16118 return vpc;
16119#undef FLD
16120}
16121
16122/* ici: ici$pack @($GRi,$GRj) */
16123
16124static SEM_PC
16125SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16126{
16127#define FLD(f) abuf->fields.sfmt_icpl.f
16128 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16129 int UNUSED written = 0;
16130 IADDR UNUSED pc = abuf->addr;
16131 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16132
16133frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16134
16135 return vpc;
16136#undef FLD
16137}
16138
16139/* dci: dci$pack @($GRi,$GRj) */
16140
16141static SEM_PC
16142SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16143{
16144#define FLD(f) abuf->fields.sfmt_icpl.f
16145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16146 int UNUSED written = 0;
16147 IADDR UNUSED pc = abuf->addr;
16148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16149
16150frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16151
16152 return vpc;
16153#undef FLD
16154}
16155
16156/* icei: icei$pack @($GRi,$GRj),$ae */
16157
16158static SEM_PC
16159SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16160{
16161#define FLD(f) abuf->fields.sfmt_icei.f
16162 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16163 int UNUSED written = 0;
16164 IADDR UNUSED pc = abuf->addr;
16165 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16166
16167if (EQSI (FLD (f_ae), 0)) {
16168frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16169} else {
16170frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16171}
16172
16173 return vpc;
16174#undef FLD
16175}
16176
16177/* dcei: dcei$pack @($GRi,$GRj),$ae */
16178
16179static SEM_PC
16180SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16181{
16182#define FLD(f) abuf->fields.sfmt_icei.f
16183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16184 int UNUSED written = 0;
16185 IADDR UNUSED pc = abuf->addr;
16186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16187
16188if (EQSI (FLD (f_ae), 0)) {
16189frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16190} else {
16191frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16192}
16193
16194 return vpc;
16195#undef FLD
16196}
16197
16198/* dcf: dcf$pack @($GRi,$GRj) */
16199
16200static SEM_PC
16201SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16202{
16203#define FLD(f) abuf->fields.sfmt_icpl.f
16204 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16205 int UNUSED written = 0;
16206 IADDR UNUSED pc = abuf->addr;
16207 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16208
16209frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16210
16211 return vpc;
16212#undef FLD
16213}
16214
16215/* dcef: dcef$pack @($GRi,$GRj),$ae */
16216
16217static SEM_PC
16218SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16219{
16220#define FLD(f) abuf->fields.sfmt_icei.f
16221 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16222 int UNUSED written = 0;
16223 IADDR UNUSED pc = abuf->addr;
16224 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16225
16226if (EQSI (FLD (f_ae), 0)) {
16227frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16228} else {
16229frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16230}
16231
16232 return vpc;
16233#undef FLD
16234}
16235
16236/* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16237
16238static SEM_PC
16239SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16240{
16241#define FLD(f) abuf->fields.fmt_empty.f
16242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16243 int UNUSED written = 0;
16244 IADDR UNUSED pc = abuf->addr;
16245 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16246
16247((void) 0); /*nop*/
16248
16249 return vpc;
16250#undef FLD
16251}
16252
16253/* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16254
16255static SEM_PC
16256SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16257{
16258#define FLD(f) abuf->fields.fmt_empty.f
16259 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16260 int UNUSED written = 0;
16261 IADDR UNUSED pc = abuf->addr;
16262 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16263
16264((void) 0); /*nop*/
16265
16266 return vpc;
16267#undef FLD
16268}
16269
16270/* itlbi: itlbi$pack @($GRi,$GRj) */
16271
16272static SEM_PC
16273SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16274{
16275#define FLD(f) abuf->fields.fmt_empty.f
16276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16277 int UNUSED written = 0;
16278 IADDR UNUSED pc = abuf->addr;
16279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16280
16281((void) 0); /*nop*/
16282
16283 return vpc;
16284#undef FLD
16285}
16286
16287/* dtlbi: dtlbi$pack @($GRi,$GRj) */
16288
16289static SEM_PC
16290SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16291{
16292#define FLD(f) abuf->fields.fmt_empty.f
16293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16294 int UNUSED written = 0;
16295 IADDR UNUSED pc = abuf->addr;
16296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16297
16298((void) 0); /*nop*/
16299
16300 return vpc;
16301#undef FLD
16302}
16303
16304/* icpl: icpl$pack $GRi,$GRj,$lock */
16305
16306static SEM_PC
16307SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16308{
16309#define FLD(f) abuf->fields.sfmt_icpl.f
16310 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16311 int UNUSED written = 0;
16312 IADDR UNUSED pc = abuf->addr;
16313 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16314
16315frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16316
16317 return vpc;
16318#undef FLD
16319}
16320
16321/* dcpl: dcpl$pack $GRi,$GRj,$lock */
16322
16323static SEM_PC
16324SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16325{
16326#define FLD(f) abuf->fields.sfmt_icpl.f
16327 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16328 int UNUSED written = 0;
16329 IADDR UNUSED pc = abuf->addr;
16330 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16331
16332frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16333
16334 return vpc;
16335#undef FLD
16336}
16337
16338/* icul: icul$pack $GRi */
16339
16340static SEM_PC
16341SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16342{
16343#define FLD(f) abuf->fields.sfmt_jmpil.f
16344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16345 int UNUSED written = 0;
16346 IADDR UNUSED pc = abuf->addr;
16347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16348
16349frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16350
16351 return vpc;
16352#undef FLD
16353}
16354
16355/* dcul: dcul$pack $GRi */
16356
16357static SEM_PC
16358SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16359{
16360#define FLD(f) abuf->fields.sfmt_jmpil.f
16361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16362 int UNUSED written = 0;
16363 IADDR UNUSED pc = abuf->addr;
16364 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16365
16366frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16367
16368 return vpc;
16369#undef FLD
16370}
16371
16372/* bar: bar$pack */
16373
16374static SEM_PC
16375SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16376{
16377#define FLD(f) abuf->fields.fmt_empty.f
16378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16379 int UNUSED written = 0;
16380 IADDR UNUSED pc = abuf->addr;
16381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16382
16383((void) 0); /*nop*/
16384
16385 return vpc;
16386#undef FLD
16387}
16388
16389/* membar: membar$pack */
16390
16391static SEM_PC
16392SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16393{
16394#define FLD(f) abuf->fields.fmt_empty.f
16395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16396 int UNUSED written = 0;
16397 IADDR UNUSED pc = abuf->addr;
16398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16399
16400((void) 0); /*nop*/
16401
16402 return vpc;
16403#undef FLD
16404}
16405
676a64f4
RS
16406/* lrai: lrai$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16407
16408static SEM_PC
16409SEM_FN_NAME (frvbf,lrai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16410{
16411#define FLD(f) abuf->fields.fmt_empty.f
16412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16413 int UNUSED written = 0;
16414 IADDR UNUSED pc = abuf->addr;
16415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16416
16417((void) 0); /*nop*/
16418
16419 return vpc;
16420#undef FLD
16421}
16422
16423/* lrad: lrad$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16424
16425static SEM_PC
16426SEM_FN_NAME (frvbf,lrad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16427{
16428#define FLD(f) abuf->fields.fmt_empty.f
16429 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16430 int UNUSED written = 0;
16431 IADDR UNUSED pc = abuf->addr;
16432 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16433
16434((void) 0); /*nop*/
16435
16436 return vpc;
16437#undef FLD
16438}
16439
16440/* tlbpr: tlbpr$pack $GRi,$GRj,$TLBPRopx,$TLBPRL */
16441
16442static SEM_PC
16443SEM_FN_NAME (frvbf,tlbpr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16444{
16445#define FLD(f) abuf->fields.fmt_empty.f
16446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16447 int UNUSED written = 0;
16448 IADDR UNUSED pc = abuf->addr;
16449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16450
16451((void) 0); /*nop*/
16452
16453 return vpc;
16454#undef FLD
16455}
16456
b34f6357
DB
16457/* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16458
16459static SEM_PC
16460SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16461{
16462#define FLD(f) abuf->fields.fmt_empty.f
16463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16464 int UNUSED written = 0;
16465 IADDR UNUSED pc = abuf->addr;
16466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16467
16468((void) 0); /*nop*/
16469
16470 return vpc;
16471#undef FLD
16472}
16473
16474/* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16475
16476static SEM_PC
16477SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16478{
16479#define FLD(f) abuf->fields.fmt_empty.f
16480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16481 int UNUSED written = 0;
16482 IADDR UNUSED pc = abuf->addr;
16483 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16484
16485((void) 0); /*nop*/
16486
16487 return vpc;
16488#undef FLD
16489}
16490
16491/* clrgr: clrgr$pack $GRk */
16492
16493static SEM_PC
16494SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16495{
153431d6 16496#define FLD(f) abuf->fields.sfmt_swapi.f
b34f6357
DB
16497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16498 int UNUSED written = 0;
16499 IADDR UNUSED pc = abuf->addr;
16500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16501
153431d6
DB
16502{
16503frv_ref_SI (GET_H_GR (FLD (f_GRk)));
b34f6357 16504frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
153431d6 16505}
b34f6357
DB
16506
16507 return vpc;
16508#undef FLD
16509}
16510
16511/* clrfr: clrfr$pack $FRk */
16512
16513static SEM_PC
16514SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16515{
153431d6 16516#define FLD(f) abuf->fields.sfmt_cfmadds.f
b34f6357
DB
16517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16518 int UNUSED written = 0;
16519 IADDR UNUSED pc = abuf->addr;
16520 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16521
153431d6
DB
16522{
16523frv_ref_SI (GET_H_FR (FLD (f_FRk)));
b34f6357 16524frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
153431d6 16525}
b34f6357
DB
16526
16527 return vpc;
16528#undef FLD
16529}
16530
16531/* clrga: clrga$pack */
16532
16533static SEM_PC
16534SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16535{
16536#define FLD(f) abuf->fields.fmt_empty.f
16537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16538 int UNUSED written = 0;
16539 IADDR UNUSED pc = abuf->addr;
16540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16541
16542frvbf_clear_ne_flags (current_cpu, -1, 0);
16543
16544 return vpc;
16545#undef FLD
16546}
16547
16548/* clrfa: clrfa$pack */
16549
16550static SEM_PC
16551SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16552{
16553#define FLD(f) abuf->fields.fmt_empty.f
16554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16555 int UNUSED written = 0;
16556 IADDR UNUSED pc = abuf->addr;
16557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16558
16559frvbf_clear_ne_flags (current_cpu, -1, 1);
16560
16561 return vpc;
16562#undef FLD
16563}
16564
16565/* commitgr: commitgr$pack $GRk */
16566
16567static SEM_PC
16568SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16569{
16570#define FLD(f) abuf->fields.sfmt_setlos.f
16571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16572 int UNUSED written = 0;
16573 IADDR UNUSED pc = abuf->addr;
16574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16575
16576frvbf_commit (current_cpu, FLD (f_GRk), 0);
16577
16578 return vpc;
16579#undef FLD
16580}
16581
16582/* commitfr: commitfr$pack $FRk */
16583
16584static SEM_PC
16585SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16586{
16587#define FLD(f) abuf->fields.sfmt_mhsethis.f
16588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16589 int UNUSED written = 0;
16590 IADDR UNUSED pc = abuf->addr;
16591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16592
16593frvbf_commit (current_cpu, FLD (f_FRk), 1);
16594
16595 return vpc;
16596#undef FLD
16597}
16598
16599/* commitga: commitga$pack */
16600
16601static SEM_PC
16602SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16603{
16604#define FLD(f) abuf->fields.fmt_empty.f
16605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16606 int UNUSED written = 0;
16607 IADDR UNUSED pc = abuf->addr;
16608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16609
16610frvbf_commit (current_cpu, -1, 0);
16611
16612 return vpc;
16613#undef FLD
16614}
16615
16616/* commitfa: commitfa$pack */
16617
16618static SEM_PC
16619SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16620{
16621#define FLD(f) abuf->fields.fmt_empty.f
16622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16623 int UNUSED written = 0;
16624 IADDR UNUSED pc = abuf->addr;
16625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16626
16627frvbf_commit (current_cpu, -1, 1);
16628
16629 return vpc;
16630#undef FLD
16631}
16632
16633/* fitos: fitos$pack $FRintj,$FRk */
16634
16635static SEM_PC
16636SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16637{
16638#define FLD(f) abuf->fields.sfmt_fditos.f
16639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16640 int UNUSED written = 0;
16641 IADDR UNUSED pc = abuf->addr;
16642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16643
16644 {
79e59fe6 16645 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16646 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16647 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16648 }
16649
16650 return vpc;
16651#undef FLD
16652}
16653
16654/* fstoi: fstoi$pack $FRj,$FRintk */
16655
16656static SEM_PC
16657SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16658{
16659#define FLD(f) abuf->fields.sfmt_fdstoi.f
16660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16661 int UNUSED written = 0;
16662 IADDR UNUSED pc = abuf->addr;
16663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16664
16665 {
79e59fe6 16666 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16667 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16668 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16669 }
16670
16671 return vpc;
16672#undef FLD
16673}
16674
16675/* fitod: fitod$pack $FRintj,$FRdoublek */
16676
16677static SEM_PC
16678SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16679{
16680#define FLD(f) abuf->fields.sfmt_fitod.f
16681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16682 int UNUSED written = 0;
16683 IADDR UNUSED pc = abuf->addr;
16684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16685
16686 {
79e59fe6 16687 DF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsidf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16688 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16689 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16690 }
16691
16692 return vpc;
16693#undef FLD
16694}
16695
16696/* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16697
16698static SEM_PC
16699SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16700{
16701#define FLD(f) abuf->fields.sfmt_fdtoi.f
16702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16703 int UNUSED written = 0;
16704 IADDR UNUSED pc = abuf->addr;
16705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16706
16707 {
79e59fe6 16708 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixdfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
16709 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16710 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16711 }
16712
16713 return vpc;
16714#undef FLD
16715}
16716
16717/* fditos: fditos$pack $FRintj,$FRk */
16718
16719static SEM_PC
16720SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16721{
16722#define FLD(f) abuf->fields.sfmt_fditos.f
16723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16724 int UNUSED written = 0;
16725 IADDR UNUSED pc = abuf->addr;
16726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16727
16728{
16729 {
79e59fe6 16730 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16731 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16732 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16733 }
16734 {
79e59fe6 16735 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
b34f6357
DB
16736 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16737 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16738 }
16739}
16740
16741 return vpc;
16742#undef FLD
16743}
16744
16745/* fdstoi: fdstoi$pack $FRj,$FRintk */
16746
16747static SEM_PC
16748SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16749{
16750#define FLD(f) abuf->fields.sfmt_fdstoi.f
16751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16752 int UNUSED written = 0;
16753 IADDR UNUSED pc = abuf->addr;
16754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16755
16756{
16757 {
79e59fe6 16758 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16759 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16760 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16761 }
16762 {
79e59fe6 16763 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
16764 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16765 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16766 }
16767}
16768
16769 return vpc;
16770#undef FLD
16771}
16772
16773/* nfditos: nfditos$pack $FRintj,$FRk */
16774
16775static SEM_PC
16776SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16777{
16778#define FLD(f) abuf->fields.sfmt_fditos.f
16779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16780 int UNUSED written = 0;
16781 IADDR UNUSED pc = abuf->addr;
16782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16783
16784{
16785frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16786 {
79e59fe6 16787 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16788 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16789 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16790 }
16791frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16792 {
79e59fe6 16793 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
b34f6357
DB
16794 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16795 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16796 }
16797}
16798
16799 return vpc;
16800#undef FLD
16801}
16802
16803/* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16804
16805static SEM_PC
16806SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16807{
16808#define FLD(f) abuf->fields.sfmt_fdstoi.f
16809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16810 int UNUSED written = 0;
16811 IADDR UNUSED pc = abuf->addr;
16812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16813
16814{
16815frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16816 {
79e59fe6 16817 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16818 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16819 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16820 }
16821frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16822 {
79e59fe6 16823 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
16824 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16825 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16826 }
16827}
16828
16829 return vpc;
16830#undef FLD
16831}
16832
16833/* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16834
16835static SEM_PC
16836SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16837{
16838#define FLD(f) abuf->fields.sfmt_cfitos.f
16839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16840 int UNUSED written = 0;
16841 IADDR UNUSED pc = abuf->addr;
16842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16843
16844if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16845 {
79e59fe6 16846 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16847 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16848 written |= (1 << 3);
16849 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16850 }
16851}
16852
16853 abuf->written = written;
16854 return vpc;
16855#undef FLD
16856}
16857
16858/* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16859
16860static SEM_PC
16861SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16862{
16863#define FLD(f) abuf->fields.sfmt_cfstoi.f
16864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16865 int UNUSED written = 0;
16866 IADDR UNUSED pc = abuf->addr;
16867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16868
16869if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16870 {
79e59fe6 16871 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16872 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16873 written |= (1 << 3);
16874 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16875 }
16876}
16877
16878 abuf->written = written;
16879 return vpc;
16880#undef FLD
16881}
16882
16883/* nfitos: nfitos$pack $FRintj,$FRk */
16884
16885static SEM_PC
16886SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16887{
16888#define FLD(f) abuf->fields.sfmt_fditos.f
16889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16890 int UNUSED written = 0;
16891 IADDR UNUSED pc = abuf->addr;
16892 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16893
16894{
16895frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16896 {
79e59fe6 16897 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16898 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16899 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16900 }
16901}
16902
16903 return vpc;
16904#undef FLD
16905}
16906
16907/* nfstoi: nfstoi$pack $FRj,$FRintk */
16908
16909static SEM_PC
16910SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16911{
16912#define FLD(f) abuf->fields.sfmt_fdstoi.f
16913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16914 int UNUSED written = 0;
16915 IADDR UNUSED pc = abuf->addr;
16916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16917
16918{
16919frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16920 {
79e59fe6 16921 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16922 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16923 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16924 }
16925}
16926
16927 return vpc;
16928#undef FLD
16929}
16930
16931/* fmovs: fmovs$pack $FRj,$FRk */
16932
16933static SEM_PC
16934SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16935{
16936#define FLD(f) abuf->fields.sfmt_cfmadds.f
16937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16938 int UNUSED written = 0;
16939 IADDR UNUSED pc = abuf->addr;
16940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16941
16942 {
16943 SF opval = GET_H_FR (FLD (f_FRj));
16944 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16945 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16946 }
16947
16948 return vpc;
16949#undef FLD
16950}
16951
16952/* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16953
16954static SEM_PC
16955SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16956{
16957#define FLD(f) abuf->fields.sfmt_fmaddd.f
16958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16959 int UNUSED written = 0;
16960 IADDR UNUSED pc = abuf->addr;
16961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16962
16963 {
16964 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16965 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16966 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16967 }
16968
16969 return vpc;
16970#undef FLD
16971}
16972
16973/* fdmovs: fdmovs$pack $FRj,$FRk */
16974
16975static SEM_PC
16976SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16977{
16978#define FLD(f) abuf->fields.sfmt_fdmadds.f
16979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16980 int UNUSED written = 0;
16981 IADDR UNUSED pc = abuf->addr;
16982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16983
16984{
16985 {
16986 SF opval = GET_H_FR (FLD (f_FRj));
16987 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16988 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16989 }
16990 {
16991 SF opval = GET_H_FR (((FLD (f_FRj)) + (1)));
16992 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16993 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16994 }
16995}
16996
16997 return vpc;
16998#undef FLD
16999}
17000
17001/* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
17002
17003static SEM_PC
17004SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17005{
17006#define FLD(f) abuf->fields.sfmt_cfmadds.f
17007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17008 int UNUSED written = 0;
17009 IADDR UNUSED pc = abuf->addr;
17010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17011
17012if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17013 {
17014 SF opval = GET_H_FR (FLD (f_FRj));
17015 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17016 written |= (1 << 3);
17017 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17018 }
17019}
17020
17021 abuf->written = written;
17022 return vpc;
17023#undef FLD
17024}
17025
17026/* fnegs: fnegs$pack $FRj,$FRk */
17027
17028static SEM_PC
17029SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17030{
17031#define FLD(f) abuf->fields.sfmt_cfmadds.f
17032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17033 int UNUSED written = 0;
17034 IADDR UNUSED pc = abuf->addr;
17035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17036
17037 {
79e59fe6 17038 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17039 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17040 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17041 }
17042
17043 return vpc;
17044#undef FLD
17045}
17046
17047/* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17048
17049static SEM_PC
17050SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17051{
17052#define FLD(f) abuf->fields.sfmt_fmaddd.f
17053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17054 int UNUSED written = 0;
17055 IADDR UNUSED pc = abuf->addr;
17056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17057
17058 {
79e59fe6 17059 DF opval = CGEN_CPU_FPU (current_cpu)->ops->negdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17060 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17061 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17062 }
17063
17064 return vpc;
17065#undef FLD
17066}
17067
17068/* fdnegs: fdnegs$pack $FRj,$FRk */
17069
17070static SEM_PC
17071SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17072{
17073#define FLD(f) abuf->fields.sfmt_fdmadds.f
17074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17075 int UNUSED written = 0;
17076 IADDR UNUSED pc = abuf->addr;
17077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17078
17079{
17080 {
79e59fe6 17081 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17082 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17083 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17084 }
17085 {
79e59fe6 17086 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
17087 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17088 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17089 }
17090}
17091
17092 return vpc;
17093#undef FLD
17094}
17095
17096/* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17097
17098static SEM_PC
17099SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17100{
17101#define FLD(f) abuf->fields.sfmt_cfmadds.f
17102 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17103 int UNUSED written = 0;
17104 IADDR UNUSED pc = abuf->addr;
17105 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17106
17107if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17108 {
79e59fe6 17109 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17110 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17111 written |= (1 << 3);
17112 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17113 }
17114}
17115
17116 abuf->written = written;
17117 return vpc;
17118#undef FLD
17119}
17120
17121/* fabss: fabss$pack $FRj,$FRk */
17122
17123static SEM_PC
17124SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17125{
17126#define FLD(f) abuf->fields.sfmt_cfmadds.f
17127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17128 int UNUSED written = 0;
17129 IADDR UNUSED pc = abuf->addr;
17130 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17131
17132 {
79e59fe6 17133 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17134 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17135 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17136 }
17137
17138 return vpc;
17139#undef FLD
17140}
17141
17142/* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17143
17144static SEM_PC
17145SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17146{
17147#define FLD(f) abuf->fields.sfmt_fmaddd.f
17148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17149 int UNUSED written = 0;
17150 IADDR UNUSED pc = abuf->addr;
17151 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17152
17153 {
79e59fe6 17154 DF opval = CGEN_CPU_FPU (current_cpu)->ops->absdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17155 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17156 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17157 }
17158
17159 return vpc;
17160#undef FLD
17161}
17162
17163/* fdabss: fdabss$pack $FRj,$FRk */
17164
17165static SEM_PC
17166SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17167{
17168#define FLD(f) abuf->fields.sfmt_fdmadds.f
17169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17170 int UNUSED written = 0;
17171 IADDR UNUSED pc = abuf->addr;
17172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17173
17174{
17175 {
79e59fe6 17176 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17177 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17178 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17179 }
17180 {
79e59fe6 17181 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
17182 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17183 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17184 }
17185}
17186
17187 return vpc;
17188#undef FLD
17189}
17190
17191/* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17192
17193static SEM_PC
17194SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17195{
17196#define FLD(f) abuf->fields.sfmt_cfmadds.f
17197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17198 int UNUSED written = 0;
17199 IADDR UNUSED pc = abuf->addr;
17200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17201
17202if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17203 {
79e59fe6 17204 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17205 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17206 written |= (1 << 3);
17207 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17208 }
17209}
17210
17211 abuf->written = written;
17212 return vpc;
17213#undef FLD
17214}
17215
17216/* fsqrts: fsqrts$pack $FRj,$FRk */
17217
17218static SEM_PC
17219SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17220{
17221#define FLD(f) abuf->fields.sfmt_cfmadds.f
17222 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17223 int UNUSED written = 0;
17224 IADDR UNUSED pc = abuf->addr;
17225 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17226
17227 {
79e59fe6 17228 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17229 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17230 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17231 }
17232
17233 return vpc;
17234#undef FLD
17235}
17236
17237/* fdsqrts: fdsqrts$pack $FRj,$FRk */
17238
17239static SEM_PC
17240SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17241{
17242#define FLD(f) abuf->fields.sfmt_fdmadds.f
17243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17244 int UNUSED written = 0;
17245 IADDR UNUSED pc = abuf->addr;
17246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17247
17248{
17249 {
79e59fe6 17250 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17251 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17252 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17253 }
17254 {
79e59fe6 17255 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
17256 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17257 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17258 }
17259}
17260
17261 return vpc;
17262#undef FLD
17263}
17264
17265/* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17266
17267static SEM_PC
17268SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17269{
17270#define FLD(f) abuf->fields.sfmt_fdmadds.f
17271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17272 int UNUSED written = 0;
17273 IADDR UNUSED pc = abuf->addr;
17274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17275
17276{
17277frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17278 {
79e59fe6 17279 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17280 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17281 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17282 }
17283frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17284 {
79e59fe6 17285 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
17286 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17287 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17288 }
17289}
17290
17291 return vpc;
17292#undef FLD
17293}
17294
17295/* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17296
17297static SEM_PC
17298SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17299{
17300#define FLD(f) abuf->fields.sfmt_fmaddd.f
17301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17302 int UNUSED written = 0;
17303 IADDR UNUSED pc = abuf->addr;
17304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17305
17306 {
79e59fe6 17307 DF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17308 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17309 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17310 }
17311
17312 return vpc;
17313#undef FLD
17314}
17315
17316/* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17317
17318static SEM_PC
17319SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17320{
17321#define FLD(f) abuf->fields.sfmt_cfmadds.f
17322 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17323 int UNUSED written = 0;
17324 IADDR UNUSED pc = abuf->addr;
17325 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17326
17327if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17328 {
79e59fe6 17329 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17330 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17331 written |= (1 << 3);
17332 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17333 }
17334}
17335
17336 abuf->written = written;
17337 return vpc;
17338#undef FLD
17339}
17340
17341/* nfsqrts: nfsqrts$pack $FRj,$FRk */
17342
17343static SEM_PC
17344SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17345{
17346#define FLD(f) abuf->fields.sfmt_cfmadds.f
17347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17348 int UNUSED written = 0;
17349 IADDR UNUSED pc = abuf->addr;
17350 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17351
17352{
17353frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17354 {
79e59fe6 17355 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17356 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17357 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17358 }
17359}
17360
17361 return vpc;
17362#undef FLD
17363}
17364
17365/* fadds: fadds$pack $FRi,$FRj,$FRk */
17366
17367static SEM_PC
17368SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17369{
17370#define FLD(f) abuf->fields.sfmt_cfmadds.f
17371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17372 int UNUSED written = 0;
17373 IADDR UNUSED pc = abuf->addr;
17374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17375
17376 {
79e59fe6 17377 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
17378 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17379 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17380 }
17381
17382 return vpc;
17383#undef FLD
17384}
17385
17386/* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17387
17388static SEM_PC
17389SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17390{
17391#define FLD(f) abuf->fields.sfmt_cfmadds.f
17392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17393 int UNUSED written = 0;
17394 IADDR UNUSED pc = abuf->addr;
17395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17396
17397 {
79e59fe6 17398 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
17399 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17400 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17401 }
17402
17403 return vpc;
17404#undef FLD
17405}
17406
17407/* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17408
17409static SEM_PC
17410SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17411{
17412#define FLD(f) abuf->fields.sfmt_cfmadds.f
17413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17414 int UNUSED written = 0;
17415 IADDR UNUSED pc = abuf->addr;
17416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17417
17418 {
79e59fe6 17419 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
17420 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17421 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17422 }
17423
17424 return vpc;
17425#undef FLD
17426}
17427
17428/* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17429
17430static SEM_PC
17431SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17432{
17433#define FLD(f) abuf->fields.sfmt_cfmadds.f
17434 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17435 int UNUSED written = 0;
17436 IADDR UNUSED pc = abuf->addr;
17437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17438
17439 {
79e59fe6 17440 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
17441 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17442 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17443 }
17444
17445 return vpc;
17446#undef FLD
17447}
17448
17449/* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17450
17451static SEM_PC
17452SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17453{
17454#define FLD(f) abuf->fields.sfmt_fmaddd.f
17455 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17456 int UNUSED written = 0;
17457 IADDR UNUSED pc = abuf->addr;
17458 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17459
17460 {
79e59fe6 17461 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
17462 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17463 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17464 }
17465
17466 return vpc;
17467#undef FLD
17468}
17469
17470/* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17471
17472static SEM_PC
17473SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17474{
17475#define FLD(f) abuf->fields.sfmt_fmaddd.f
17476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17477 int UNUSED written = 0;
17478 IADDR UNUSED pc = abuf->addr;
17479 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17480
17481 {
79e59fe6 17482 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
17483 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17484 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17485 }
17486
17487 return vpc;
17488#undef FLD
17489}
17490
17491/* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17492
17493static SEM_PC
17494SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17495{
17496#define FLD(f) abuf->fields.sfmt_fmaddd.f
17497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17498 int UNUSED written = 0;
17499 IADDR UNUSED pc = abuf->addr;
17500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17501
17502 {
79e59fe6 17503 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
17504 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17505 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17506 }
17507
17508 return vpc;
17509#undef FLD
17510}
17511
17512/* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17513
17514static SEM_PC
17515SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17516{
17517#define FLD(f) abuf->fields.sfmt_fmaddd.f
17518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17519 int UNUSED written = 0;
17520 IADDR UNUSED pc = abuf->addr;
17521 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17522
17523 {
79e59fe6 17524 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
17525 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17526 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17527 }
17528
17529 return vpc;
17530#undef FLD
17531}
17532
17533/* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17534
17535static SEM_PC
17536SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17537{
17538#define FLD(f) abuf->fields.sfmt_cfmadds.f
17539 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17540 int UNUSED written = 0;
17541 IADDR UNUSED pc = abuf->addr;
17542 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17543
17544if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17545 {
79e59fe6 17546 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
17547 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17548 written |= (1 << 4);
17549 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17550 }
17551}
17552
17553 abuf->written = written;
17554 return vpc;
17555#undef FLD
17556}
17557
17558/* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17559
17560static SEM_PC
17561SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17562{
17563#define FLD(f) abuf->fields.sfmt_cfmadds.f
17564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17565 int UNUSED written = 0;
17566 IADDR UNUSED pc = abuf->addr;
17567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17568
17569if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17570 {
79e59fe6 17571 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
17572 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17573 written |= (1 << 4);
17574 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17575 }
17576}
17577
17578 abuf->written = written;
17579 return vpc;
17580#undef FLD
17581}
17582
17583/* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17584
17585static SEM_PC
17586SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17587{
17588#define FLD(f) abuf->fields.sfmt_cfmadds.f
17589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17590 int UNUSED written = 0;
17591 IADDR UNUSED pc = abuf->addr;
17592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17593
17594if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17595 {
79e59fe6 17596 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
17597 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17598 written |= (1 << 4);
17599 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17600 }
17601}
17602
17603 abuf->written = written;
17604 return vpc;
17605#undef FLD
17606}
17607
17608/* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17609
17610static SEM_PC
17611SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17612{
17613#define FLD(f) abuf->fields.sfmt_cfmadds.f
17614 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17615 int UNUSED written = 0;
17616 IADDR UNUSED pc = abuf->addr;
17617 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17618
17619if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17620 {
79e59fe6 17621 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
17622 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17623 written |= (1 << 4);
17624 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17625 }
17626}
17627
17628 abuf->written = written;
17629 return vpc;
17630#undef FLD
17631}
17632
17633/* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17634
17635static SEM_PC
17636SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17637{
17638#define FLD(f) abuf->fields.sfmt_cfmadds.f
17639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17640 int UNUSED written = 0;
17641 IADDR UNUSED pc = abuf->addr;
17642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17643
17644{
17645frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17646 {
79e59fe6 17647 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
17648 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17649 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17650 }
17651}
17652
17653 return vpc;
17654#undef FLD
17655}
17656
17657/* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17658
17659static SEM_PC
17660SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17661{
17662#define FLD(f) abuf->fields.sfmt_cfmadds.f
17663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17664 int UNUSED written = 0;
17665 IADDR UNUSED pc = abuf->addr;
17666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17667
17668{
17669frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17670 {
79e59fe6 17671 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
17672 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17673 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17674 }
17675}
17676
17677 return vpc;
17678#undef FLD
17679}
17680
17681/* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17682
17683static SEM_PC
17684SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17685{
17686#define FLD(f) abuf->fields.sfmt_cfmadds.f
17687 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17688 int UNUSED written = 0;
17689 IADDR UNUSED pc = abuf->addr;
17690 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17691
17692{
17693frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17694 {
79e59fe6 17695 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
17696 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17697 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17698 }
17699}
17700
17701 return vpc;
17702#undef FLD
17703}
17704
17705/* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17706
17707static SEM_PC
17708SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17709{
17710#define FLD(f) abuf->fields.sfmt_cfmadds.f
17711 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17712 int UNUSED written = 0;
17713 IADDR UNUSED pc = abuf->addr;
17714 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17715
17716{
17717frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17718 {
79e59fe6 17719 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
17720 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17721 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17722 }
17723}
17724
17725 return vpc;
17726#undef FLD
17727}
17728
17729/* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17730
17731static SEM_PC
17732SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17733{
17734#define FLD(f) abuf->fields.sfmt_cfcmps.f
17735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17736 int UNUSED written = 0;
17737 IADDR UNUSED pc = abuf->addr;
17738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17739
79e59fe6 17740if (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
17741 {
17742 UQI opval = 2;
17743 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17744 written |= (1 << 2);
17745 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17746 }
17747} else {
79e59fe6 17748if (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
17749 {
17750 UQI opval = 8;
17751 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17752 written |= (1 << 2);
17753 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17754 }
17755} else {
79e59fe6 17756if (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
17757 {
17758 UQI opval = 4;
17759 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17760 written |= (1 << 2);
17761 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17762 }
17763} else {
17764 {
17765 UQI opval = 1;
17766 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17767 written |= (1 << 2);
17768 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17769 }
17770}
17771}
17772}
17773
17774 abuf->written = written;
17775 return vpc;
17776#undef FLD
17777}
17778
17779/* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17780
17781static SEM_PC
17782SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17783{
17784#define FLD(f) abuf->fields.sfmt_fcmpd.f
17785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17786 int UNUSED written = 0;
17787 IADDR UNUSED pc = abuf->addr;
17788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17789
79e59fe6 17790if (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
17791 {
17792 UQI opval = 2;
17793 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17794 written |= (1 << 2);
17795 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17796 }
17797} else {
79e59fe6 17798if (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
17799 {
17800 UQI opval = 8;
17801 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17802 written |= (1 << 2);
17803 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17804 }
17805} else {
79e59fe6 17806if (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
17807 {
17808 UQI opval = 4;
17809 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17810 written |= (1 << 2);
17811 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17812 }
17813} else {
17814 {
17815 UQI opval = 1;
17816 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17817 written |= (1 << 2);
17818 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17819 }
17820}
17821}
17822}
17823
17824 abuf->written = written;
17825 return vpc;
17826#undef FLD
17827}
17828
17829/* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17830
17831static SEM_PC
17832SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17833{
17834#define FLD(f) abuf->fields.sfmt_cfcmps.f
17835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17836 int UNUSED written = 0;
17837 IADDR UNUSED pc = abuf->addr;
17838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17839
17840if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
79e59fe6 17841if (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
17842 {
17843 UQI opval = 2;
17844 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17845 written |= (1 << 4);
17846 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17847 }
17848} else {
79e59fe6 17849if (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
17850 {
17851 UQI opval = 8;
17852 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17853 written |= (1 << 4);
17854 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17855 }
17856} else {
79e59fe6 17857if (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
17858 {
17859 UQI opval = 4;
17860 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17861 written |= (1 << 4);
17862 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17863 }
17864} else {
17865 {
17866 UQI opval = 1;
17867 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17868 written |= (1 << 4);
17869 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17870 }
17871}
17872}
17873}
17874}
17875
17876 abuf->written = written;
17877 return vpc;
17878#undef FLD
17879}
17880
17881/* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17882
17883static SEM_PC
17884SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17885{
17886#define FLD(f) abuf->fields.sfmt_nfdcmps.f
17887 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17888 int UNUSED written = 0;
17889 IADDR UNUSED pc = abuf->addr;
17890 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17891
17892{
79e59fe6 17893if (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
17894 {
17895 UQI opval = 2;
17896 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17897 written |= (1 << 7);
17898 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17899 }
17900} else {
79e59fe6 17901if (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
17902 {
17903 UQI opval = 8;
17904 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17905 written |= (1 << 7);
17906 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17907 }
17908} else {
79e59fe6 17909if (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
17910 {
17911 UQI opval = 4;
17912 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17913 written |= (1 << 7);
17914 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17915 }
17916} else {
17917 {
17918 UQI opval = 1;
17919 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17920 written |= (1 << 7);
17921 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17922 }
17923}
17924}
17925}
79e59fe6 17926if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
b34f6357
DB
17927 {
17928 UQI opval = 2;
17929 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17930 written |= (1 << 8);
17931 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17932 }
17933} else {
79e59fe6 17934if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
b34f6357
DB
17935 {
17936 UQI opval = 8;
17937 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17938 written |= (1 << 8);
17939 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17940 }
17941} else {
79e59fe6 17942if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
b34f6357
DB
17943 {
17944 UQI opval = 4;
17945 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17946 written |= (1 << 8);
17947 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17948 }
17949} else {
17950 {
17951 UQI opval = 1;
17952 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17953 written |= (1 << 8);
17954 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17955 }
17956}
17957}
17958}
17959}
17960
17961 abuf->written = written;
17962 return vpc;
17963#undef FLD
17964}
17965
17966/* fmadds: fmadds$pack $FRi,$FRj,$FRk */
17967
17968static SEM_PC
17969SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17970{
17971#define FLD(f) abuf->fields.sfmt_cfmadds.f
17972 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17973 int UNUSED written = 0;
17974 IADDR UNUSED pc = abuf->addr;
17975 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17976
17977 {
79e59fe6 17978 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
17979 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17980 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17981 }
17982
17983 return vpc;
17984#undef FLD
17985}
17986
17987/* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
17988
17989static SEM_PC
17990SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17991{
17992#define FLD(f) abuf->fields.sfmt_cfmadds.f
17993 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17994 int UNUSED written = 0;
17995 IADDR UNUSED pc = abuf->addr;
17996 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17997
17998 {
79e59fe6 17999 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
18000 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18001 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18002 }
18003
18004 return vpc;
18005#undef FLD
18006}
18007
18008/* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18009
18010static SEM_PC
18011SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18012{
18013#define FLD(f) abuf->fields.sfmt_fmaddd.f
18014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18015 int UNUSED written = 0;
18016 IADDR UNUSED pc = abuf->addr;
18017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18018
18019 {
79e59fe6 18020 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
18021 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18022 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18023 }
18024
18025 return vpc;
18026#undef FLD
18027}
18028
18029/* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18030
18031static SEM_PC
18032SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18033{
18034#define FLD(f) abuf->fields.sfmt_fmaddd.f
18035 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18036 int UNUSED written = 0;
18037 IADDR UNUSED pc = abuf->addr;
18038 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18039
18040 {
79e59fe6 18041 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
18042 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18043 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18044 }
18045
18046 return vpc;
18047#undef FLD
18048}
18049
18050/* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18051
18052static SEM_PC
18053SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18054{
18055#define FLD(f) abuf->fields.sfmt_fdmadds.f
18056 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18057 int UNUSED written = 0;
18058 IADDR UNUSED pc = abuf->addr;
18059 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18060
18061{
18062 {
79e59fe6 18063 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
18064 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18065 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18066 }
18067 {
79e59fe6 18068 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1)))), GET_H_FR (((FLD (f_FRk)) + (1))));
b34f6357
DB
18069 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18070 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18071 }
18072}
18073
18074 return vpc;
18075#undef FLD
18076}
18077
18078/* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18079
18080static SEM_PC
18081SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18082{
18083#define FLD(f) abuf->fields.sfmt_fdmadds.f
18084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18085 int UNUSED written = 0;
18086 IADDR UNUSED pc = abuf->addr;
18087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18088
18089{
18090frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18091 {
79e59fe6 18092 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
18093 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18094 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18095 }
18096frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18097 {
79e59fe6 18098 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1)))), GET_H_FR (((FLD (f_FRk)) + (1))));
b34f6357
DB
18099 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18100 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18101 }
18102}
18103
18104 return vpc;
18105#undef FLD
18106}
18107
18108/* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18109
18110static SEM_PC
18111SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18112{
18113#define FLD(f) abuf->fields.sfmt_cfmadds.f
18114 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18115 int UNUSED written = 0;
18116 IADDR UNUSED pc = abuf->addr;
18117 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18118
18119if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18120 {
79e59fe6 18121 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
18122 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18123 written |= (1 << 5);
18124 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18125 }
18126}
18127
18128 abuf->written = written;
18129 return vpc;
18130#undef FLD
18131}
18132
18133/* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18134
18135static SEM_PC
18136SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18137{
18138#define FLD(f) abuf->fields.sfmt_cfmadds.f
18139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18140 int UNUSED written = 0;
18141 IADDR UNUSED pc = abuf->addr;
18142 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18143
18144if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18145 {
79e59fe6 18146 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
18147 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18148 written |= (1 << 5);
18149 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18150 }
18151}
18152
18153 abuf->written = written;
18154 return vpc;
18155#undef FLD
18156}
18157
18158/* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18159
18160static SEM_PC
18161SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18162{
18163#define FLD(f) abuf->fields.sfmt_cfmadds.f
18164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18165 int UNUSED written = 0;
18166 IADDR UNUSED pc = abuf->addr;
18167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18168
18169{
18170frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18171 {
79e59fe6 18172 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
18173 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18174 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18175 }
18176}
18177
18178 return vpc;
18179#undef FLD
18180}
18181
18182/* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18183
18184static SEM_PC
18185SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18186{
18187#define FLD(f) abuf->fields.sfmt_cfmadds.f
18188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18189 int UNUSED written = 0;
18190 IADDR UNUSED pc = abuf->addr;
18191 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18192
18193{
18194frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18195 {
79e59fe6 18196 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
18197 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18198 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18199 }
18200}
18201
18202 return vpc;
18203#undef FLD
18204}
18205
18206/* fmas: fmas$pack $FRi,$FRj,$FRk */
18207
18208static SEM_PC
18209SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18210{
18211#define FLD(f) abuf->fields.sfmt_fdmadds.f
18212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18213 int UNUSED written = 0;
18214 IADDR UNUSED pc = abuf->addr;
18215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18216
18217{
18218 {
79e59fe6 18219 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
18220 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18221 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18222 }
18223 {
79e59fe6 18224 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18225 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18226 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18227 }
18228}
18229
18230 return vpc;
18231#undef FLD
18232}
18233
18234/* fmss: fmss$pack $FRi,$FRj,$FRk */
18235
18236static SEM_PC
18237SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18238{
18239#define FLD(f) abuf->fields.sfmt_fdmadds.f
18240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18241 int UNUSED written = 0;
18242 IADDR UNUSED pc = abuf->addr;
18243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18244
18245{
18246 {
79e59fe6 18247 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
18248 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18249 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18250 }
18251 {
79e59fe6 18252 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18253 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18254 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18255 }
18256}
18257
18258 return vpc;
18259#undef FLD
18260}
18261
18262/* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18263
18264static SEM_PC
18265SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18266{
18267#define FLD(f) abuf->fields.sfmt_fdmas.f
18268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18269 int UNUSED written = 0;
18270 IADDR UNUSED pc = abuf->addr;
18271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18272
18273{
18274 {
79e59fe6 18275 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
18276 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18277 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18278 }
18279 {
79e59fe6 18280 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18281 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18282 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18283 }
18284 {
79e59fe6 18285 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
b34f6357
DB
18286 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18287 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18288 }
18289 {
79e59fe6 18290 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
b34f6357
DB
18291 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18292 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18293 }
18294}
18295
18296 return vpc;
18297#undef FLD
18298}
18299
18300/* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18301
18302static SEM_PC
18303SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18304{
18305#define FLD(f) abuf->fields.sfmt_fdmas.f
18306 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18307 int UNUSED written = 0;
18308 IADDR UNUSED pc = abuf->addr;
18309 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18310
18311{
18312 {
79e59fe6 18313 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
18314 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18315 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18316 }
18317 {
79e59fe6 18318 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18319 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18320 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18321 }
18322 {
79e59fe6 18323 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
b34f6357
DB
18324 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18325 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18326 }
18327 {
79e59fe6 18328 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
b34f6357
DB
18329 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18330 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18331 }
18332}
18333
18334 return vpc;
18335#undef FLD
18336}
18337
18338/* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18339
18340static SEM_PC
18341SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18342{
18343#define FLD(f) abuf->fields.sfmt_fdmas.f
18344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18345 int UNUSED written = 0;
18346 IADDR UNUSED pc = abuf->addr;
18347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18348
18349{
18350frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18351frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18352frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18353frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18354 {
79e59fe6 18355 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
18356 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18357 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18358 }
18359 {
79e59fe6 18360 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18361 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18362 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18363 }
18364 {
79e59fe6 18365 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
b34f6357
DB
18366 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18367 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18368 }
18369 {
79e59fe6 18370 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
b34f6357
DB
18371 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18372 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18373 }
18374}
18375
18376 return vpc;
18377#undef FLD
18378}
18379
18380/* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18381
18382static SEM_PC
18383SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18384{
18385#define FLD(f) abuf->fields.sfmt_fdmas.f
18386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18387 int UNUSED written = 0;
18388 IADDR UNUSED pc = abuf->addr;
18389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18390
18391{
18392frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18393frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18394frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18395frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18396 {
79e59fe6 18397 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
18398 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18399 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18400 }
18401 {
79e59fe6 18402 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18403 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18404 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18405 }
18406 {
79e59fe6 18407 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
b34f6357
DB
18408 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18409 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18410 }
18411 {
79e59fe6 18412 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
b34f6357
DB
18413 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18414 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18415 }
18416}
18417
18418 return vpc;
18419#undef FLD
18420}
18421
18422/* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18423
18424static SEM_PC
18425SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18426{
18427#define FLD(f) abuf->fields.sfmt_cfmas.f
18428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18429 int UNUSED written = 0;
18430 IADDR UNUSED pc = abuf->addr;
18431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18432
18433if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18434{
18435 {
79e59fe6 18436 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
18437 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18438 written |= (1 << 9);
18439 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18440 }
18441 {
79e59fe6 18442 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18443 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18444 written |= (1 << 10);
18445 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18446 }
18447}
18448}
18449
18450 abuf->written = written;
18451 return vpc;
18452#undef FLD
18453}
18454
18455/* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18456
18457static SEM_PC
18458SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18459{
18460#define FLD(f) abuf->fields.sfmt_cfmas.f
18461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18462 int UNUSED written = 0;
18463 IADDR UNUSED pc = abuf->addr;
18464 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18465
18466if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18467{
18468 {
79e59fe6 18469 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
18470 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18471 written |= (1 << 9);
18472 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18473 }
18474 {
79e59fe6 18475 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18476 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18477 written |= (1 << 10);
18478 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18479 }
18480}
18481}
18482
18483 abuf->written = written;
18484 return vpc;
18485#undef FLD
18486}
18487
18488/* fmad: fmad$pack $FRi,$FRj,$FRk */
18489
18490static SEM_PC
18491SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18492{
18493#define FLD(f) abuf->fields.sfmt_fdmadds.f
18494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18495 int UNUSED written = 0;
18496 IADDR UNUSED pc = abuf->addr;
18497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18498
18499{
18500 {
79e59fe6 18501 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)))));
b34f6357
DB
18502 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18503 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18504 }
18505 {
79e59fe6 18506 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1)))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))))));
b34f6357
DB
18507 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18508 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18509 }
18510}
18511
18512 return vpc;
18513#undef FLD
18514}
18515
18516/* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18517
18518static SEM_PC
18519SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18520{
18521#define FLD(f) abuf->fields.sfmt_fdmadds.f
18522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18523 int UNUSED written = 0;
18524 IADDR UNUSED pc = abuf->addr;
18525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18526
18527{
18528 {
79e59fe6 18529 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)))));
b34f6357
DB
18530 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18531 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18532 }
18533 {
79e59fe6 18534 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1)))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))))));
b34f6357
DB
18535 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18536 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18537 }
18538}
18539
18540 return vpc;
18541#undef FLD
18542}
18543
18544/* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18545
18546static SEM_PC
18547SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18548{
18549#define FLD(f) abuf->fields.sfmt_fdmadds.f
18550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18551 int UNUSED written = 0;
18552 IADDR UNUSED pc = abuf->addr;
18553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18554
18555{
18556frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18557 {
79e59fe6 18558 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
18559 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18560 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18561 }
18562frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18563 {
79e59fe6 18564 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18565 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18566 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18567 }
18568}
18569
18570 return vpc;
18571#undef FLD
18572}
18573
18574/* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18575
18576static SEM_PC
18577SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18578{
18579#define FLD(f) abuf->fields.sfmt_fdmadds.f
18580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18581 int UNUSED written = 0;
18582 IADDR UNUSED pc = abuf->addr;
18583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18584
18585{
18586frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18587 {
79e59fe6 18588 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
18589 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18590 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18591 }
18592frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18593 {
79e59fe6 18594 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18595 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18596 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18597 }
18598}
18599
18600 return vpc;
18601#undef FLD
18602}
18603
18604/* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18605
18606static SEM_PC
18607SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18608{
18609#define FLD(f) abuf->fields.sfmt_fdmadds.f
18610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18611 int UNUSED written = 0;
18612 IADDR UNUSED pc = abuf->addr;
18613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18614
18615{
18616 {
79e59fe6 18617 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
18618 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18619 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18620 }
18621 {
79e59fe6 18622 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18623 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18624 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18625 }
18626}
18627
18628 return vpc;
18629#undef FLD
18630}
18631
18632/* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18633
18634static SEM_PC
18635SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18636{
18637#define FLD(f) abuf->fields.sfmt_fdmadds.f
18638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18639 int UNUSED written = 0;
18640 IADDR UNUSED pc = abuf->addr;
18641 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18642
18643{
18644 {
79e59fe6 18645 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
18646 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18647 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18648 }
18649 {
79e59fe6 18650 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18651 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18652 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18653 }
18654}
18655
18656 return vpc;
18657#undef FLD
18658}
18659
18660/* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18661
18662static SEM_PC
18663SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18664{
18665#define FLD(f) abuf->fields.sfmt_fdmadds.f
18666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18667 int UNUSED written = 0;
18668 IADDR UNUSED pc = abuf->addr;
18669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18670
18671{
18672 {
79e59fe6 18673 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
18674 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18675 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18676 }
18677 {
79e59fe6 18678 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18679 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18680 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18681 }
18682}
18683
18684 return vpc;
18685#undef FLD
18686}
18687
18688/* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18689
18690static SEM_PC
18691SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18692{
18693#define FLD(f) abuf->fields.sfmt_fdmadds.f
18694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18695 int UNUSED written = 0;
18696 IADDR UNUSED pc = abuf->addr;
18697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18698
18699{
18700 {
79e59fe6 18701 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
18702 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18703 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18704 }
18705 {
79e59fe6 18706 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18707 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18708 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18709 }
18710}
18711
18712 return vpc;
18713#undef FLD
18714}
18715
18716/* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18717
18718static SEM_PC
18719SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18720{
18721#define FLD(f) abuf->fields.sfmt_fdmadds.f
18722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18723 int UNUSED written = 0;
18724 IADDR UNUSED pc = abuf->addr;
18725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18726
18727{
18728 {
79e59fe6 18729 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
18730 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18731 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18732 }
18733 {
79e59fe6 18734 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18735 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18736 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18737 }
18738}
18739
18740 return vpc;
18741#undef FLD
18742}
18743
18744/* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18745
18746static SEM_PC
18747SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18748{
18749#define FLD(f) abuf->fields.sfmt_fdmadds.f
18750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18751 int UNUSED written = 0;
18752 IADDR UNUSED pc = abuf->addr;
18753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18754
18755{
18756 {
79e59fe6 18757 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18758 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18759 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18760 }
18761 {
79e59fe6 18762 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
18763 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18764 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18765 }
18766}
18767
18768 return vpc;
18769#undef FLD
18770}
18771
18772/* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18773
18774static SEM_PC
18775SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18776{
18777#define FLD(f) abuf->fields.sfmt_fdmadds.f
18778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18779 int UNUSED written = 0;
18780 IADDR UNUSED pc = abuf->addr;
18781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18782
18783{
18784frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18785 {
79e59fe6 18786 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18787 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18788 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18789 }
18790frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18791 {
79e59fe6 18792 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
18793 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18794 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18795 }
18796}
18797
18798 return vpc;
18799#undef FLD
18800}
18801
18802/* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18803
18804static SEM_PC
18805SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18806{
18807#define FLD(f) abuf->fields.sfmt_fdmadds.f
18808 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18809 int UNUSED written = 0;
18810 IADDR UNUSED pc = abuf->addr;
18811 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18812
18813{
18814frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18815 {
79e59fe6 18816 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
18817 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18818 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18819 }
18820frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18821 {
79e59fe6 18822 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18823 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18824 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18825 }
18826}
18827
18828 return vpc;
18829#undef FLD
18830}
18831
18832/* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18833
18834static SEM_PC
18835SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18836{
18837#define FLD(f) abuf->fields.sfmt_fdmadds.f
18838 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18839 int UNUSED written = 0;
18840 IADDR UNUSED pc = abuf->addr;
18841 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18842
18843{
18844frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18845 {
79e59fe6 18846 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
18847 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18848 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18849 }
18850frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18851 {
79e59fe6 18852 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18853 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18854 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18855 }
18856}
18857
18858 return vpc;
18859#undef FLD
18860}
18861
18862/* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18863
18864static SEM_PC
18865SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18866{
18867#define FLD(f) abuf->fields.sfmt_fdmadds.f
18868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18869 int UNUSED written = 0;
18870 IADDR UNUSED pc = abuf->addr;
18871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18872
18873{
18874frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18875 {
79e59fe6 18876 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
18877 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18878 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18879 }
18880frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18881 {
79e59fe6 18882 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18883 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18884 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18885 }
18886}
18887
18888 return vpc;
18889#undef FLD
18890}
18891
18892/* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18893
18894static SEM_PC
18895SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18896{
18897#define FLD(f) abuf->fields.sfmt_fdmadds.f
18898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18899 int UNUSED written = 0;
18900 IADDR UNUSED pc = abuf->addr;
18901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18902
18903{
18904frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18905 {
79e59fe6 18906 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
18907 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18908 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18909 }
18910frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18911 {
79e59fe6 18912 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18913 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18914 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18915 }
18916}
18917
18918 return vpc;
18919#undef FLD
18920}
18921
18922/* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18923
18924static SEM_PC
18925SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18926{
18927#define FLD(f) abuf->fields.sfmt_fdmadds.f
18928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18929 int UNUSED written = 0;
18930 IADDR UNUSED pc = abuf->addr;
18931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18932
18933{
18934frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18935 {
79e59fe6 18936 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
18937 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18938 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18939 }
18940frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18941 {
79e59fe6 18942 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
b34f6357
DB
18943 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18944 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18945 }
18946}
18947
18948 return vpc;
18949#undef FLD
18950}
18951
18952/* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18953
18954static SEM_PC
18955SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18956{
18957#define FLD(f) abuf->fields.sfmt_nfdcmps.f
18958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18959 int UNUSED written = 0;
18960 IADDR UNUSED pc = abuf->addr;
18961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18962
18963{
18964frvbf_set_ne_index (current_cpu, FLD (f_FRk));
79e59fe6 18965if (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
18966 {
18967 UQI opval = 2;
18968 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18969 written |= (1 << 8);
18970 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18971 }
18972} else {
79e59fe6 18973if (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
18974 {
18975 UQI opval = 8;
18976 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18977 written |= (1 << 8);
18978 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18979 }
18980} else {
79e59fe6 18981if (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
18982 {
18983 UQI opval = 4;
18984 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18985 written |= (1 << 8);
18986 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18987 }
18988} else {
18989 {
18990 UQI opval = 1;
18991 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18992 written |= (1 << 8);
18993 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18994 }
18995}
18996}
18997}
18998frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
79e59fe6 18999if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
b34f6357
DB
19000 {
19001 UQI opval = 2;
19002 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19003 written |= (1 << 9);
19004 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19005 }
19006} else {
79e59fe6 19007if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
b34f6357
DB
19008 {
19009 UQI opval = 8;
19010 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19011 written |= (1 << 9);
19012 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19013 }
19014} else {
79e59fe6 19015if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
b34f6357
DB
19016 {
19017 UQI opval = 4;
19018 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19019 written |= (1 << 9);
19020 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19021 }
19022} else {
19023 {
19024 UQI opval = 1;
19025 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19026 written |= (1 << 9);
19027 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19028 }
19029}
19030}
19031}
19032}
19033
19034 abuf->written = written;
19035 return vpc;
19036#undef FLD
19037}
19038
19039/* mhsetlos: mhsetlos$pack $u12,$FRklo */
19040
19041static SEM_PC
19042SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19043{
19044#define FLD(f) abuf->fields.sfmt_mhsetlos.f
19045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19046 int UNUSED written = 0;
19047 IADDR UNUSED pc = abuf->addr;
19048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19049
19050 {
19051 UHI opval = FLD (f_u12);
19052 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19053 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19054 }
19055
19056 return vpc;
19057#undef FLD
19058}
19059
19060/* mhsethis: mhsethis$pack $u12,$FRkhi */
19061
19062static SEM_PC
19063SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19064{
19065#define FLD(f) abuf->fields.sfmt_mhsethis.f
19066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19067 int UNUSED written = 0;
19068 IADDR UNUSED pc = abuf->addr;
19069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19070
19071 {
19072 UHI opval = FLD (f_u12);
19073 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19074 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19075 }
19076
19077 return vpc;
19078#undef FLD
19079}
19080
19081/* mhdsets: mhdsets$pack $u12,$FRintk */
19082
19083static SEM_PC
19084SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19085{
19086#define FLD(f) abuf->fields.sfmt_mhdsets.f
19087 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19088 int UNUSED written = 0;
19089 IADDR UNUSED pc = abuf->addr;
19090 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19091
19092{
19093 {
19094 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19095 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19096 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19097 }
19098 {
19099 UHI opval = FLD (f_u12);
19100 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19101 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19102 }
19103 {
19104 UHI opval = FLD (f_u12);
19105 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19106 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19107 }
19108}
19109
19110 return vpc;
19111#undef FLD
19112}
19113
19114/* mhsetloh: mhsetloh$pack $s5,$FRklo */
19115
19116static SEM_PC
19117SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19118{
19119#define FLD(f) abuf->fields.sfmt_mhsetloh.f
19120 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19121 int UNUSED written = 0;
19122 IADDR UNUSED pc = abuf->addr;
19123 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19124
19125{
19126 HI tmp_tmp;
19127 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19128 tmp_tmp = ANDHI (tmp_tmp, 2047);
19129 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19130 {
19131 UHI opval = tmp_tmp;
19132 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19133 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19134 }
19135}
19136
19137 return vpc;
19138#undef FLD
19139}
19140
19141/* mhsethih: mhsethih$pack $s5,$FRkhi */
19142
19143static SEM_PC
19144SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19145{
19146#define FLD(f) abuf->fields.sfmt_mhsethih.f
19147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19148 int UNUSED written = 0;
19149 IADDR UNUSED pc = abuf->addr;
19150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19151
19152{
19153 HI tmp_tmp;
19154 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19155 tmp_tmp = ANDHI (tmp_tmp, 2047);
19156 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19157 {
19158 UHI opval = tmp_tmp;
19159 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19160 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19161 }
19162}
19163
19164 return vpc;
19165#undef FLD
19166}
19167
19168/* mhdseth: mhdseth$pack $s5,$FRintk */
19169
19170static SEM_PC
19171SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19172{
19173#define FLD(f) abuf->fields.sfmt_mhdseth.f
19174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19175 int UNUSED written = 0;
19176 IADDR UNUSED pc = abuf->addr;
19177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19178
19179{
19180 {
19181 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19182 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19183 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19184 }
19185{
19186 HI tmp_tmp;
19187 tmp_tmp = GET_H_FR_HI (((FLD (f_FRk)) + (0)));
19188 tmp_tmp = ANDHI (tmp_tmp, 2047);
19189 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19190 {
19191 UHI opval = tmp_tmp;
19192 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19193 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19194 }
19195}
19196{
19197 HI tmp_tmp;
19198 tmp_tmp = GET_H_FR_LO (((FLD (f_FRk)) + (0)));
19199 tmp_tmp = ANDHI (tmp_tmp, 2047);
19200 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19201 {
19202 UHI opval = tmp_tmp;
19203 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19204 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19205 }
19206}
19207}
19208
19209 return vpc;
19210#undef FLD
19211}
19212
19213/* mand: mand$pack $FRinti,$FRintj,$FRintk */
19214
19215static SEM_PC
19216SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19217{
19218#define FLD(f) abuf->fields.sfmt_mwcut.f
19219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19220 int UNUSED written = 0;
19221 IADDR UNUSED pc = abuf->addr;
19222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19223
19224 {
19225 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19226 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19227 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19228 }
19229
19230 return vpc;
19231#undef FLD
19232}
19233
19234/* mor: mor$pack $FRinti,$FRintj,$FRintk */
19235
19236static SEM_PC
19237SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19238{
19239#define FLD(f) abuf->fields.sfmt_mwcut.f
19240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19241 int UNUSED written = 0;
19242 IADDR UNUSED pc = abuf->addr;
19243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19244
19245 {
19246 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19247 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19248 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19249 }
19250
19251 return vpc;
19252#undef FLD
19253}
19254
19255/* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19256
19257static SEM_PC
19258SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19259{
19260#define FLD(f) abuf->fields.sfmt_mwcut.f
19261 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19262 int UNUSED written = 0;
19263 IADDR UNUSED pc = abuf->addr;
19264 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19265
19266 {
19267 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19268 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19269 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19270 }
19271
19272 return vpc;
19273#undef FLD
19274}
19275
19276/* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19277
19278static SEM_PC
19279SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19280{
19281#define FLD(f) abuf->fields.sfmt_cmand.f
19282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19283 int UNUSED written = 0;
19284 IADDR UNUSED pc = abuf->addr;
19285 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19286
19287if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19288 {
19289 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19290 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19291 written |= (1 << 4);
19292 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19293 }
19294}
19295
19296 abuf->written = written;
19297 return vpc;
19298#undef FLD
19299}
19300
19301/* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19302
19303static SEM_PC
19304SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19305{
19306#define FLD(f) abuf->fields.sfmt_cmand.f
19307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19308 int UNUSED written = 0;
19309 IADDR UNUSED pc = abuf->addr;
19310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19311
19312if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19313 {
19314 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19315 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19316 written |= (1 << 4);
19317 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19318 }
19319}
19320
19321 abuf->written = written;
19322 return vpc;
19323#undef FLD
19324}
19325
19326/* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19327
19328static SEM_PC
19329SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19330{
19331#define FLD(f) abuf->fields.sfmt_cmand.f
19332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19333 int UNUSED written = 0;
19334 IADDR UNUSED pc = abuf->addr;
19335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19336
19337if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19338 {
19339 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19340 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19341 written |= (1 << 4);
19342 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19343 }
19344}
19345
19346 abuf->written = written;
19347 return vpc;
19348#undef FLD
19349}
19350
19351/* mnot: mnot$pack $FRintj,$FRintk */
19352
19353static SEM_PC
19354SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19355{
19356#define FLD(f) abuf->fields.sfmt_mcut.f
19357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19358 int UNUSED written = 0;
19359 IADDR UNUSED pc = abuf->addr;
19360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19361
19362 {
19363 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19364 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19365 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19366 }
19367
19368 return vpc;
19369#undef FLD
19370}
19371
19372/* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19373
19374static SEM_PC
19375SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19376{
19377#define FLD(f) abuf->fields.sfmt_cmand.f
19378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19379 int UNUSED written = 0;
19380 IADDR UNUSED pc = abuf->addr;
19381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19382
19383if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19384 {
19385 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19386 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19387 written |= (1 << 3);
19388 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19389 }
19390}
19391
19392 abuf->written = written;
19393 return vpc;
19394#undef FLD
19395}
19396
19397/* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19398
19399static SEM_PC
19400SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19401{
19402#define FLD(f) abuf->fields.sfmt_mwcuti.f
19403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19404 int UNUSED written = 0;
19405 IADDR UNUSED pc = abuf->addr;
19406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19407
19408 {
19409 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19410 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19411 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19412 }
19413
19414 return vpc;
19415#undef FLD
19416}
19417
19418/* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19419
19420static SEM_PC
19421SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19422{
19423#define FLD(f) abuf->fields.sfmt_mwcuti.f
19424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19425 int UNUSED written = 0;
19426 IADDR UNUSED pc = abuf->addr;
19427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19428
19429 {
19430 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19431 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19432 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19433 }
19434
19435 return vpc;
19436#undef FLD
19437}
19438
19439/* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19440
19441static SEM_PC
19442SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19443{
19444#define FLD(f) abuf->fields.sfmt_mwcut.f
19445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19446 int UNUSED written = 0;
19447 IADDR UNUSED pc = abuf->addr;
19448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19449
19450 {
19451 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), GET_H_FR_INT (FLD (f_FRj)));
19452 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19453 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19454 }
19455
19456 return vpc;
19457#undef FLD
19458}
19459
19460/* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19461
19462static SEM_PC
19463SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19464{
19465#define FLD(f) abuf->fields.sfmt_mwcuti.f
19466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19467 int UNUSED written = 0;
19468 IADDR UNUSED pc = abuf->addr;
19469 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19470
19471 {
19472 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), FLD (f_u6));
19473 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19474 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19475 }
19476
19477 return vpc;
19478#undef FLD
19479}
19480
19481/* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19482
19483static SEM_PC
19484SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19485{
19486#define FLD(f) abuf->fields.sfmt_mcut.f
19487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19488 int UNUSED written = 0;
19489 IADDR UNUSED pc = abuf->addr;
19490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19491
19492 {
19493 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19494 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19495 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19496 }
19497
19498 return vpc;
19499#undef FLD
19500}
19501
19502/* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19503
19504static SEM_PC
19505SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19506{
19507#define FLD(f) abuf->fields.sfmt_mcuti.f
19508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19509 int UNUSED written = 0;
19510 IADDR UNUSED pc = abuf->addr;
19511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19512
19513 {
19514 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19515 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19516 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19517 }
19518
19519 return vpc;
19520#undef FLD
19521}
19522
19523/* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19524
19525static SEM_PC
19526SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19527{
19528#define FLD(f) abuf->fields.sfmt_mcut.f
19529 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19530 int UNUSED written = 0;
19531 IADDR UNUSED pc = abuf->addr;
19532 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19533
19534 {
19535 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19536 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19537 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19538 }
19539
19540 return vpc;
19541#undef FLD
19542}
19543
19544/* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19545
19546static SEM_PC
19547SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19548{
19549#define FLD(f) abuf->fields.sfmt_mcuti.f
19550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19551 int UNUSED written = 0;
19552 IADDR UNUSED pc = abuf->addr;
19553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19554
19555 {
19556 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19557 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19558 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19559 }
19560
19561 return vpc;
19562#undef FLD
19563}
19564
19565/* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19566
19567static SEM_PC
19568SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19569{
19570#define FLD(f) abuf->fields.sfmt_mdcutssi.f
19571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19572 int UNUSED written = 0;
19573 IADDR UNUSED pc = abuf->addr;
19574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19575
19576if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19577frvbf_media_acc_not_aligned (current_cpu);
19578} else {
19579if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19580frvbf_media_register_not_aligned (current_cpu);
19581} else {
19582{
19583 {
19584 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19585 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19586 written |= (1 << 5);
19587 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19588 }
19589 {
19590 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))), FLD (f_s6));
19591 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19592 written |= (1 << 6);
19593 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19594 }
19595}
19596}
19597}
19598
19599 abuf->written = written;
19600 return vpc;
19601#undef FLD
19602}
19603
19604/* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19605
19606static SEM_PC
19607SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19608{
19609#define FLD(f) abuf->fields.sfmt_mwcut.f
19610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19611 int UNUSED written = 0;
19612 IADDR UNUSED pc = abuf->addr;
19613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19614
19615 {
19616 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19617 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19618 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19619 }
19620
19621 return vpc;
19622#undef FLD
19623}
19624
19625/* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19626
19627static SEM_PC
19628SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19629{
19630#define FLD(f) abuf->fields.sfmt_msllhi.f
19631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19632 int UNUSED written = 0;
19633 IADDR UNUSED pc = abuf->addr;
19634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19635
19636{
19637 {
19638 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19639 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19640 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19641 }
19642 {
19643 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19644 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19645 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19646 }
19647 {
19648 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19649 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19650 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19651 }
19652 {
19653 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19654 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19655 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19656 }
19657}
19658
19659 return vpc;
19660#undef FLD
19661}
19662
19663/* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19664
19665static SEM_PC
19666SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19667{
19668#define FLD(f) abuf->fields.sfmt_msllhi.f
19669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19670 int UNUSED written = 0;
19671 IADDR UNUSED pc = abuf->addr;
19672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19673
19674{
19675 {
19676 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19677 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19678 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19679 }
19680 {
19681 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19683 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19684 }
19685 {
19686 UHI opval = SRLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19687 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19688 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19689 }
19690 {
19691 UHI opval = SRLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19692 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19693 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19694 }
19695}
19696
19697 return vpc;
19698#undef FLD
19699}
19700
19701/* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19702
19703static SEM_PC
19704SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19705{
19706#define FLD(f) abuf->fields.sfmt_msllhi.f
19707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19708 int UNUSED written = 0;
19709 IADDR UNUSED pc = abuf->addr;
19710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19711
19712{
19713 {
19714 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19715 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19716 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19717 }
19718 {
19719 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19720 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19721 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19722 }
19723 {
19724 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19725 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19726 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19727 }
19728 {
19729 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19730 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19731 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19732 }
19733}
19734
19735 return vpc;
19736#undef FLD
19737}
19738
19739/* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19740
19741static SEM_PC
19742SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19743{
19744#define FLD(f) abuf->fields.sfmt_mdrotli.f
19745 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19746 int UNUSED written = 0;
19747 IADDR UNUSED pc = abuf->addr;
19748 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19749
19750if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19751frvbf_media_register_not_aligned (current_cpu);
19752} else {
19753{
19754 {
19755 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19756 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19757 written |= (1 << 5);
19758 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19759 }
19760 {
19761 USI opval = ROLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_s6), 31));
19762 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19763 written |= (1 << 6);
19764 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19765 }
19766}
19767}
19768
19769 abuf->written = written;
19770 return vpc;
19771#undef FLD
19772}
19773
19774/* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19775
19776static SEM_PC
19777SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19778{
19779#define FLD(f) abuf->fields.sfmt_mcplhi.f
19780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19781 int UNUSED written = 0;
19782 IADDR UNUSED pc = abuf->addr;
19783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19784
19785{
19786 HI tmp_arg1;
19787 HI tmp_arg2;
19788 HI tmp_shift;
19789 {
19790 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19791 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19792 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19793 }
19794 {
19795 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19796 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19797 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19798 }
19799 tmp_shift = ANDSI (FLD (f_u6), 15);
19800 tmp_arg1 = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), tmp_shift);
19801if (NEHI (tmp_shift, 0)) {
19802{
19803 tmp_arg2 = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
19804 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19805 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19806}
19807}
19808 {
19809 UHI opval = tmp_arg1;
19810 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19811 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19812 }
19813}
19814
19815 return vpc;
19816#undef FLD
19817}
19818
19819/* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19820
19821static SEM_PC
19822SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19823{
19824#define FLD(f) abuf->fields.sfmt_mwcuti.f
19825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19826 int UNUSED written = 0;
19827 IADDR UNUSED pc = abuf->addr;
19828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19829
19830{
19831 SI tmp_tmp;
19832 SI tmp_shift;
19833 tmp_shift = ANDSI (FLD (f_u6), 31);
19834 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19835if (NESI (tmp_shift, 0)) {
19836{
19837 SI tmp_tmp1;
19838 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
19839 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19840}
19841}
19842 {
19843 SI opval = tmp_tmp;
19844 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19845 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19846 }
19847}
19848
19849 return vpc;
19850#undef FLD
19851}
19852
19853/* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19854
19855static SEM_PC
19856SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19857{
19858#define FLD(f) abuf->fields.sfmt_cmaddhss.f
19859 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19860 int UNUSED written = 0;
19861 IADDR UNUSED pc = abuf->addr;
19862 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19863
19864{
19865 HI tmp_argihi;
19866 HI tmp_argilo;
19867 HI tmp_argjhi;
19868 HI tmp_argjlo;
19869{
19870 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19871 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19872 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19873 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19874}
19875if (GTHI (tmp_argihi, tmp_argjhi)) {
19876 {
19877 UHI opval = tmp_argjhi;
19878 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19879 written |= (1 << 9);
19880 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19881 }
19882} else {
19883if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19884 {
19885 UHI opval = INVHI (tmp_argjhi);
19886 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19887 written |= (1 << 9);
19888 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19889 }
19890} else {
19891 {
19892 UHI opval = tmp_argihi;
19893 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19894 written |= (1 << 9);
19895 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19896 }
19897}
19898}
19899if (GTHI (tmp_argilo, tmp_argjlo)) {
19900 {
19901 UHI opval = tmp_argjlo;
19902 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19903 written |= (1 << 10);
19904 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19905 }
19906} else {
19907if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19908 {
19909 UHI opval = INVHI (tmp_argjlo);
19910 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19911 written |= (1 << 10);
19912 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19913 }
19914} else {
19915 {
19916 UHI opval = tmp_argilo;
19917 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19918 written |= (1 << 10);
19919 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19920 }
19921}
19922}
19923}
19924
19925 abuf->written = written;
19926 return vpc;
19927#undef FLD
19928}
19929
19930/* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19931
19932static SEM_PC
19933SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19934{
19935#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19937 int UNUSED written = 0;
19938 IADDR UNUSED pc = abuf->addr;
19939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19940
19941if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19942frvbf_media_register_not_aligned (current_cpu);
19943} else {
19944{
19945 HI tmp_argihi;
19946 HI tmp_argilo;
19947 HI tmp_argjhi;
19948 HI tmp_argjlo;
19949 {
19950 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19951 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19952 written |= (1 << 14);
19953 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19954 }
19955{
19956 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19957 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19958 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19959 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19960}
19961if (GTHI (tmp_argihi, tmp_argjhi)) {
19962 {
19963 UHI opval = tmp_argjhi;
19964 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19965 written |= (1 << 15);
19966 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19967 }
19968} else {
19969if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19970 {
19971 UHI opval = INVHI (tmp_argjhi);
19972 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19973 written |= (1 << 15);
19974 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19975 }
19976} else {
19977 {
19978 UHI opval = tmp_argihi;
19979 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19980 written |= (1 << 15);
19981 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19982 }
19983}
19984}
19985if (GTHI (tmp_argilo, tmp_argjlo)) {
19986 {
19987 UHI opval = tmp_argjlo;
19988 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19989 written |= (1 << 17);
19990 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19991 }
19992} else {
19993if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19994 {
19995 UHI opval = INVHI (tmp_argjlo);
19996 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19997 written |= (1 << 17);
19998 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19999 }
20000} else {
20001 {
20002 UHI opval = tmp_argilo;
20003 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20004 written |= (1 << 17);
20005 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20006 }
20007}
20008}
20009{
20010 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20011 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20012 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20013 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20014}
20015if (GTHI (tmp_argihi, tmp_argjhi)) {
20016 {
20017 UHI opval = tmp_argjhi;
20018 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20019 written |= (1 << 16);
20020 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20021 }
20022} else {
20023if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20024 {
20025 UHI opval = INVHI (tmp_argjhi);
20026 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20027 written |= (1 << 16);
20028 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20029 }
20030} else {
20031 {
20032 UHI opval = tmp_argihi;
20033 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20034 written |= (1 << 16);
20035 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20036 }
20037}
20038}
20039if (GTHI (tmp_argilo, tmp_argjlo)) {
20040 {
20041 UHI opval = tmp_argjlo;
20042 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20043 written |= (1 << 18);
20044 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20045 }
20046} else {
20047if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20048 {
20049 UHI opval = INVHI (tmp_argjlo);
20050 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20051 written |= (1 << 18);
20052 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20053 }
20054} else {
20055 {
20056 UHI opval = tmp_argilo;
20057 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20058 written |= (1 << 18);
20059 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20060 }
20061}
20062}
20063}
20064}
20065
20066 abuf->written = written;
20067 return vpc;
20068#undef FLD
20069}
20070
20071/* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20072
20073static SEM_PC
20074SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20075{
20076#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20077 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20078 int UNUSED written = 0;
20079 IADDR UNUSED pc = abuf->addr;
20080 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20081
20082{
20083 UHI tmp_argihi;
20084 UHI tmp_argilo;
20085 UHI tmp_argjhi;
20086 UHI tmp_argjlo;
20087{
20088 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20089 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20090 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20091 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20092}
20093if (GTUHI (tmp_argihi, tmp_argjhi)) {
20094 {
20095 UHI opval = tmp_argjhi;
20096 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20097 written |= (1 << 9);
20098 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20099 }
20100} else {
20101 {
20102 UHI opval = tmp_argihi;
20103 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20104 written |= (1 << 9);
20105 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20106 }
20107}
20108if (GTUHI (tmp_argilo, tmp_argjlo)) {
20109 {
20110 UHI opval = tmp_argjlo;
20111 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20112 written |= (1 << 10);
20113 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20114 }
20115} else {
20116 {
20117 UHI opval = tmp_argilo;
20118 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20119 written |= (1 << 10);
20120 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20121 }
20122}
20123}
20124
20125 abuf->written = written;
20126 return vpc;
20127#undef FLD
20128}
20129
20130/* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20131
20132static SEM_PC
20133SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20134{
20135#define FLD(f) abuf->fields.sfmt_mcmpsh.f
20136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20137 int UNUSED written = 0;
20138 IADDR UNUSED pc = abuf->addr;
20139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20140
20141if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20142frvbf_media_cr_not_aligned (current_cpu);
20143} else {
20144{
20145 HI tmp_argihi;
20146 HI tmp_argilo;
20147 HI tmp_argjhi;
20148 HI tmp_argjlo;
20149{
20150 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20151 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20152 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20153 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20154}
20155if (GTHI (tmp_argihi, tmp_argjhi)) {
20156 {
20157 UQI opval = 2;
20158 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20159 written |= (1 << 9);
20160 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20161 }
20162} else {
20163if (EQHI (tmp_argihi, tmp_argjhi)) {
20164 {
20165 UQI opval = 8;
20166 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20167 written |= (1 << 9);
20168 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20169 }
20170} else {
20171if (LTHI (tmp_argihi, tmp_argjhi)) {
20172 {
20173 UQI opval = 4;
20174 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20175 written |= (1 << 9);
20176 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20177 }
20178} else {
20179 {
20180 UQI opval = 1;
20181 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20182 written |= (1 << 9);
20183 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20184 }
20185}
20186}
20187}
20188if (GTHI (tmp_argilo, tmp_argjlo)) {
20189 {
20190 UQI opval = 2;
20191 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20192 written |= (1 << 10);
20193 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20194 }
20195} else {
20196if (EQHI (tmp_argilo, tmp_argjlo)) {
20197 {
20198 UQI opval = 8;
20199 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20200 written |= (1 << 10);
20201 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20202 }
20203} else {
20204if (LTHI (tmp_argilo, tmp_argjlo)) {
20205 {
20206 UQI opval = 4;
20207 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20208 written |= (1 << 10);
20209 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20210 }
20211} else {
20212 {
20213 UQI opval = 1;
20214 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20215 written |= (1 << 10);
20216 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20217 }
20218}
20219}
20220}
20221}
20222}
20223
20224 abuf->written = written;
20225 return vpc;
20226#undef FLD
20227}
20228
20229/* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20230
20231static SEM_PC
20232SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20233{
20234#define FLD(f) abuf->fields.sfmt_mcmpsh.f
20235 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20236 int UNUSED written = 0;
20237 IADDR UNUSED pc = abuf->addr;
20238 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20239
20240if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20241frvbf_media_cr_not_aligned (current_cpu);
20242} else {
20243{
20244 UHI tmp_argihi;
20245 UHI tmp_argilo;
20246 UHI tmp_argjhi;
20247 UHI tmp_argjlo;
20248{
20249 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20250 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20251 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20252 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20253}
20254if (GTUHI (tmp_argihi, tmp_argjhi)) {
20255 {
20256 UQI opval = 2;
20257 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20258 written |= (1 << 9);
20259 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20260 }
20261} else {
20262if (EQHI (tmp_argihi, tmp_argjhi)) {
20263 {
20264 UQI opval = 8;
20265 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20266 written |= (1 << 9);
20267 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20268 }
20269} else {
20270if (LTUHI (tmp_argihi, tmp_argjhi)) {
20271 {
20272 UQI opval = 4;
20273 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20274 written |= (1 << 9);
20275 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20276 }
20277} else {
20278 {
20279 UQI opval = 1;
20280 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20281 written |= (1 << 9);
20282 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20283 }
20284}
20285}
20286}
20287if (GTUHI (tmp_argilo, tmp_argjlo)) {
20288 {
20289 UQI opval = 2;
20290 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20291 written |= (1 << 10);
20292 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20293 }
20294} else {
20295if (EQHI (tmp_argilo, tmp_argjlo)) {
20296 {
20297 UQI opval = 8;
20298 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20299 written |= (1 << 10);
20300 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20301 }
20302} else {
20303if (LTUHI (tmp_argilo, tmp_argjlo)) {
20304 {
20305 UQI opval = 4;
20306 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20307 written |= (1 << 10);
20308 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20309 }
20310} else {
20311 {
20312 UQI opval = 1;
20313 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20314 written |= (1 << 10);
20315 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20316 }
20317}
20318}
20319}
20320}
20321}
20322
20323 abuf->written = written;
20324 return vpc;
20325#undef FLD
20326}
20327
20328/* mabshs: mabshs$pack $FRintj,$FRintk */
20329
20330static SEM_PC
20331SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20332{
20333#define FLD(f) abuf->fields.sfmt_mabshs.f
20334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20335 int UNUSED written = 0;
20336 IADDR UNUSED pc = abuf->addr;
20337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20338
20339{
20340 HI tmp_arghi;
20341 HI tmp_arglo;
20342 {
20343 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20344 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20345 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20346 }
20347 {
20348 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20349 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20350 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20351 }
20352 tmp_arghi = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
20353 tmp_arglo = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
20354if (GTDI (ABSHI (tmp_arghi), 32767)) {
20355{
20356 {
20357 UHI opval = 32767;
20358 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20359 written |= (1 << 8);
20360 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20361 }
20362frvbf_media_overflow (current_cpu, 8);
20363}
20364} else {
20365if (LTDI (ABSHI (tmp_arghi), -32768)) {
20366{
20367 {
20368 UHI opval = -32768;
20369 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20370 written |= (1 << 8);
20371 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20372 }
20373frvbf_media_overflow (current_cpu, 8);
20374}
20375} else {
20376 {
20377 UHI opval = ABSHI (tmp_arghi);
20378 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20379 written |= (1 << 8);
20380 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20381 }
20382}
20383}
20384if (GTDI (ABSHI (tmp_arglo), 32767)) {
20385{
20386 {
20387 UHI opval = 32767;
20388 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20389 written |= (1 << 9);
20390 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20391 }
20392frvbf_media_overflow (current_cpu, 4);
20393}
20394} else {
20395if (LTDI (ABSHI (tmp_arglo), -32768)) {
20396{
20397 {
20398 UHI opval = -32768;
20399 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20400 written |= (1 << 9);
20401 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20402 }
20403frvbf_media_overflow (current_cpu, 4);
20404}
20405} else {
20406 {
20407 UHI opval = ABSHI (tmp_arglo);
20408 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20409 written |= (1 << 9);
20410 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20411 }
20412}
20413}
20414}
20415
20416 abuf->written = written;
20417 return vpc;
20418#undef FLD
20419}
20420
20421/* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20422
20423static SEM_PC
20424SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20425{
20426#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20427 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20428 int UNUSED written = 0;
20429 IADDR UNUSED pc = abuf->addr;
20430 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20431
20432{
20433 HI tmp_argihi;
20434 HI tmp_argilo;
20435 HI tmp_argjhi;
20436 HI tmp_argjlo;
20437{
20438 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20439 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20440 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20441 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20442}
20443{
20444 DI tmp_tmp;
20445 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20446if (GTDI (tmp_tmp, 32767)) {
20447{
20448 {
20449 UHI opval = 32767;
20450 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20451 written |= (1 << 9);
20452 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20453 }
20454frvbf_media_overflow (current_cpu, 8);
20455}
20456} else {
20457if (LTDI (tmp_tmp, -32768)) {
20458{
20459 {
20460 UHI opval = -32768;
20461 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20462 written |= (1 << 9);
20463 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20464 }
20465frvbf_media_overflow (current_cpu, 8);
20466}
20467} else {
20468 {
20469 UHI opval = tmp_tmp;
20470 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20471 written |= (1 << 9);
20472 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20473 }
20474}
20475}
20476}
20477{
20478 DI tmp_tmp;
20479 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20480if (GTDI (tmp_tmp, 32767)) {
20481{
20482 {
20483 UHI opval = 32767;
20484 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20485 written |= (1 << 10);
20486 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20487 }
20488frvbf_media_overflow (current_cpu, 4);
20489}
20490} else {
20491if (LTDI (tmp_tmp, -32768)) {
20492{
20493 {
20494 UHI opval = -32768;
20495 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20496 written |= (1 << 10);
20497 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20498 }
20499frvbf_media_overflow (current_cpu, 4);
20500}
20501} else {
20502 {
20503 UHI opval = tmp_tmp;
20504 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20505 written |= (1 << 10);
20506 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20507 }
20508}
20509}
20510}
20511}
20512
20513 abuf->written = written;
20514 return vpc;
20515#undef FLD
20516}
20517
20518/* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20519
20520static SEM_PC
20521SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20522{
20523#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20524 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20525 int UNUSED written = 0;
20526 IADDR UNUSED pc = abuf->addr;
20527 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20528
20529{
20530 UHI tmp_argihi;
20531 UHI tmp_argilo;
20532 UHI tmp_argjhi;
20533 UHI tmp_argjlo;
20534{
20535 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20536 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20537 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20538 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20539}
20540{
20541 DI tmp_tmp;
20542 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20543if (GTDI (tmp_tmp, 65535)) {
20544{
20545 {
20546 UHI opval = 65535;
20547 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20548 written |= (1 << 9);
20549 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20550 }
20551frvbf_media_overflow (current_cpu, 8);
20552}
20553} else {
20554if (LTDI (tmp_tmp, 0)) {
20555{
20556 {
20557 UHI opval = 0;
20558 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20559 written |= (1 << 9);
20560 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20561 }
20562frvbf_media_overflow (current_cpu, 8);
20563}
20564} else {
20565 {
20566 UHI opval = tmp_tmp;
20567 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20568 written |= (1 << 9);
20569 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20570 }
20571}
20572}
20573}
20574{
20575 DI tmp_tmp;
20576 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20577if (GTDI (tmp_tmp, 65535)) {
20578{
20579 {
20580 UHI opval = 65535;
20581 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20582 written |= (1 << 10);
20583 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20584 }
20585frvbf_media_overflow (current_cpu, 4);
20586}
20587} else {
20588if (LTDI (tmp_tmp, 0)) {
20589{
20590 {
20591 UHI opval = 0;
20592 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20593 written |= (1 << 10);
20594 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20595 }
20596frvbf_media_overflow (current_cpu, 4);
20597}
20598} else {
20599 {
20600 UHI opval = tmp_tmp;
20601 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20602 written |= (1 << 10);
20603 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20604 }
20605}
20606}
20607}
20608}
20609
20610 abuf->written = written;
20611 return vpc;
20612#undef FLD
20613}
20614
20615/* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20616
20617static SEM_PC
20618SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20619{
20620#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20622 int UNUSED written = 0;
20623 IADDR UNUSED pc = abuf->addr;
20624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20625
20626{
20627 HI tmp_argihi;
20628 HI tmp_argilo;
20629 HI tmp_argjhi;
20630 HI tmp_argjlo;
20631{
20632 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20633 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20634 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20635 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20636}
20637{
20638 DI tmp_tmp;
20639 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20640if (GTDI (tmp_tmp, 32767)) {
20641{
20642 {
20643 UHI opval = 32767;
20644 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20645 written |= (1 << 9);
20646 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20647 }
20648frvbf_media_overflow (current_cpu, 8);
20649}
20650} else {
20651if (LTDI (tmp_tmp, -32768)) {
20652{
20653 {
20654 UHI opval = -32768;
20655 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20656 written |= (1 << 9);
20657 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20658 }
20659frvbf_media_overflow (current_cpu, 8);
20660}
20661} else {
20662 {
20663 UHI opval = tmp_tmp;
20664 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20665 written |= (1 << 9);
20666 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20667 }
20668}
20669}
20670}
20671{
20672 DI tmp_tmp;
20673 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20674if (GTDI (tmp_tmp, 32767)) {
20675{
20676 {
20677 UHI opval = 32767;
20678 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20679 written |= (1 << 10);
20680 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20681 }
20682frvbf_media_overflow (current_cpu, 4);
20683}
20684} else {
20685if (LTDI (tmp_tmp, -32768)) {
20686{
20687 {
20688 UHI opval = -32768;
20689 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20690 written |= (1 << 10);
20691 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20692 }
20693frvbf_media_overflow (current_cpu, 4);
20694}
20695} else {
20696 {
20697 UHI opval = tmp_tmp;
20698 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20699 written |= (1 << 10);
20700 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20701 }
20702}
20703}
20704}
20705}
20706
20707 abuf->written = written;
20708 return vpc;
20709#undef FLD
20710}
20711
20712/* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20713
20714static SEM_PC
20715SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20716{
20717#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20719 int UNUSED written = 0;
20720 IADDR UNUSED pc = abuf->addr;
20721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20722
20723{
20724 UHI tmp_argihi;
20725 UHI tmp_argilo;
20726 UHI tmp_argjhi;
20727 UHI tmp_argjlo;
20728{
20729 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20730 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20731 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20732 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20733}
20734{
20735 DI tmp_tmp;
20736 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20737if (GTDI (tmp_tmp, 65535)) {
20738{
20739 {
20740 UHI opval = 65535;
20741 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20742 written |= (1 << 9);
20743 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20744 }
20745frvbf_media_overflow (current_cpu, 8);
20746}
20747} else {
20748if (LTDI (tmp_tmp, 0)) {
20749{
20750 {
20751 UHI opval = 0;
20752 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20753 written |= (1 << 9);
20754 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20755 }
20756frvbf_media_overflow (current_cpu, 8);
20757}
20758} else {
20759 {
20760 UHI opval = tmp_tmp;
20761 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20762 written |= (1 << 9);
20763 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20764 }
20765}
20766}
20767}
20768{
20769 DI tmp_tmp;
20770 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20771if (GTDI (tmp_tmp, 65535)) {
20772{
20773 {
20774 UHI opval = 65535;
20775 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20776 written |= (1 << 10);
20777 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20778 }
20779frvbf_media_overflow (current_cpu, 4);
20780}
20781} else {
20782if (LTDI (tmp_tmp, 0)) {
20783{
20784 {
20785 UHI opval = 0;
20786 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20787 written |= (1 << 10);
20788 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20789 }
20790frvbf_media_overflow (current_cpu, 4);
20791}
20792} else {
20793 {
20794 UHI opval = tmp_tmp;
20795 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20796 written |= (1 << 10);
20797 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20798 }
20799}
20800}
20801}
20802}
20803
20804 abuf->written = written;
20805 return vpc;
20806#undef FLD
20807}
20808
20809/* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20810
20811static SEM_PC
20812SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20813{
20814#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20815 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20816 int UNUSED written = 0;
20817 IADDR UNUSED pc = abuf->addr;
20818 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20819
20820if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20821{
20822 HI tmp_argihi;
20823 HI tmp_argilo;
20824 HI tmp_argjhi;
20825 HI tmp_argjlo;
20826{
20827 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20828 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20829 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20830 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20831}
20832{
20833 DI tmp_tmp;
20834 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20835if (GTDI (tmp_tmp, 32767)) {
20836{
20837 {
20838 UHI opval = 32767;
20839 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20840 written |= (1 << 11);
20841 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20842 }
20843frvbf_media_overflow (current_cpu, 8);
20844}
20845} else {
20846if (LTDI (tmp_tmp, -32768)) {
20847{
20848 {
20849 UHI opval = -32768;
20850 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20851 written |= (1 << 11);
20852 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20853 }
20854frvbf_media_overflow (current_cpu, 8);
20855}
20856} else {
20857 {
20858 UHI opval = tmp_tmp;
20859 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20860 written |= (1 << 11);
20861 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20862 }
20863}
20864}
20865}
20866{
20867 DI tmp_tmp;
20868 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20869if (GTDI (tmp_tmp, 32767)) {
20870{
20871 {
20872 UHI opval = 32767;
20873 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20874 written |= (1 << 12);
20875 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20876 }
20877frvbf_media_overflow (current_cpu, 4);
20878}
20879} else {
20880if (LTDI (tmp_tmp, -32768)) {
20881{
20882 {
20883 UHI opval = -32768;
20884 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20885 written |= (1 << 12);
20886 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20887 }
20888frvbf_media_overflow (current_cpu, 4);
20889}
20890} else {
20891 {
20892 UHI opval = tmp_tmp;
20893 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20894 written |= (1 << 12);
20895 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20896 }
20897}
20898}
20899}
20900}
20901}
20902
20903 abuf->written = written;
20904 return vpc;
20905#undef FLD
20906}
20907
20908/* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20909
20910static SEM_PC
20911SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20912{
20913#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20915 int UNUSED written = 0;
20916 IADDR UNUSED pc = abuf->addr;
20917 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20918
20919if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20920{
20921 UHI tmp_argihi;
20922 UHI tmp_argilo;
20923 UHI tmp_argjhi;
20924 UHI tmp_argjlo;
20925{
20926 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20927 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20928 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20929 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20930}
20931{
20932 DI tmp_tmp;
20933 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20934if (GTDI (tmp_tmp, 65535)) {
20935{
20936 {
20937 UHI opval = 65535;
20938 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20939 written |= (1 << 11);
20940 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20941 }
20942frvbf_media_overflow (current_cpu, 8);
20943}
20944} else {
20945if (LTDI (tmp_tmp, 0)) {
20946{
20947 {
20948 UHI opval = 0;
20949 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20950 written |= (1 << 11);
20951 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20952 }
20953frvbf_media_overflow (current_cpu, 8);
20954}
20955} else {
20956 {
20957 UHI opval = tmp_tmp;
20958 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20959 written |= (1 << 11);
20960 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20961 }
20962}
20963}
20964}
20965{
20966 DI tmp_tmp;
20967 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20968if (GTDI (tmp_tmp, 65535)) {
20969{
20970 {
20971 UHI opval = 65535;
20972 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20973 written |= (1 << 12);
20974 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20975 }
20976frvbf_media_overflow (current_cpu, 4);
20977}
20978} else {
20979if (LTDI (tmp_tmp, 0)) {
20980{
20981 {
20982 UHI opval = 0;
20983 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20984 written |= (1 << 12);
20985 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20986 }
20987frvbf_media_overflow (current_cpu, 4);
20988}
20989} else {
20990 {
20991 UHI opval = tmp_tmp;
20992 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20993 written |= (1 << 12);
20994 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20995 }
20996}
20997}
20998}
20999}
21000}
21001
21002 abuf->written = written;
21003 return vpc;
21004#undef FLD
21005}
21006
21007/* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21008
21009static SEM_PC
21010SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21011{
21012#define FLD(f) abuf->fields.sfmt_cmaddhss.f
21013 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21014 int UNUSED written = 0;
21015 IADDR UNUSED pc = abuf->addr;
21016 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21017
21018if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21019{
21020 HI tmp_argihi;
21021 HI tmp_argilo;
21022 HI tmp_argjhi;
21023 HI tmp_argjlo;
21024{
21025 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21026 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21027 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21028 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21029}
21030{
21031 DI tmp_tmp;
21032 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21033if (GTDI (tmp_tmp, 32767)) {
21034{
21035 {
21036 UHI opval = 32767;
21037 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21038 written |= (1 << 11);
21039 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21040 }
21041frvbf_media_overflow (current_cpu, 8);
21042}
21043} else {
21044if (LTDI (tmp_tmp, -32768)) {
21045{
21046 {
21047 UHI opval = -32768;
21048 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21049 written |= (1 << 11);
21050 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21051 }
21052frvbf_media_overflow (current_cpu, 8);
21053}
21054} else {
21055 {
21056 UHI opval = tmp_tmp;
21057 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21058 written |= (1 << 11);
21059 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21060 }
21061}
21062}
21063}
21064{
21065 DI tmp_tmp;
21066 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21067if (GTDI (tmp_tmp, 32767)) {
21068{
21069 {
21070 UHI opval = 32767;
21071 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21072 written |= (1 << 12);
21073 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21074 }
21075frvbf_media_overflow (current_cpu, 4);
21076}
21077} else {
21078if (LTDI (tmp_tmp, -32768)) {
21079{
21080 {
21081 UHI opval = -32768;
21082 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21083 written |= (1 << 12);
21084 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21085 }
21086frvbf_media_overflow (current_cpu, 4);
21087}
21088} else {
21089 {
21090 UHI opval = tmp_tmp;
21091 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21092 written |= (1 << 12);
21093 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21094 }
21095}
21096}
21097}
21098}
21099}
21100
21101 abuf->written = written;
21102 return vpc;
21103#undef FLD
21104}
21105
21106/* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21107
21108static SEM_PC
21109SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21110{
21111#define FLD(f) abuf->fields.sfmt_cmaddhss.f
21112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21113 int UNUSED written = 0;
21114 IADDR UNUSED pc = abuf->addr;
21115 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21116
21117if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21118{
21119 UHI tmp_argihi;
21120 UHI tmp_argilo;
21121 UHI tmp_argjhi;
21122 UHI tmp_argjlo;
21123{
21124 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21125 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21126 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21127 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21128}
21129{
21130 DI tmp_tmp;
21131 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21132if (GTDI (tmp_tmp, 65535)) {
21133{
21134 {
21135 UHI opval = 65535;
21136 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21137 written |= (1 << 11);
21138 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21139 }
21140frvbf_media_overflow (current_cpu, 8);
21141}
21142} else {
21143if (LTDI (tmp_tmp, 0)) {
21144{
21145 {
21146 UHI opval = 0;
21147 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21148 written |= (1 << 11);
21149 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21150 }
21151frvbf_media_overflow (current_cpu, 8);
21152}
21153} else {
21154 {
21155 UHI opval = tmp_tmp;
21156 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21157 written |= (1 << 11);
21158 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21159 }
21160}
21161}
21162}
21163{
21164 DI tmp_tmp;
21165 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21166if (GTDI (tmp_tmp, 65535)) {
21167{
21168 {
21169 UHI opval = 65535;
21170 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21171 written |= (1 << 12);
21172 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21173 }
21174frvbf_media_overflow (current_cpu, 4);
21175}
21176} else {
21177if (LTDI (tmp_tmp, 0)) {
21178{
21179 {
21180 UHI opval = 0;
21181 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21182 written |= (1 << 12);
21183 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21184 }
21185frvbf_media_overflow (current_cpu, 4);
21186}
21187} else {
21188 {
21189 UHI opval = tmp_tmp;
21190 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21191 written |= (1 << 12);
21192 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21193 }
21194}
21195}
21196}
21197}
21198}
21199
21200 abuf->written = written;
21201 return vpc;
21202#undef FLD
21203}
21204
21205/* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21206
21207static SEM_PC
21208SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21209{
21210#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21212 int UNUSED written = 0;
21213 IADDR UNUSED pc = abuf->addr;
21214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21215
21216if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21217frvbf_media_register_not_aligned (current_cpu);
21218} else {
21219{
21220 HI tmp_argihi;
21221 HI tmp_argilo;
21222 HI tmp_argjhi;
21223 HI tmp_argjlo;
21224 {
21225 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21226 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21227 written |= (1 << 14);
21228 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21229 }
21230{
21231 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21232 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21233 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21234 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21235}
21236{
21237 DI tmp_tmp;
21238 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21239if (GTDI (tmp_tmp, 32767)) {
21240{
21241 {
21242 UHI opval = 32767;
21243 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21244 written |= (1 << 15);
21245 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21246 }
21247frvbf_media_overflow (current_cpu, 8);
21248}
21249} else {
21250if (LTDI (tmp_tmp, -32768)) {
21251{
21252 {
21253 UHI opval = -32768;
21254 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21255 written |= (1 << 15);
21256 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21257 }
21258frvbf_media_overflow (current_cpu, 8);
21259}
21260} else {
21261 {
21262 UHI opval = tmp_tmp;
21263 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21264 written |= (1 << 15);
21265 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21266 }
21267}
21268}
21269}
21270{
21271 DI tmp_tmp;
21272 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21273if (GTDI (tmp_tmp, 32767)) {
21274{
21275 {
21276 UHI opval = 32767;
21277 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21278 written |= (1 << 17);
21279 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21280 }
21281frvbf_media_overflow (current_cpu, 4);
21282}
21283} else {
21284if (LTDI (tmp_tmp, -32768)) {
21285{
21286 {
21287 UHI opval = -32768;
21288 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21289 written |= (1 << 17);
21290 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21291 }
21292frvbf_media_overflow (current_cpu, 4);
21293}
21294} else {
21295 {
21296 UHI opval = tmp_tmp;
21297 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21298 written |= (1 << 17);
21299 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21300 }
21301}
21302}
21303}
21304{
21305 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21306 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21307 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21308 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21309}
21310{
21311 DI tmp_tmp;
21312 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21313if (GTDI (tmp_tmp, 32767)) {
21314{
21315 {
21316 UHI opval = 32767;
21317 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21318 written |= (1 << 16);
21319 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21320 }
21321frvbf_media_overflow (current_cpu, 2);
21322}
21323} else {
21324if (LTDI (tmp_tmp, -32768)) {
21325{
21326 {
21327 UHI opval = -32768;
21328 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21329 written |= (1 << 16);
21330 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21331 }
21332frvbf_media_overflow (current_cpu, 2);
21333}
21334} else {
21335 {
21336 UHI opval = tmp_tmp;
21337 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21338 written |= (1 << 16);
21339 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21340 }
21341}
21342}
21343}
21344{
21345 DI tmp_tmp;
21346 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21347if (GTDI (tmp_tmp, 32767)) {
21348{
21349 {
21350 UHI opval = 32767;
21351 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21352 written |= (1 << 18);
21353 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21354 }
21355frvbf_media_overflow (current_cpu, 1);
21356}
21357} else {
21358if (LTDI (tmp_tmp, -32768)) {
21359{
21360 {
21361 UHI opval = -32768;
21362 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21363 written |= (1 << 18);
21364 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21365 }
21366frvbf_media_overflow (current_cpu, 1);
21367}
21368} else {
21369 {
21370 UHI opval = tmp_tmp;
21371 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21372 written |= (1 << 18);
21373 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21374 }
21375}
21376}
21377}
21378}
21379}
21380
21381 abuf->written = written;
21382 return vpc;
21383#undef FLD
21384}
21385
21386/* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21387
21388static SEM_PC
21389SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21390{
21391#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21393 int UNUSED written = 0;
21394 IADDR UNUSED pc = abuf->addr;
21395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21396
21397if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21398frvbf_media_register_not_aligned (current_cpu);
21399} else {
21400{
21401 UHI tmp_argihi;
21402 UHI tmp_argilo;
21403 UHI tmp_argjhi;
21404 UHI tmp_argjlo;
21405 {
21406 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21407 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21408 written |= (1 << 14);
21409 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21410 }
21411{
21412 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21413 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21414 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21415 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21416}
21417{
21418 DI tmp_tmp;
21419 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21420if (GTDI (tmp_tmp, 65535)) {
21421{
21422 {
21423 UHI opval = 65535;
21424 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21425 written |= (1 << 15);
21426 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21427 }
21428frvbf_media_overflow (current_cpu, 8);
21429}
21430} else {
21431if (LTDI (tmp_tmp, 0)) {
21432{
21433 {
21434 UHI opval = 0;
21435 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21436 written |= (1 << 15);
21437 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21438 }
21439frvbf_media_overflow (current_cpu, 8);
21440}
21441} else {
21442 {
21443 UHI opval = tmp_tmp;
21444 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21445 written |= (1 << 15);
21446 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21447 }
21448}
21449}
21450}
21451{
21452 DI tmp_tmp;
21453 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21454if (GTDI (tmp_tmp, 65535)) {
21455{
21456 {
21457 UHI opval = 65535;
21458 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21459 written |= (1 << 17);
21460 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21461 }
21462frvbf_media_overflow (current_cpu, 4);
21463}
21464} else {
21465if (LTDI (tmp_tmp, 0)) {
21466{
21467 {
21468 UHI opval = 0;
21469 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21470 written |= (1 << 17);
21471 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21472 }
21473frvbf_media_overflow (current_cpu, 4);
21474}
21475} else {
21476 {
21477 UHI opval = tmp_tmp;
21478 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21479 written |= (1 << 17);
21480 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21481 }
21482}
21483}
21484}
21485{
21486 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21487 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21488 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21489 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21490}
21491{
21492 DI tmp_tmp;
21493 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21494if (GTDI (tmp_tmp, 65535)) {
21495{
21496 {
21497 UHI opval = 65535;
21498 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21499 written |= (1 << 16);
21500 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21501 }
21502frvbf_media_overflow (current_cpu, 2);
21503}
21504} else {
21505if (LTDI (tmp_tmp, 0)) {
21506{
21507 {
21508 UHI opval = 0;
21509 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21510 written |= (1 << 16);
21511 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21512 }
21513frvbf_media_overflow (current_cpu, 2);
21514}
21515} else {
21516 {
21517 UHI opval = tmp_tmp;
21518 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21519 written |= (1 << 16);
21520 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21521 }
21522}
21523}
21524}
21525{
21526 DI tmp_tmp;
21527 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21528if (GTDI (tmp_tmp, 65535)) {
21529{
21530 {
21531 UHI opval = 65535;
21532 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21533 written |= (1 << 18);
21534 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21535 }
21536frvbf_media_overflow (current_cpu, 1);
21537}
21538} else {
21539if (LTDI (tmp_tmp, 0)) {
21540{
21541 {
21542 UHI opval = 0;
21543 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21544 written |= (1 << 18);
21545 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21546 }
21547frvbf_media_overflow (current_cpu, 1);
21548}
21549} else {
21550 {
21551 UHI opval = tmp_tmp;
21552 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21553 written |= (1 << 18);
21554 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21555 }
21556}
21557}
21558}
21559}
21560}
21561
21562 abuf->written = written;
21563 return vpc;
21564#undef FLD
21565}
21566
21567/* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21568
21569static SEM_PC
21570SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21571{
21572#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21574 int UNUSED written = 0;
21575 IADDR UNUSED pc = abuf->addr;
21576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21577
21578if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21579frvbf_media_register_not_aligned (current_cpu);
21580} else {
21581{
21582 HI tmp_argihi;
21583 HI tmp_argilo;
21584 HI tmp_argjhi;
21585 HI tmp_argjlo;
21586 {
21587 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21588 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21589 written |= (1 << 14);
21590 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21591 }
21592{
21593 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21594 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21595 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21596 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21597}
21598{
21599 DI tmp_tmp;
21600 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21601if (GTDI (tmp_tmp, 32767)) {
21602{
21603 {
21604 UHI opval = 32767;
21605 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21606 written |= (1 << 15);
21607 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21608 }
21609frvbf_media_overflow (current_cpu, 8);
21610}
21611} else {
21612if (LTDI (tmp_tmp, -32768)) {
21613{
21614 {
21615 UHI opval = -32768;
21616 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21617 written |= (1 << 15);
21618 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21619 }
21620frvbf_media_overflow (current_cpu, 8);
21621}
21622} else {
21623 {
21624 UHI opval = tmp_tmp;
21625 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21626 written |= (1 << 15);
21627 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21628 }
21629}
21630}
21631}
21632{
21633 DI tmp_tmp;
21634 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21635if (GTDI (tmp_tmp, 32767)) {
21636{
21637 {
21638 UHI opval = 32767;
21639 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21640 written |= (1 << 17);
21641 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21642 }
21643frvbf_media_overflow (current_cpu, 4);
21644}
21645} else {
21646if (LTDI (tmp_tmp, -32768)) {
21647{
21648 {
21649 UHI opval = -32768;
21650 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21651 written |= (1 << 17);
21652 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21653 }
21654frvbf_media_overflow (current_cpu, 4);
21655}
21656} else {
21657 {
21658 UHI opval = tmp_tmp;
21659 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21660 written |= (1 << 17);
21661 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21662 }
21663}
21664}
21665}
21666{
21667 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21668 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21669 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21670 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21671}
21672{
21673 DI tmp_tmp;
21674 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21675if (GTDI (tmp_tmp, 32767)) {
21676{
21677 {
21678 UHI opval = 32767;
21679 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21680 written |= (1 << 16);
21681 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21682 }
21683frvbf_media_overflow (current_cpu, 2);
21684}
21685} else {
21686if (LTDI (tmp_tmp, -32768)) {
21687{
21688 {
21689 UHI opval = -32768;
21690 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21691 written |= (1 << 16);
21692 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21693 }
21694frvbf_media_overflow (current_cpu, 2);
21695}
21696} else {
21697 {
21698 UHI opval = tmp_tmp;
21699 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21700 written |= (1 << 16);
21701 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21702 }
21703}
21704}
21705}
21706{
21707 DI tmp_tmp;
21708 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21709if (GTDI (tmp_tmp, 32767)) {
21710{
21711 {
21712 UHI opval = 32767;
21713 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21714 written |= (1 << 18);
21715 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21716 }
21717frvbf_media_overflow (current_cpu, 1);
21718}
21719} else {
21720if (LTDI (tmp_tmp, -32768)) {
21721{
21722 {
21723 UHI opval = -32768;
21724 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21725 written |= (1 << 18);
21726 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21727 }
21728frvbf_media_overflow (current_cpu, 1);
21729}
21730} else {
21731 {
21732 UHI opval = tmp_tmp;
21733 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21734 written |= (1 << 18);
21735 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21736 }
21737}
21738}
21739}
21740}
21741}
21742
21743 abuf->written = written;
21744 return vpc;
21745#undef FLD
21746}
21747
21748/* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21749
21750static SEM_PC
21751SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21752{
21753#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21754 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21755 int UNUSED written = 0;
21756 IADDR UNUSED pc = abuf->addr;
21757 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21758
21759if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21760frvbf_media_register_not_aligned (current_cpu);
21761} else {
21762{
21763 UHI tmp_argihi;
21764 UHI tmp_argilo;
21765 UHI tmp_argjhi;
21766 UHI tmp_argjlo;
21767 {
21768 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21769 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21770 written |= (1 << 14);
21771 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21772 }
21773{
21774 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21775 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21776 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21777 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21778}
21779{
21780 DI tmp_tmp;
21781 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21782if (GTDI (tmp_tmp, 65535)) {
21783{
21784 {
21785 UHI opval = 65535;
21786 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21787 written |= (1 << 15);
21788 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21789 }
21790frvbf_media_overflow (current_cpu, 8);
21791}
21792} else {
21793if (LTDI (tmp_tmp, 0)) {
21794{
21795 {
21796 UHI opval = 0;
21797 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21798 written |= (1 << 15);
21799 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21800 }
21801frvbf_media_overflow (current_cpu, 8);
21802}
21803} else {
21804 {
21805 UHI opval = tmp_tmp;
21806 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21807 written |= (1 << 15);
21808 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21809 }
21810}
21811}
21812}
21813{
21814 DI tmp_tmp;
21815 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21816if (GTDI (tmp_tmp, 65535)) {
21817{
21818 {
21819 UHI opval = 65535;
21820 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21821 written |= (1 << 17);
21822 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21823 }
21824frvbf_media_overflow (current_cpu, 4);
21825}
21826} else {
21827if (LTDI (tmp_tmp, 0)) {
21828{
21829 {
21830 UHI opval = 0;
21831 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21832 written |= (1 << 17);
21833 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21834 }
21835frvbf_media_overflow (current_cpu, 4);
21836}
21837} else {
21838 {
21839 UHI opval = tmp_tmp;
21840 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21841 written |= (1 << 17);
21842 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21843 }
21844}
21845}
21846}
21847{
21848 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21849 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21850 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21851 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21852}
21853{
21854 DI tmp_tmp;
21855 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21856if (GTDI (tmp_tmp, 65535)) {
21857{
21858 {
21859 UHI opval = 65535;
21860 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21861 written |= (1 << 16);
21862 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21863 }
21864frvbf_media_overflow (current_cpu, 2);
21865}
21866} else {
21867if (LTDI (tmp_tmp, 0)) {
21868{
21869 {
21870 UHI opval = 0;
21871 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21872 written |= (1 << 16);
21873 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21874 }
21875frvbf_media_overflow (current_cpu, 2);
21876}
21877} else {
21878 {
21879 UHI opval = tmp_tmp;
21880 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21881 written |= (1 << 16);
21882 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21883 }
21884}
21885}
21886}
21887{
21888 DI tmp_tmp;
21889 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21890if (GTDI (tmp_tmp, 65535)) {
21891{
21892 {
21893 UHI opval = 65535;
21894 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21895 written |= (1 << 18);
21896 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21897 }
21898frvbf_media_overflow (current_cpu, 1);
21899}
21900} else {
21901if (LTDI (tmp_tmp, 0)) {
21902{
21903 {
21904 UHI opval = 0;
21905 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21906 written |= (1 << 18);
21907 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21908 }
21909frvbf_media_overflow (current_cpu, 1);
21910}
21911} else {
21912 {
21913 UHI opval = tmp_tmp;
21914 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21915 written |= (1 << 18);
21916 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21917 }
21918}
21919}
21920}
21921}
21922}
21923
21924 abuf->written = written;
21925 return vpc;
21926#undef FLD
21927}
21928
21929/* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21930
21931static SEM_PC
21932SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21933{
21934#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21936 int UNUSED written = 0;
21937 IADDR UNUSED pc = abuf->addr;
21938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21939
21940if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21941frvbf_media_register_not_aligned (current_cpu);
21942} else {
21943if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21944{
21945 HI tmp_argihi;
21946 HI tmp_argilo;
21947 HI tmp_argjhi;
21948 HI tmp_argjlo;
21949 {
21950 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21951 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21952 written |= (1 << 16);
21953 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21954 }
21955{
21956 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21957 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21958 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21959 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21960}
21961{
21962 DI tmp_tmp;
21963 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21964if (GTDI (tmp_tmp, 32767)) {
21965{
21966 {
21967 UHI opval = 32767;
21968 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21969 written |= (1 << 17);
21970 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21971 }
21972frvbf_media_overflow (current_cpu, 8);
21973}
21974} else {
21975if (LTDI (tmp_tmp, -32768)) {
21976{
21977 {
21978 UHI opval = -32768;
21979 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21980 written |= (1 << 17);
21981 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21982 }
21983frvbf_media_overflow (current_cpu, 8);
21984}
21985} else {
21986 {
21987 UHI opval = tmp_tmp;
21988 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21989 written |= (1 << 17);
21990 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21991 }
21992}
21993}
21994}
21995{
21996 DI tmp_tmp;
21997 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21998if (GTDI (tmp_tmp, 32767)) {
21999{
22000 {
22001 UHI opval = 32767;
22002 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22003 written |= (1 << 19);
22004 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22005 }
22006frvbf_media_overflow (current_cpu, 4);
22007}
22008} else {
22009if (LTDI (tmp_tmp, -32768)) {
22010{
22011 {
22012 UHI opval = -32768;
22013 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22014 written |= (1 << 19);
22015 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22016 }
22017frvbf_media_overflow (current_cpu, 4);
22018}
22019} else {
22020 {
22021 UHI opval = tmp_tmp;
22022 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22023 written |= (1 << 19);
22024 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22025 }
22026}
22027}
22028}
22029{
22030 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22031 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22032 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22033 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22034}
22035{
22036 DI tmp_tmp;
22037 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22038if (GTDI (tmp_tmp, 32767)) {
22039{
22040 {
22041 UHI opval = 32767;
22042 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22043 written |= (1 << 18);
22044 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22045 }
22046frvbf_media_overflow (current_cpu, 2);
22047}
22048} else {
22049if (LTDI (tmp_tmp, -32768)) {
22050{
22051 {
22052 UHI opval = -32768;
22053 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22054 written |= (1 << 18);
22055 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22056 }
22057frvbf_media_overflow (current_cpu, 2);
22058}
22059} else {
22060 {
22061 UHI opval = tmp_tmp;
22062 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22063 written |= (1 << 18);
22064 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22065 }
22066}
22067}
22068}
22069{
22070 DI tmp_tmp;
22071 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22072if (GTDI (tmp_tmp, 32767)) {
22073{
22074 {
22075 UHI opval = 32767;
22076 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22077 written |= (1 << 20);
22078 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22079 }
22080frvbf_media_overflow (current_cpu, 1);
22081}
22082} else {
22083if (LTDI (tmp_tmp, -32768)) {
22084{
22085 {
22086 UHI opval = -32768;
22087 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22088 written |= (1 << 20);
22089 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22090 }
22091frvbf_media_overflow (current_cpu, 1);
22092}
22093} else {
22094 {
22095 UHI opval = tmp_tmp;
22096 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22097 written |= (1 << 20);
22098 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22099 }
22100}
22101}
22102}
22103}
22104}
22105}
22106
22107 abuf->written = written;
22108 return vpc;
22109#undef FLD
22110}
22111
22112/* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22113
22114static SEM_PC
22115SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22116{
22117#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22118 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22119 int UNUSED written = 0;
22120 IADDR UNUSED pc = abuf->addr;
22121 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22122
22123if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22124frvbf_media_register_not_aligned (current_cpu);
22125} else {
22126if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22127{
22128 UHI tmp_argihi;
22129 UHI tmp_argilo;
22130 UHI tmp_argjhi;
22131 UHI tmp_argjlo;
22132 {
22133 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22134 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22135 written |= (1 << 16);
22136 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22137 }
22138{
22139 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22140 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22141 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22142 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22143}
22144{
22145 DI tmp_tmp;
22146 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22147if (GTDI (tmp_tmp, 65535)) {
22148{
22149 {
22150 UHI opval = 65535;
22151 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22152 written |= (1 << 17);
22153 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22154 }
22155frvbf_media_overflow (current_cpu, 8);
22156}
22157} else {
22158if (LTDI (tmp_tmp, 0)) {
22159{
22160 {
22161 UHI opval = 0;
22162 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22163 written |= (1 << 17);
22164 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22165 }
22166frvbf_media_overflow (current_cpu, 8);
22167}
22168} else {
22169 {
22170 UHI opval = tmp_tmp;
22171 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22172 written |= (1 << 17);
22173 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22174 }
22175}
22176}
22177}
22178{
22179 DI tmp_tmp;
22180 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22181if (GTDI (tmp_tmp, 65535)) {
22182{
22183 {
22184 UHI opval = 65535;
22185 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22186 written |= (1 << 19);
22187 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22188 }
22189frvbf_media_overflow (current_cpu, 4);
22190}
22191} else {
22192if (LTDI (tmp_tmp, 0)) {
22193{
22194 {
22195 UHI opval = 0;
22196 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22197 written |= (1 << 19);
22198 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22199 }
22200frvbf_media_overflow (current_cpu, 4);
22201}
22202} else {
22203 {
22204 UHI opval = tmp_tmp;
22205 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22206 written |= (1 << 19);
22207 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22208 }
22209}
22210}
22211}
22212{
22213 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22214 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22215 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22216 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22217}
22218{
22219 DI tmp_tmp;
22220 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22221if (GTDI (tmp_tmp, 65535)) {
22222{
22223 {
22224 UHI opval = 65535;
22225 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22226 written |= (1 << 18);
22227 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22228 }
22229frvbf_media_overflow (current_cpu, 2);
22230}
22231} else {
22232if (LTDI (tmp_tmp, 0)) {
22233{
22234 {
22235 UHI opval = 0;
22236 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22237 written |= (1 << 18);
22238 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22239 }
22240frvbf_media_overflow (current_cpu, 2);
22241}
22242} else {
22243 {
22244 UHI opval = tmp_tmp;
22245 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22246 written |= (1 << 18);
22247 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22248 }
22249}
22250}
22251}
22252{
22253 DI tmp_tmp;
22254 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22255if (GTDI (tmp_tmp, 65535)) {
22256{
22257 {
22258 UHI opval = 65535;
22259 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22260 written |= (1 << 20);
22261 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22262 }
22263frvbf_media_overflow (current_cpu, 1);
22264}
22265} else {
22266if (LTDI (tmp_tmp, 0)) {
22267{
22268 {
22269 UHI opval = 0;
22270 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22271 written |= (1 << 20);
22272 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22273 }
22274frvbf_media_overflow (current_cpu, 1);
22275}
22276} else {
22277 {
22278 UHI opval = tmp_tmp;
22279 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22280 written |= (1 << 20);
22281 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22282 }
22283}
22284}
22285}
22286}
22287}
22288}
22289
22290 abuf->written = written;
22291 return vpc;
22292#undef FLD
22293}
22294
22295/* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22296
22297static SEM_PC
22298SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22299{
22300#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22302 int UNUSED written = 0;
22303 IADDR UNUSED pc = abuf->addr;
22304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22305
22306if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22307frvbf_media_register_not_aligned (current_cpu);
22308} else {
22309if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22310{
22311 HI tmp_argihi;
22312 HI tmp_argilo;
22313 HI tmp_argjhi;
22314 HI tmp_argjlo;
22315 {
22316 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22317 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22318 written |= (1 << 16);
22319 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22320 }
22321{
22322 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22323 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22324 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22325 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22326}
22327{
22328 DI tmp_tmp;
22329 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22330if (GTDI (tmp_tmp, 32767)) {
22331{
22332 {
22333 UHI opval = 32767;
22334 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22335 written |= (1 << 17);
22336 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22337 }
22338frvbf_media_overflow (current_cpu, 8);
22339}
22340} else {
22341if (LTDI (tmp_tmp, -32768)) {
22342{
22343 {
22344 UHI opval = -32768;
22345 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22346 written |= (1 << 17);
22347 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22348 }
22349frvbf_media_overflow (current_cpu, 8);
22350}
22351} else {
22352 {
22353 UHI opval = tmp_tmp;
22354 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22355 written |= (1 << 17);
22356 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22357 }
22358}
22359}
22360}
22361{
22362 DI tmp_tmp;
22363 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22364if (GTDI (tmp_tmp, 32767)) {
22365{
22366 {
22367 UHI opval = 32767;
22368 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22369 written |= (1 << 19);
22370 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22371 }
22372frvbf_media_overflow (current_cpu, 4);
22373}
22374} else {
22375if (LTDI (tmp_tmp, -32768)) {
22376{
22377 {
22378 UHI opval = -32768;
22379 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22380 written |= (1 << 19);
22381 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22382 }
22383frvbf_media_overflow (current_cpu, 4);
22384}
22385} else {
22386 {
22387 UHI opval = tmp_tmp;
22388 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22389 written |= (1 << 19);
22390 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22391 }
22392}
22393}
22394}
22395{
22396 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22397 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22398 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22399 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22400}
22401{
22402 DI tmp_tmp;
22403 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22404if (GTDI (tmp_tmp, 32767)) {
22405{
22406 {
22407 UHI opval = 32767;
22408 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22409 written |= (1 << 18);
22410 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22411 }
22412frvbf_media_overflow (current_cpu, 2);
22413}
22414} else {
22415if (LTDI (tmp_tmp, -32768)) {
22416{
22417 {
22418 UHI opval = -32768;
22419 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22420 written |= (1 << 18);
22421 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22422 }
22423frvbf_media_overflow (current_cpu, 2);
22424}
22425} else {
22426 {
22427 UHI opval = tmp_tmp;
22428 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22429 written |= (1 << 18);
22430 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22431 }
22432}
22433}
22434}
22435{
22436 DI tmp_tmp;
22437 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22438if (GTDI (tmp_tmp, 32767)) {
22439{
22440 {
22441 UHI opval = 32767;
22442 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22443 written |= (1 << 20);
22444 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22445 }
22446frvbf_media_overflow (current_cpu, 1);
22447}
22448} else {
22449if (LTDI (tmp_tmp, -32768)) {
22450{
22451 {
22452 UHI opval = -32768;
22453 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22454 written |= (1 << 20);
22455 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22456 }
22457frvbf_media_overflow (current_cpu, 1);
22458}
22459} else {
22460 {
22461 UHI opval = tmp_tmp;
22462 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22463 written |= (1 << 20);
22464 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22465 }
22466}
22467}
22468}
22469}
22470}
22471}
22472
22473 abuf->written = written;
22474 return vpc;
22475#undef FLD
22476}
22477
22478/* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22479
22480static SEM_PC
22481SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22482{
22483#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22485 int UNUSED written = 0;
22486 IADDR UNUSED pc = abuf->addr;
22487 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22488
22489if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22490frvbf_media_register_not_aligned (current_cpu);
22491} else {
22492if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22493{
22494 UHI tmp_argihi;
22495 UHI tmp_argilo;
22496 UHI tmp_argjhi;
22497 UHI tmp_argjlo;
22498 {
22499 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22500 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22501 written |= (1 << 16);
22502 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22503 }
22504{
22505 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22506 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22507 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22508 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22509}
22510{
22511 DI tmp_tmp;
22512 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22513if (GTDI (tmp_tmp, 65535)) {
22514{
22515 {
22516 UHI opval = 65535;
22517 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22518 written |= (1 << 17);
22519 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22520 }
22521frvbf_media_overflow (current_cpu, 8);
22522}
22523} else {
22524if (LTDI (tmp_tmp, 0)) {
22525{
22526 {
22527 UHI opval = 0;
22528 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22529 written |= (1 << 17);
22530 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22531 }
22532frvbf_media_overflow (current_cpu, 8);
22533}
22534} else {
22535 {
22536 UHI opval = tmp_tmp;
22537 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22538 written |= (1 << 17);
22539 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22540 }
22541}
22542}
22543}
22544{
22545 DI tmp_tmp;
22546 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22547if (GTDI (tmp_tmp, 65535)) {
22548{
22549 {
22550 UHI opval = 65535;
22551 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22552 written |= (1 << 19);
22553 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22554 }
22555frvbf_media_overflow (current_cpu, 4);
22556}
22557} else {
22558if (LTDI (tmp_tmp, 0)) {
22559{
22560 {
22561 UHI opval = 0;
22562 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22563 written |= (1 << 19);
22564 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22565 }
22566frvbf_media_overflow (current_cpu, 4);
22567}
22568} else {
22569 {
22570 UHI opval = tmp_tmp;
22571 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22572 written |= (1 << 19);
22573 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22574 }
22575}
22576}
22577}
22578{
22579 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22580 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22581 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22582 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22583}
22584{
22585 DI tmp_tmp;
22586 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22587if (GTDI (tmp_tmp, 65535)) {
22588{
22589 {
22590 UHI opval = 65535;
22591 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22592 written |= (1 << 18);
22593 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22594 }
22595frvbf_media_overflow (current_cpu, 2);
22596}
22597} else {
22598if (LTDI (tmp_tmp, 0)) {
22599{
22600 {
22601 UHI opval = 0;
22602 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22603 written |= (1 << 18);
22604 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22605 }
22606frvbf_media_overflow (current_cpu, 2);
22607}
22608} else {
22609 {
22610 UHI opval = tmp_tmp;
22611 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22612 written |= (1 << 18);
22613 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22614 }
22615}
22616}
22617}
22618{
22619 DI tmp_tmp;
22620 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22621if (GTDI (tmp_tmp, 65535)) {
22622{
22623 {
22624 UHI opval = 65535;
22625 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22626 written |= (1 << 20);
22627 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22628 }
22629frvbf_media_overflow (current_cpu, 1);
22630}
22631} else {
22632if (LTDI (tmp_tmp, 0)) {
22633{
22634 {
22635 UHI opval = 0;
22636 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22637 written |= (1 << 20);
22638 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22639 }
22640frvbf_media_overflow (current_cpu, 1);
22641}
22642} else {
22643 {
22644 UHI opval = tmp_tmp;
22645 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22646 written |= (1 << 20);
22647 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22648 }
22649}
22650}
22651}
22652}
22653}
22654}
22655
22656 abuf->written = written;
22657 return vpc;
22658#undef FLD
22659}
22660
676a64f4
RS
22661/* mqlclrhs: mqlclrhs$pack $FRintieven,$FRintjeven,$FRintkeven */
22662
22663static SEM_PC
22664SEM_FN_NAME (frvbf,mqlclrhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22665{
22666#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22668 int UNUSED written = 0;
22669 IADDR UNUSED pc = abuf->addr;
22670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22671
22672if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22673frvbf_media_register_not_aligned (current_cpu);
22674} else {
22675{
22676 HI tmp_a1;
22677 HI tmp_a2;
22678 HI tmp_a3;
22679 HI tmp_a4;
22680 HI tmp_b1;
22681 HI tmp_b2;
22682 HI tmp_b3;
22683 HI tmp_b4;
22684 {
22685 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22686 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22687 written |= (1 << 14);
22688 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22689 }
22690{
22691 tmp_a1 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22692 tmp_a2 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22693 tmp_b1 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22694 tmp_b2 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22695}
22696{
22697 tmp_a3 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22698 tmp_a4 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22699 tmp_b3 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22700 tmp_b4 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22701}
22702 {
22703 UHI opval = (LEUHI (ABSHI (tmp_a1), ABSHI (tmp_b1))) ? (0) : (LEHI (0, tmp_b1)) ? (tmp_a1) : (EQHI (tmp_a1, -32768)) ? (32767) : (NEGHI (tmp_a1));
22704 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22705 written |= (1 << 15);
22706 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22707 }
22708 {
22709 UHI opval = (LEUHI (ABSHI (tmp_a2), ABSHI (tmp_b2))) ? (0) : (LEHI (0, tmp_b2)) ? (tmp_a2) : (EQHI (tmp_a2, -32768)) ? (32767) : (NEGHI (tmp_a2));
22710 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22711 written |= (1 << 17);
22712 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22713 }
22714 {
22715 UHI opval = (LEUHI (ABSHI (tmp_a3), ABSHI (tmp_b3))) ? (0) : (LEHI (0, tmp_b3)) ? (tmp_a3) : (EQHI (tmp_a3, -32768)) ? (32767) : (NEGHI (tmp_a3));
22716 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22717 written |= (1 << 16);
22718 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22719 }
22720 {
22721 UHI opval = (LEUHI (ABSHI (tmp_a4), ABSHI (tmp_b4))) ? (0) : (LEHI (0, tmp_b4)) ? (tmp_a4) : (EQHI (tmp_a4, -32768)) ? (32767) : (NEGHI (tmp_a4));
22722 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22723 written |= (1 << 18);
22724 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22725 }
22726}
22727}
22728
22729 abuf->written = written;
22730 return vpc;
22731#undef FLD
22732}
22733
22734/* mqlmths: mqlmths$pack $FRintieven,$FRintjeven,$FRintkeven */
22735
22736static SEM_PC
22737SEM_FN_NAME (frvbf,mqlmths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22738{
22739#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22740 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22741 int UNUSED written = 0;
22742 IADDR UNUSED pc = abuf->addr;
22743 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22744
22745if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22746frvbf_media_register_not_aligned (current_cpu);
22747} else {
22748{
22749 HI tmp_a1;
22750 HI tmp_a2;
22751 HI tmp_a3;
22752 HI tmp_a4;
22753 HI tmp_b1;
22754 HI tmp_b2;
22755 HI tmp_b3;
22756 HI tmp_b4;
22757 {
22758 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22759 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22760 written |= (1 << 14);
22761 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22762 }
22763{
22764 tmp_a1 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22765 tmp_a2 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22766 tmp_b1 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22767 tmp_b2 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22768}
22769{
22770 tmp_a3 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22771 tmp_a4 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22772 tmp_b3 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22773 tmp_b4 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22774}
22775 {
22776 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));
22777 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22778 written |= (1 << 15);
22779 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22780 }
22781 {
22782 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));
22783 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22784 written |= (1 << 17);
22785 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22786 }
22787 {
22788 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));
22789 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22790 written |= (1 << 16);
22791 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22792 }
22793 {
22794 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));
22795 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22796 written |= (1 << 18);
22797 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22798 }
22799}
22800}
22801
22802 abuf->written = written;
22803 return vpc;
22804#undef FLD
22805}
22806
22807/* mqsllhi: mqsllhi$pack $FRintieven,$u6,$FRintkeven */
22808
22809static SEM_PC
22810SEM_FN_NAME (frvbf,mqsllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22811{
22812#define FLD(f) abuf->fields.sfmt_mqsllhi.f
22813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22814 int UNUSED written = 0;
22815 IADDR UNUSED pc = abuf->addr;
22816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22817
22818if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22819frvbf_media_register_not_aligned (current_cpu);
22820} else {
22821{
22822 {
22823 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22824 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22825 written |= (1 << 9);
22826 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22827 }
22828 {
22829 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22830 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22831 written |= (1 << 10);
22832 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22833 }
22834 {
22835 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22836 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22837 written |= (1 << 11);
22838 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22839 }
22840 {
22841 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22842 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22843 written |= (1 << 13);
22844 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22845 }
22846 {
22847 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22848 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22849 written |= (1 << 12);
22850 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22851 }
22852 {
22853 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22854 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22855 written |= (1 << 14);
22856 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22857 }
22858}
22859}
22860
22861 abuf->written = written;
22862 return vpc;
22863#undef FLD
22864}
22865
22866/* mqsrahi: mqsrahi$pack $FRintieven,$u6,$FRintkeven */
22867
22868static SEM_PC
22869SEM_FN_NAME (frvbf,mqsrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22870{
22871#define FLD(f) abuf->fields.sfmt_mqsllhi.f
22872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22873 int UNUSED written = 0;
22874 IADDR UNUSED pc = abuf->addr;
22875 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22876
22877if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22878frvbf_media_register_not_aligned (current_cpu);
22879} else {
22880{
22881 {
22882 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22883 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22884 written |= (1 << 9);
22885 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22886 }
22887 {
22888 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22889 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22890 written |= (1 << 10);
22891 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22892 }
22893 {
22894 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22895 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22896 written |= (1 << 11);
22897 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22898 }
22899 {
22900 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22901 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22902 written |= (1 << 13);
22903 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22904 }
22905 {
22906 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22907 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22908 written |= (1 << 12);
22909 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22910 }
22911 {
22912 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22913 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22914 written |= (1 << 14);
22915 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22916 }
22917}
22918}
22919
22920 abuf->written = written;
22921 return vpc;
22922#undef FLD
22923}
22924
b34f6357
DB
22925/* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22926
22927static SEM_PC
22928SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22929{
22930#define FLD(f) abuf->fields.sfmt_mdasaccs.f
22931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22932 int UNUSED written = 0;
22933 IADDR UNUSED pc = abuf->addr;
22934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22935
e930b1f5
DB
22936if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22937if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
22938if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22939frvbf_media_acc_not_aligned (current_cpu);
22940} else {
22941{
22942 DI tmp_tmp;
22943 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22944if (GTDI (tmp_tmp, 549755813887)) {
22945{
22946 {
22947 DI opval = 549755813887;
22948 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22949 written |= (1 << 4);
b34f6357
DB
22950 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22951 }
22952frvbf_media_overflow (current_cpu, 8);
22953}
22954} else {
22955if (LTDI (tmp_tmp, INVDI (549755813887))) {
22956{
22957 {
22958 DI opval = INVDI (549755813887);
22959 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22960 written |= (1 << 4);
b34f6357
DB
22961 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22962 }
22963frvbf_media_overflow (current_cpu, 8);
22964}
22965} else {
22966 {
22967 DI opval = tmp_tmp;
22968 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22969 written |= (1 << 4);
b34f6357
DB
22970 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22971 }
22972}
22973}
22974}
e930b1f5
DB
22975}
22976}
b34f6357
DB
22977}
22978
22979 abuf->written = written;
22980 return vpc;
22981#undef FLD
22982}
22983
22984/* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22985
22986static SEM_PC
22987SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22988{
22989#define FLD(f) abuf->fields.sfmt_mdasaccs.f
22990 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22991 int UNUSED written = 0;
22992 IADDR UNUSED pc = abuf->addr;
22993 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22994
e930b1f5
DB
22995if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22996if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
22997if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22998frvbf_media_acc_not_aligned (current_cpu);
22999} else {
23000{
23001 DI tmp_tmp;
23002 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23003if (GTDI (tmp_tmp, 549755813887)) {
23004{
23005 {
23006 DI opval = 549755813887;
23007 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23008 written |= (1 << 4);
b34f6357
DB
23009 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23010 }
23011frvbf_media_overflow (current_cpu, 8);
23012}
23013} else {
23014if (LTDI (tmp_tmp, INVDI (549755813887))) {
23015{
23016 {
23017 DI opval = INVDI (549755813887);
23018 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23019 written |= (1 << 4);
b34f6357
DB
23020 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23021 }
23022frvbf_media_overflow (current_cpu, 8);
23023}
23024} else {
23025 {
23026 DI opval = tmp_tmp;
23027 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23028 written |= (1 << 4);
b34f6357
DB
23029 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23030 }
23031}
23032}
23033}
e930b1f5
DB
23034}
23035}
b34f6357
DB
23036}
23037
23038 abuf->written = written;
23039 return vpc;
23040#undef FLD
23041}
23042
23043/* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
23044
23045static SEM_PC
23046SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23047{
23048#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23049 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23050 int UNUSED written = 0;
23051 IADDR UNUSED pc = abuf->addr;
23052 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23053
e930b1f5
DB
23054if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23055if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23056if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23057frvbf_media_acc_not_aligned (current_cpu);
23058} else {
23059if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23060frvbf_media_acc_not_aligned (current_cpu);
23061} else {
23062{
23063{
23064 DI tmp_tmp;
23065 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23066if (GTDI (tmp_tmp, 549755813887)) {
23067{
23068 {
23069 DI opval = 549755813887;
23070 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23071 written |= (1 << 6);
23072 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23073 }
23074frvbf_media_overflow (current_cpu, 8);
23075}
23076} else {
23077if (LTDI (tmp_tmp, INVDI (549755813887))) {
23078{
23079 {
23080 DI opval = INVDI (549755813887);
23081 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23082 written |= (1 << 6);
23083 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23084 }
23085frvbf_media_overflow (current_cpu, 8);
23086}
23087} else {
23088 {
23089 DI opval = tmp_tmp;
23090 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23091 written |= (1 << 6);
23092 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23093 }
23094}
23095}
23096}
23097{
23098 DI tmp_tmp;
23099 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23100if (GTDI (tmp_tmp, 549755813887)) {
23101{
23102 {
23103 DI opval = 549755813887;
23104 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23105 written |= (1 << 7);
23106 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23107 }
23108frvbf_media_overflow (current_cpu, 4);
23109}
23110} else {
23111if (LTDI (tmp_tmp, INVDI (549755813887))) {
23112{
23113 {
23114 DI opval = INVDI (549755813887);
23115 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23116 written |= (1 << 7);
23117 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23118 }
23119frvbf_media_overflow (current_cpu, 4);
23120}
23121} else {
23122 {
23123 DI opval = tmp_tmp;
23124 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23125 written |= (1 << 7);
23126 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23127 }
23128}
23129}
23130}
23131}
23132}
e930b1f5
DB
23133}
23134}
b34f6357
DB
23135}
23136
23137 abuf->written = written;
23138 return vpc;
23139#undef FLD
23140}
23141
23142/* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23143
23144static SEM_PC
23145SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23146{
23147#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23149 int UNUSED written = 0;
23150 IADDR UNUSED pc = abuf->addr;
23151 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23152
e930b1f5
DB
23153if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23154if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23155if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23156frvbf_media_acc_not_aligned (current_cpu);
23157} else {
23158if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23159frvbf_media_acc_not_aligned (current_cpu);
23160} else {
23161{
23162{
23163 DI tmp_tmp;
23164 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23165if (GTDI (tmp_tmp, 549755813887)) {
23166{
23167 {
23168 DI opval = 549755813887;
23169 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23170 written |= (1 << 6);
23171 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23172 }
23173frvbf_media_overflow (current_cpu, 8);
23174}
23175} else {
23176if (LTDI (tmp_tmp, INVDI (549755813887))) {
23177{
23178 {
23179 DI opval = INVDI (549755813887);
23180 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23181 written |= (1 << 6);
23182 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23183 }
23184frvbf_media_overflow (current_cpu, 8);
23185}
23186} else {
23187 {
23188 DI opval = tmp_tmp;
23189 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23190 written |= (1 << 6);
23191 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23192 }
23193}
23194}
23195}
23196{
23197 DI tmp_tmp;
23198 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23199if (GTDI (tmp_tmp, 549755813887)) {
23200{
23201 {
23202 DI opval = 549755813887;
23203 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23204 written |= (1 << 7);
23205 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23206 }
23207frvbf_media_overflow (current_cpu, 4);
23208}
23209} else {
23210if (LTDI (tmp_tmp, INVDI (549755813887))) {
23211{
23212 {
23213 DI opval = INVDI (549755813887);
23214 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23215 written |= (1 << 7);
23216 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23217 }
23218frvbf_media_overflow (current_cpu, 4);
23219}
23220} else {
23221 {
23222 DI opval = tmp_tmp;
23223 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23224 written |= (1 << 7);
23225 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23226 }
23227}
23228}
23229}
23230}
23231}
e930b1f5
DB
23232}
23233}
b34f6357
DB
23234}
23235
23236 abuf->written = written;
23237 return vpc;
23238#undef FLD
23239}
23240
23241/* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23242
23243static SEM_PC
23244SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23245{
23246#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23248 int UNUSED written = 0;
23249 IADDR UNUSED pc = abuf->addr;
23250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23251
e930b1f5
DB
23252if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23253if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23254if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23255frvbf_media_acc_not_aligned (current_cpu);
23256} else {
23257if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23258frvbf_media_acc_not_aligned (current_cpu);
23259} else {
23260{
23261{
23262 DI tmp_tmp;
23263 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23264if (GTDI (tmp_tmp, 549755813887)) {
23265{
23266 {
23267 DI opval = 549755813887;
23268 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23269 written |= (1 << 4);
23270 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23271 }
23272frvbf_media_overflow (current_cpu, 8);
23273}
23274} else {
23275if (LTDI (tmp_tmp, INVDI (549755813887))) {
23276{
23277 {
23278 DI opval = INVDI (549755813887);
23279 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23280 written |= (1 << 4);
23281 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23282 }
23283frvbf_media_overflow (current_cpu, 8);
23284}
23285} else {
23286 {
23287 DI opval = tmp_tmp;
23288 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23289 written |= (1 << 4);
23290 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23291 }
23292}
23293}
23294}
23295{
23296 DI tmp_tmp;
23297 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23298if (GTDI (tmp_tmp, 549755813887)) {
23299{
23300 {
23301 DI opval = 549755813887;
23302 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23303 written |= (1 << 5);
23304 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23305 }
23306frvbf_media_overflow (current_cpu, 4);
23307}
23308} else {
23309if (LTDI (tmp_tmp, INVDI (549755813887))) {
23310{
23311 {
23312 DI opval = INVDI (549755813887);
23313 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23314 written |= (1 << 5);
23315 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23316 }
23317frvbf_media_overflow (current_cpu, 4);
23318}
23319} else {
23320 {
23321 DI opval = tmp_tmp;
23322 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23323 written |= (1 << 5);
23324 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23325 }
23326}
23327}
23328}
23329}
23330}
e930b1f5
DB
23331}
23332}
b34f6357
DB
23333}
23334
23335 abuf->written = written;
23336 return vpc;
23337#undef FLD
23338}
23339
23340/* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23341
23342static SEM_PC
23343SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23344{
23345#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23347 int UNUSED written = 0;
23348 IADDR UNUSED pc = abuf->addr;
23349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23350
e930b1f5
DB
23351if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23352if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23353if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23354frvbf_media_acc_not_aligned (current_cpu);
23355} else {
23356if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23357frvbf_media_acc_not_aligned (current_cpu);
23358} else {
23359{
23360{
23361 DI tmp_tmp;
23362 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23363if (GTDI (tmp_tmp, 549755813887)) {
23364{
23365 {
23366 DI opval = 549755813887;
23367 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23368 written |= (1 << 6);
23369 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23370 }
23371frvbf_media_overflow (current_cpu, 8);
23372}
23373} else {
23374if (LTDI (tmp_tmp, INVDI (549755813887))) {
23375{
23376 {
23377 DI opval = INVDI (549755813887);
23378 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23379 written |= (1 << 6);
23380 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23381 }
23382frvbf_media_overflow (current_cpu, 8);
23383}
23384} else {
23385 {
23386 DI opval = tmp_tmp;
23387 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23388 written |= (1 << 6);
23389 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23390 }
23391}
23392}
23393}
23394{
23395 DI tmp_tmp;
23396 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23397if (GTDI (tmp_tmp, 549755813887)) {
23398{
23399 {
23400 DI opval = 549755813887;
23401 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23402 written |= (1 << 7);
23403 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23404 }
23405frvbf_media_overflow (current_cpu, 4);
23406}
23407} else {
23408if (LTDI (tmp_tmp, INVDI (549755813887))) {
23409{
23410 {
23411 DI opval = INVDI (549755813887);
23412 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23413 written |= (1 << 7);
23414 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23415 }
23416frvbf_media_overflow (current_cpu, 4);
23417}
23418} else {
23419 {
23420 DI opval = tmp_tmp;
23421 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23422 written |= (1 << 7);
23423 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23424 }
23425}
23426}
23427}
23428{
23429 DI tmp_tmp;
23430 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23431if (GTDI (tmp_tmp, 549755813887)) {
23432{
23433 {
23434 DI opval = 549755813887;
23435 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23436 written |= (1 << 8);
23437 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23438 }
23439frvbf_media_overflow (current_cpu, 2);
23440}
23441} else {
23442if (LTDI (tmp_tmp, INVDI (549755813887))) {
23443{
23444 {
23445 DI opval = INVDI (549755813887);
23446 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23447 written |= (1 << 8);
23448 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23449 }
23450frvbf_media_overflow (current_cpu, 2);
23451}
23452} else {
23453 {
23454 DI opval = tmp_tmp;
23455 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23456 written |= (1 << 8);
23457 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23458 }
23459}
23460}
23461}
23462{
23463 DI tmp_tmp;
23464 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23465if (GTDI (tmp_tmp, 549755813887)) {
23466{
23467 {
23468 DI opval = 549755813887;
23469 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23470 written |= (1 << 9);
23471 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23472 }
23473frvbf_media_overflow (current_cpu, 1);
23474}
23475} else {
23476if (LTDI (tmp_tmp, INVDI (549755813887))) {
23477{
23478 {
23479 DI opval = INVDI (549755813887);
23480 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23481 written |= (1 << 9);
23482 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23483 }
23484frvbf_media_overflow (current_cpu, 1);
23485}
23486} else {
23487 {
23488 DI opval = tmp_tmp;
23489 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23490 written |= (1 << 9);
23491 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23492 }
23493}
23494}
23495}
23496}
23497}
e930b1f5
DB
23498}
23499}
b34f6357
DB
23500}
23501
23502 abuf->written = written;
23503 return vpc;
23504#undef FLD
23505}
23506
23507/* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23508
23509static SEM_PC
23510SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23511{
23512#define FLD(f) abuf->fields.sfmt_cmmachs.f
23513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23514 int UNUSED written = 0;
23515 IADDR UNUSED pc = abuf->addr;
23516 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23517
e930b1f5 23518if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23519if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23520frvbf_media_acc_not_aligned (current_cpu);
23521} else {
23522{
23523 HI tmp_argihi;
23524 HI tmp_argilo;
23525 HI tmp_argjhi;
23526 HI tmp_argjlo;
23527{
23528 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23529 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23530 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23531 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23532}
23533 {
23534 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23535 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23536 written |= (1 << 9);
23537 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23538 }
23539 {
23540 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23541 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23542 written |= (1 << 10);
23543 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23544 }
23545}
e930b1f5 23546}
b34f6357
DB
23547}
23548
23549 abuf->written = written;
23550 return vpc;
23551#undef FLD
23552}
23553
23554/* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23555
23556static SEM_PC
23557SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23558{
23559#define FLD(f) abuf->fields.sfmt_cmmachs.f
23560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23561 int UNUSED written = 0;
23562 IADDR UNUSED pc = abuf->addr;
23563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23564
e930b1f5 23565if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23566if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23567frvbf_media_acc_not_aligned (current_cpu);
23568} else {
23569{
23570 UHI tmp_argihi;
23571 UHI tmp_argilo;
23572 UHI tmp_argjhi;
23573 UHI tmp_argjlo;
23574{
23575 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23576 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23577 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23578 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23579}
23580 {
23581 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23582 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23583 written |= (1 << 9);
23584 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23585 }
23586 {
23587 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23588 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23589 written |= (1 << 10);
23590 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23591 }
23592}
e930b1f5 23593}
b34f6357
DB
23594}
23595
23596 abuf->written = written;
23597 return vpc;
23598#undef FLD
23599}
23600
23601/* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23602
23603static SEM_PC
23604SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23605{
23606#define FLD(f) abuf->fields.sfmt_cmmachs.f
23607 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23608 int UNUSED written = 0;
23609 IADDR UNUSED pc = abuf->addr;
23610 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23611
e930b1f5 23612if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23613if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23614frvbf_media_acc_not_aligned (current_cpu);
23615} else {
23616{
23617 HI tmp_argihi;
23618 HI tmp_argilo;
23619 HI tmp_argjhi;
23620 HI tmp_argjlo;
23621{
23622 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23623 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23624 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23625 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23626}
23627 {
23628 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23629 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23630 written |= (1 << 9);
23631 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23632 }
23633 {
23634 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23635 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23636 written |= (1 << 10);
23637 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23638 }
23639}
e930b1f5 23640}
b34f6357
DB
23641}
23642
23643 abuf->written = written;
23644 return vpc;
23645#undef FLD
23646}
23647
23648/* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23649
23650static SEM_PC
23651SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23652{
23653#define FLD(f) abuf->fields.sfmt_cmmachs.f
23654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23655 int UNUSED written = 0;
23656 IADDR UNUSED pc = abuf->addr;
23657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23658
e930b1f5 23659if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23660if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23661frvbf_media_acc_not_aligned (current_cpu);
23662} else {
23663{
23664 UHI tmp_argihi;
23665 UHI tmp_argilo;
23666 UHI tmp_argjhi;
23667 UHI tmp_argjlo;
23668{
23669 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23670 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23671 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23672 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23673}
23674 {
23675 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23676 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23677 written |= (1 << 9);
23678 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23679 }
23680 {
23681 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23682 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23683 written |= (1 << 10);
23684 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23685 }
23686}
e930b1f5 23687}
b34f6357
DB
23688}
23689
23690 abuf->written = written;
23691 return vpc;
23692#undef FLD
23693}
23694
23695/* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23696
23697static SEM_PC
23698SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23699{
23700#define FLD(f) abuf->fields.sfmt_cmmachs.f
23701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23702 int UNUSED written = 0;
23703 IADDR UNUSED pc = abuf->addr;
23704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23705
e930b1f5 23706if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23707if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23708frvbf_media_acc_not_aligned (current_cpu);
23709} else {
23710if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23711{
23712 HI tmp_argihi;
23713 HI tmp_argilo;
23714 HI tmp_argjhi;
23715 HI tmp_argjlo;
23716{
23717 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23718 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23719 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23720 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23721}
23722 {
23723 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23724 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23725 written |= (1 << 11);
23726 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23727 }
23728 {
23729 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23730 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23731 written |= (1 << 12);
23732 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23733 }
23734}
23735}
e930b1f5 23736}
b34f6357
DB
23737}
23738
23739 abuf->written = written;
23740 return vpc;
23741#undef FLD
23742}
23743
23744/* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23745
23746static SEM_PC
23747SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23748{
23749#define FLD(f) abuf->fields.sfmt_cmmachs.f
23750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23751 int UNUSED written = 0;
23752 IADDR UNUSED pc = abuf->addr;
23753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23754
e930b1f5 23755if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23756if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23757frvbf_media_acc_not_aligned (current_cpu);
23758} else {
23759if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23760{
23761 UHI tmp_argihi;
23762 UHI tmp_argilo;
23763 UHI tmp_argjhi;
23764 UHI tmp_argjlo;
23765{
23766 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23767 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23768 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23769 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23770}
23771 {
23772 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23773 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23774 written |= (1 << 11);
23775 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23776 }
23777 {
23778 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23779 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23780 written |= (1 << 12);
23781 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23782 }
23783}
23784}
e930b1f5 23785}
b34f6357
DB
23786}
23787
23788 abuf->written = written;
23789 return vpc;
23790#undef FLD
23791}
23792
23793/* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23794
23795static SEM_PC
23796SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23797{
23798#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23800 int UNUSED written = 0;
23801 IADDR UNUSED pc = abuf->addr;
23802 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23803
e930b1f5 23804if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23805if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23806frvbf_media_acc_not_aligned (current_cpu);
23807} else {
23808if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23809frvbf_media_register_not_aligned (current_cpu);
23810} else {
23811{
23812 HI tmp_argihi;
23813 HI tmp_argilo;
23814 HI tmp_argjhi;
23815 HI tmp_argjlo;
23816{
23817 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23818 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23819 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23820 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23821}
23822 {
23823 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23824 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23825 written |= (1 << 13);
23826 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23827 }
23828 {
23829 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23830 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23831 written |= (1 << 14);
23832 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23833 }
23834{
23835 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23836 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23837 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23838 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23839}
23840 {
23841 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23842 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23843 written |= (1 << 15);
23844 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23845 }
23846 {
23847 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23848 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23849 written |= (1 << 16);
23850 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23851 }
23852}
23853}
e930b1f5 23854}
b34f6357
DB
23855}
23856
23857 abuf->written = written;
23858 return vpc;
23859#undef FLD
23860}
23861
23862/* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23863
23864static SEM_PC
23865SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23866{
23867#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23869 int UNUSED written = 0;
23870 IADDR UNUSED pc = abuf->addr;
23871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23872
e930b1f5 23873if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23874if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23875frvbf_media_acc_not_aligned (current_cpu);
23876} else {
23877if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23878frvbf_media_register_not_aligned (current_cpu);
23879} else {
23880{
23881 UHI tmp_argihi;
23882 UHI tmp_argilo;
23883 UHI tmp_argjhi;
23884 UHI tmp_argjlo;
23885{
23886 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23887 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23888 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23889 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23890}
23891 {
23892 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23893 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23894 written |= (1 << 13);
23895 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23896 }
23897 {
23898 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23899 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23900 written |= (1 << 14);
23901 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23902 }
23903{
23904 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23905 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23906 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23907 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23908}
23909 {
23910 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23911 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23912 written |= (1 << 15);
23913 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23914 }
23915 {
23916 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23917 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23918 written |= (1 << 16);
23919 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23920 }
23921}
23922}
e930b1f5 23923}
b34f6357
DB
23924}
23925
23926 abuf->written = written;
23927 return vpc;
23928#undef FLD
23929}
23930
23931/* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23932
23933static SEM_PC
23934SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23935{
23936#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23938 int UNUSED written = 0;
23939 IADDR UNUSED pc = abuf->addr;
23940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23941
e930b1f5 23942if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23943if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23944frvbf_media_acc_not_aligned (current_cpu);
23945} else {
23946if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23947frvbf_media_register_not_aligned (current_cpu);
23948} else {
23949{
23950 HI tmp_argihi;
23951 HI tmp_argilo;
23952 HI tmp_argjhi;
23953 HI tmp_argjlo;
23954{
23955 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23956 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23957 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23958 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23959}
23960 {
23961 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23962 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23963 written |= (1 << 13);
23964 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23965 }
23966 {
23967 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23968 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23969 written |= (1 << 14);
23970 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23971 }
23972{
23973 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23974 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23975 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23976 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23977}
23978 {
23979 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23980 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23981 written |= (1 << 15);
23982 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23983 }
23984 {
23985 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23986 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23987 written |= (1 << 16);
23988 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23989 }
23990}
23991}
e930b1f5 23992}
b34f6357
DB
23993}
23994
23995 abuf->written = written;
23996 return vpc;
23997#undef FLD
23998}
23999
24000/* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
24001
24002static SEM_PC
24003SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24004{
24005#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24006 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24007 int UNUSED written = 0;
24008 IADDR UNUSED pc = abuf->addr;
24009 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24010
e930b1f5 24011if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24012if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24013frvbf_media_acc_not_aligned (current_cpu);
24014} else {
24015if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24016frvbf_media_register_not_aligned (current_cpu);
24017} else {
24018{
24019 UHI tmp_argihi;
24020 UHI tmp_argilo;
24021 UHI tmp_argjhi;
24022 UHI tmp_argjlo;
24023{
24024 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24025 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24026 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24027 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24028}
24029 {
24030 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24031 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24032 written |= (1 << 13);
24033 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24034 }
24035 {
24036 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24037 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24038 written |= (1 << 14);
24039 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24040 }
24041{
24042 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24043 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24044 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24045 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24046}
24047 {
24048 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24049 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24050 written |= (1 << 15);
24051 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24052 }
24053 {
24054 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24055 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24056 written |= (1 << 16);
24057 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24058 }
24059}
24060}
e930b1f5 24061}
b34f6357
DB
24062}
24063
24064 abuf->written = written;
24065 return vpc;
24066#undef FLD
24067}
24068
24069/* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24070
24071static SEM_PC
24072SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24073{
24074#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24076 int UNUSED written = 0;
24077 IADDR UNUSED pc = abuf->addr;
24078 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24079
e930b1f5 24080if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24081if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24082frvbf_media_acc_not_aligned (current_cpu);
24083} else {
24084if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24085frvbf_media_register_not_aligned (current_cpu);
24086} else {
24087if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24088{
24089 HI tmp_argihi;
24090 HI tmp_argilo;
24091 HI tmp_argjhi;
24092 HI tmp_argjlo;
24093{
24094 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24095 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24096 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24097 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24098}
24099 {
24100 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24101 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24102 written |= (1 << 15);
24103 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24104 }
24105 {
24106 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24107 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24108 written |= (1 << 16);
24109 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24110 }
24111{
24112 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24113 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24114 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24115 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24116}
24117 {
24118 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24119 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24120 written |= (1 << 17);
24121 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24122 }
24123 {
24124 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24125 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24126 written |= (1 << 18);
24127 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24128 }
24129}
24130}
24131}
e930b1f5 24132}
b34f6357
DB
24133}
24134
24135 abuf->written = written;
24136 return vpc;
24137#undef FLD
24138}
24139
24140/* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24141
24142static SEM_PC
24143SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24144{
24145#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24147 int UNUSED written = 0;
24148 IADDR UNUSED pc = abuf->addr;
24149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24150
e930b1f5 24151if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24152if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24153frvbf_media_acc_not_aligned (current_cpu);
24154} else {
24155if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24156frvbf_media_register_not_aligned (current_cpu);
24157} else {
24158if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24159{
24160 UHI tmp_argihi;
24161 UHI tmp_argilo;
24162 UHI tmp_argjhi;
24163 UHI tmp_argjlo;
24164{
24165 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24166 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24167 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24168 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24169}
24170 {
24171 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24172 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24173 written |= (1 << 15);
24174 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24175 }
24176 {
24177 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24178 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24179 written |= (1 << 16);
24180 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24181 }
24182{
24183 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24184 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24185 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24186 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24187}
24188 {
24189 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24190 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24191 written |= (1 << 17);
24192 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24193 }
24194 {
24195 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24196 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24197 written |= (1 << 18);
24198 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24199 }
24200}
24201}
24202}
e930b1f5 24203}
b34f6357
DB
24204}
24205
24206 abuf->written = written;
24207 return vpc;
24208#undef FLD
24209}
24210
24211/* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24212
24213static SEM_PC
24214SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24215{
24216#define FLD(f) abuf->fields.sfmt_cmmachs.f
24217 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24218 int UNUSED written = 0;
24219 IADDR UNUSED pc = abuf->addr;
24220 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24221
e930b1f5 24222if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24223if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24224frvbf_media_acc_not_aligned (current_cpu);
24225} else {
24226{
24227 HI tmp_argihi;
24228 HI tmp_argilo;
24229 HI tmp_argjhi;
24230 HI tmp_argjlo;
24231{
24232 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24233 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24234 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24235 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24236}
24237{
24238 DI tmp_tmp;
24239 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24240if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24241{
24242 {
24243 DI opval = MAKEDI (127, 0xffffffff);
24244 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24245 written |= (1 << 11);
24246 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24247 }
24248frvbf_media_overflow (current_cpu, 8);
24249}
24250} else {
24251if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24252{
24253 {
24254 DI opval = MAKEDI (0xffffff80, 0);
24255 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24256 written |= (1 << 11);
24257 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24258 }
24259frvbf_media_overflow (current_cpu, 8);
24260}
24261} else {
24262 {
24263 DI opval = tmp_tmp;
24264 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24265 written |= (1 << 11);
24266 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24267 }
24268}
24269}
24270}
24271{
24272 DI tmp_tmp;
24273 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24274if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24275{
24276 {
24277 DI opval = MAKEDI (127, 0xffffffff);
24278 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24279 written |= (1 << 12);
24280 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24281 }
24282frvbf_media_overflow (current_cpu, 4);
24283}
24284} else {
24285if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24286{
24287 {
24288 DI opval = MAKEDI (0xffffff80, 0);
24289 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24290 written |= (1 << 12);
24291 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24292 }
24293frvbf_media_overflow (current_cpu, 4);
24294}
24295} else {
24296 {
24297 DI opval = tmp_tmp;
24298 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24299 written |= (1 << 12);
24300 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24301 }
24302}
24303}
24304}
24305}
e930b1f5 24306}
b34f6357
DB
24307}
24308
24309 abuf->written = written;
24310 return vpc;
24311#undef FLD
24312}
24313
24314/* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24315
24316static SEM_PC
24317SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24318{
24319#define FLD(f) abuf->fields.sfmt_cmmachu.f
24320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24321 int UNUSED written = 0;
24322 IADDR UNUSED pc = abuf->addr;
24323 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24324
e930b1f5 24325if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24326if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24327frvbf_media_acc_not_aligned (current_cpu);
24328} else {
24329{
24330 UHI tmp_argihi;
24331 UHI tmp_argilo;
24332 UHI tmp_argjhi;
24333 UHI tmp_argjlo;
24334{
24335 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24336 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24337 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24338 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24339}
24340{
24341 DI tmp_tmp;
24342 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24343if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24344{
24345 {
24346 UDI opval = MAKEDI (255, 0xffffffff);
24347 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24348 written |= (1 << 11);
24349 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24350 }
24351frvbf_media_overflow (current_cpu, 8);
24352}
24353} else {
24354if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24355{
24356 {
24357 UDI opval = MAKEDI (0, 0);
24358 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24359 written |= (1 << 11);
24360 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24361 }
24362frvbf_media_overflow (current_cpu, 8);
24363}
24364} else {
24365 {
24366 UDI opval = tmp_tmp;
24367 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24368 written |= (1 << 11);
24369 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24370 }
24371}
24372}
24373}
24374{
24375 DI tmp_tmp;
24376 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24377if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24378{
24379 {
24380 UDI opval = MAKEDI (255, 0xffffffff);
24381 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24382 written |= (1 << 12);
24383 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24384 }
24385frvbf_media_overflow (current_cpu, 4);
24386}
24387} else {
24388if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24389{
24390 {
24391 UDI opval = MAKEDI (0, 0);
24392 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24393 written |= (1 << 12);
24394 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24395 }
24396frvbf_media_overflow (current_cpu, 4);
24397}
24398} else {
24399 {
24400 UDI opval = tmp_tmp;
24401 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24402 written |= (1 << 12);
24403 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24404 }
24405}
24406}
24407}
24408}
e930b1f5 24409}
b34f6357
DB
24410}
24411
24412 abuf->written = written;
24413 return vpc;
24414#undef FLD
24415}
24416
24417/* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24418
24419static SEM_PC
24420SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24421{
24422#define FLD(f) abuf->fields.sfmt_cmmachs.f
24423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24424 int UNUSED written = 0;
24425 IADDR UNUSED pc = abuf->addr;
24426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24427
e930b1f5 24428if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24429if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24430frvbf_media_acc_not_aligned (current_cpu);
24431} else {
24432{
24433 HI tmp_argihi;
24434 HI tmp_argilo;
24435 HI tmp_argjhi;
24436 HI tmp_argjlo;
24437{
24438 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24439 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24440 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24441 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24442}
24443{
24444 DI tmp_tmp;
24445 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24446if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24447{
24448 {
24449 DI opval = MAKEDI (127, 0xffffffff);
24450 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24451 written |= (1 << 11);
24452 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24453 }
24454frvbf_media_overflow (current_cpu, 8);
24455}
24456} else {
24457if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24458{
24459 {
24460 DI opval = MAKEDI (0xffffff80, 0);
24461 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24462 written |= (1 << 11);
24463 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24464 }
24465frvbf_media_overflow (current_cpu, 8);
24466}
24467} else {
24468 {
24469 DI opval = tmp_tmp;
24470 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24471 written |= (1 << 11);
24472 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24473 }
24474}
24475}
24476}
24477{
24478 DI tmp_tmp;
24479 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24480if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24481{
24482 {
24483 DI opval = MAKEDI (127, 0xffffffff);
24484 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24485 written |= (1 << 12);
24486 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24487 }
24488frvbf_media_overflow (current_cpu, 4);
24489}
24490} else {
24491if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24492{
24493 {
24494 DI opval = MAKEDI (0xffffff80, 0);
24495 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24496 written |= (1 << 12);
24497 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24498 }
24499frvbf_media_overflow (current_cpu, 4);
24500}
24501} else {
24502 {
24503 DI opval = tmp_tmp;
24504 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24505 written |= (1 << 12);
24506 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24507 }
24508}
24509}
24510}
24511}
e930b1f5 24512}
b34f6357
DB
24513}
24514
24515 abuf->written = written;
24516 return vpc;
24517#undef FLD
24518}
24519
24520/* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24521
24522static SEM_PC
24523SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24524{
24525#define FLD(f) abuf->fields.sfmt_cmmachu.f
24526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24527 int UNUSED written = 0;
24528 IADDR UNUSED pc = abuf->addr;
24529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24530
e930b1f5 24531if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24532if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24533frvbf_media_acc_not_aligned (current_cpu);
24534} else {
24535{
24536 UHI tmp_argihi;
24537 UHI tmp_argilo;
24538 UHI tmp_argjhi;
24539 UHI tmp_argjlo;
24540{
24541 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24542 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24543 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24544 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24545}
24546{
24547 DI tmp_tmp;
24548 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24549if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24550{
24551 {
24552 UDI opval = MAKEDI (255, 0xffffffff);
24553 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24554 written |= (1 << 11);
24555 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24556 }
24557frvbf_media_overflow (current_cpu, 8);
24558}
24559} else {
24560if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24561{
24562 {
24563 UDI opval = MAKEDI (0, 0);
24564 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24565 written |= (1 << 11);
24566 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24567 }
24568frvbf_media_overflow (current_cpu, 8);
24569}
24570} else {
24571 {
24572 UDI opval = tmp_tmp;
24573 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24574 written |= (1 << 11);
24575 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24576 }
24577}
24578}
24579}
24580{
24581 DI tmp_tmp;
24582 tmp_tmp = SUBDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24583if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24584{
24585 {
24586 UDI opval = MAKEDI (255, 0xffffffff);
24587 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24588 written |= (1 << 12);
24589 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24590 }
24591frvbf_media_overflow (current_cpu, 4);
24592}
24593} else {
24594if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24595{
24596 {
24597 UDI opval = MAKEDI (0, 0);
24598 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24599 written |= (1 << 12);
24600 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24601 }
24602frvbf_media_overflow (current_cpu, 4);
24603}
24604} else {
24605 {
24606 UDI opval = tmp_tmp;
24607 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24608 written |= (1 << 12);
24609 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24610 }
24611}
24612}
24613}
24614}
e930b1f5 24615}
b34f6357
DB
24616}
24617
24618 abuf->written = written;
24619 return vpc;
24620#undef FLD
24621}
24622
24623/* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24624
24625static SEM_PC
24626SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24627{
24628#define FLD(f) abuf->fields.sfmt_cmmachs.f
24629 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24630 int UNUSED written = 0;
24631 IADDR UNUSED pc = abuf->addr;
24632 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24633
e930b1f5 24634if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24635if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24636frvbf_media_acc_not_aligned (current_cpu);
24637} else {
24638if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24639{
24640 HI tmp_argihi;
24641 HI tmp_argilo;
24642 HI tmp_argjhi;
24643 HI tmp_argjlo;
24644{
24645 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24646 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24647 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24648 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24649}
24650{
24651 DI tmp_tmp;
24652 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24653if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24654{
24655 {
24656 DI opval = MAKEDI (127, 0xffffffff);
24657 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24658 written |= (1 << 13);
24659 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24660 }
24661frvbf_media_overflow (current_cpu, 8);
24662}
24663} else {
24664if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24665{
24666 {
24667 DI opval = MAKEDI (0xffffff80, 0);
24668 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24669 written |= (1 << 13);
24670 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24671 }
24672frvbf_media_overflow (current_cpu, 8);
24673}
24674} else {
24675 {
24676 DI opval = tmp_tmp;
24677 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24678 written |= (1 << 13);
24679 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24680 }
24681}
24682}
24683}
24684{
24685 DI tmp_tmp;
24686 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24687if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24688{
24689 {
24690 DI opval = MAKEDI (127, 0xffffffff);
24691 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24692 written |= (1 << 14);
24693 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24694 }
24695frvbf_media_overflow (current_cpu, 4);
24696}
24697} else {
24698if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24699{
24700 {
24701 DI opval = MAKEDI (0xffffff80, 0);
24702 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24703 written |= (1 << 14);
24704 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24705 }
24706frvbf_media_overflow (current_cpu, 4);
24707}
24708} else {
24709 {
24710 DI opval = tmp_tmp;
24711 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24712 written |= (1 << 14);
24713 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24714 }
24715}
24716}
24717}
24718}
24719}
e930b1f5 24720}
b34f6357
DB
24721}
24722
24723 abuf->written = written;
24724 return vpc;
24725#undef FLD
24726}
24727
24728/* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24729
24730static SEM_PC
24731SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24732{
24733#define FLD(f) abuf->fields.sfmt_cmmachu.f
24734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24735 int UNUSED written = 0;
24736 IADDR UNUSED pc = abuf->addr;
24737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24738
e930b1f5 24739if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24740if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24741frvbf_media_acc_not_aligned (current_cpu);
24742} else {
24743if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24744{
24745 UHI tmp_argihi;
24746 UHI tmp_argilo;
24747 UHI tmp_argjhi;
24748 UHI tmp_argjlo;
24749{
24750 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24751 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24752 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24753 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24754}
24755{
24756 DI tmp_tmp;
24757 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24758if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24759{
24760 {
24761 UDI opval = MAKEDI (255, 0xffffffff);
24762 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24763 written |= (1 << 13);
24764 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24765 }
24766frvbf_media_overflow (current_cpu, 8);
24767}
24768} else {
24769if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24770{
24771 {
24772 UDI opval = MAKEDI (0, 0);
24773 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24774 written |= (1 << 13);
24775 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24776 }
24777frvbf_media_overflow (current_cpu, 8);
24778}
24779} else {
24780 {
24781 UDI opval = tmp_tmp;
24782 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24783 written |= (1 << 13);
24784 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24785 }
24786}
24787}
24788}
24789{
24790 DI tmp_tmp;
24791 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24792if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24793{
24794 {
24795 UDI opval = MAKEDI (255, 0xffffffff);
24796 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24797 written |= (1 << 14);
24798 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24799 }
24800frvbf_media_overflow (current_cpu, 4);
24801}
24802} else {
24803if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24804{
24805 {
24806 UDI opval = MAKEDI (0, 0);
24807 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24808 written |= (1 << 14);
24809 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24810 }
24811frvbf_media_overflow (current_cpu, 4);
24812}
24813} else {
24814 {
24815 UDI opval = tmp_tmp;
24816 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24817 written |= (1 << 14);
24818 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24819 }
24820}
24821}
24822}
24823}
24824}
e930b1f5 24825}
b34f6357
DB
24826}
24827
24828 abuf->written = written;
24829 return vpc;
24830#undef FLD
24831}
24832
24833/* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24834
24835static SEM_PC
24836SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24837{
24838#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24840 int UNUSED written = 0;
24841 IADDR UNUSED pc = abuf->addr;
24842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24843
e930b1f5 24844if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24845if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24846frvbf_media_acc_not_aligned (current_cpu);
24847} else {
24848if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24849frvbf_media_register_not_aligned (current_cpu);
24850} else {
24851{
24852 HI tmp_argihi;
24853 HI tmp_argilo;
24854 HI tmp_argjhi;
24855 HI tmp_argjlo;
24856{
24857 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24858 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24859 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24860 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24861}
24862{
24863 DI tmp_tmp;
24864 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24865if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24866{
24867 {
24868 DI opval = MAKEDI (127, 0xffffffff);
24869 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24870 written |= (1 << 17);
24871 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24872 }
24873frvbf_media_overflow (current_cpu, 8);
24874}
24875} else {
24876if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24877{
24878 {
24879 DI opval = MAKEDI (0xffffff80, 0);
24880 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24881 written |= (1 << 17);
24882 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24883 }
24884frvbf_media_overflow (current_cpu, 8);
24885}
24886} else {
24887 {
24888 DI opval = tmp_tmp;
24889 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24890 written |= (1 << 17);
24891 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24892 }
24893}
24894}
24895}
24896{
24897 DI tmp_tmp;
24898 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24899if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24900{
24901 {
24902 DI opval = MAKEDI (127, 0xffffffff);
24903 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24904 written |= (1 << 18);
24905 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24906 }
24907frvbf_media_overflow (current_cpu, 4);
24908}
24909} else {
24910if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24911{
24912 {
24913 DI opval = MAKEDI (0xffffff80, 0);
24914 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24915 written |= (1 << 18);
24916 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24917 }
24918frvbf_media_overflow (current_cpu, 4);
24919}
24920} else {
24921 {
24922 DI opval = tmp_tmp;
24923 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24924 written |= (1 << 18);
24925 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24926 }
24927}
24928}
24929}
24930{
24931 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24932 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24933 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24934 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24935}
24936{
24937 DI tmp_tmp;
24938 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24939if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24940{
24941 {
24942 DI opval = MAKEDI (127, 0xffffffff);
24943 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24944 written |= (1 << 19);
24945 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24946 }
24947frvbf_media_overflow (current_cpu, 2);
24948}
24949} else {
24950if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24951{
24952 {
24953 DI opval = MAKEDI (0xffffff80, 0);
24954 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24955 written |= (1 << 19);
24956 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24957 }
24958frvbf_media_overflow (current_cpu, 2);
24959}
24960} else {
24961 {
24962 DI opval = tmp_tmp;
24963 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24964 written |= (1 << 19);
24965 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24966 }
24967}
24968}
24969}
24970{
24971 DI tmp_tmp;
24972 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24973if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24974{
24975 {
24976 DI opval = MAKEDI (127, 0xffffffff);
24977 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24978 written |= (1 << 20);
24979 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24980 }
24981frvbf_media_overflow (current_cpu, 1);
24982}
24983} else {
24984if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24985{
24986 {
24987 DI opval = MAKEDI (0xffffff80, 0);
24988 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24989 written |= (1 << 20);
24990 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24991 }
24992frvbf_media_overflow (current_cpu, 1);
24993}
24994} else {
24995 {
24996 DI opval = tmp_tmp;
24997 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24998 written |= (1 << 20);
24999 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25000 }
25001}
25002}
25003}
25004}
25005}
e930b1f5 25006}
b34f6357
DB
25007}
25008
25009 abuf->written = written;
25010 return vpc;
25011#undef FLD
25012}
25013
25014/* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
25015
25016static SEM_PC
25017SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25018{
25019#define FLD(f) abuf->fields.sfmt_cmqmachu.f
25020 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25021 int UNUSED written = 0;
25022 IADDR UNUSED pc = abuf->addr;
25023 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25024
e930b1f5 25025if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
25026if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25027frvbf_media_acc_not_aligned (current_cpu);
25028} else {
25029if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25030frvbf_media_register_not_aligned (current_cpu);
25031} else {
25032{
25033 UHI tmp_argihi;
25034 UHI tmp_argilo;
25035 UHI tmp_argjhi;
25036 UHI tmp_argjlo;
25037{
25038 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25039 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25040 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25041 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25042}
25043{
25044 DI tmp_tmp;
25045 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25046if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25047{
25048 {
25049 UDI opval = MAKEDI (255, 0xffffffff);
25050 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25051 written |= (1 << 17);
25052 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25053 }
25054frvbf_media_overflow (current_cpu, 8);
25055}
25056} else {
25057if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25058{
25059 {
25060 UDI opval = MAKEDI (0, 0);
25061 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25062 written |= (1 << 17);
25063 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25064 }
25065frvbf_media_overflow (current_cpu, 8);
25066}
25067} else {
25068 {
25069 UDI opval = tmp_tmp;
25070 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25071 written |= (1 << 17);
25072 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25073 }
25074}
25075}
25076}
25077{
25078 DI tmp_tmp;
25079 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25080if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25081{
25082 {
25083 UDI opval = MAKEDI (255, 0xffffffff);
25084 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25085 written |= (1 << 18);
25086 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25087 }
25088frvbf_media_overflow (current_cpu, 4);
25089}
25090} else {
25091if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25092{
25093 {
25094 UDI opval = MAKEDI (0, 0);
25095 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25096 written |= (1 << 18);
25097 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25098 }
25099frvbf_media_overflow (current_cpu, 4);
25100}
25101} else {
25102 {
25103 UDI opval = tmp_tmp;
25104 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25105 written |= (1 << 18);
25106 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25107 }
25108}
25109}
25110}
25111{
25112 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25113 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25114 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25115 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25116}
25117{
25118 DI tmp_tmp;
25119 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25120if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25121{
25122 {
25123 UDI opval = MAKEDI (255, 0xffffffff);
25124 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25125 written |= (1 << 19);
25126 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25127 }
25128frvbf_media_overflow (current_cpu, 2);
25129}
25130} else {
25131if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25132{
25133 {
25134 UDI opval = MAKEDI (0, 0);
25135 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25136 written |= (1 << 19);
25137 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25138 }
25139frvbf_media_overflow (current_cpu, 2);
25140}
25141} else {
25142 {
25143 UDI opval = tmp_tmp;
25144 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25145 written |= (1 << 19);
25146 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25147 }
25148}
25149}
25150}
25151{
25152 DI tmp_tmp;
25153 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25154if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25155{
25156 {
25157 UDI opval = MAKEDI (255, 0xffffffff);
25158 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25159 written |= (1 << 20);
25160 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25161 }
25162frvbf_media_overflow (current_cpu, 1);
25163}
25164} else {
25165if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25166{
25167 {
25168 UDI opval = MAKEDI (0, 0);
25169 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25170 written |= (1 << 20);
25171 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25172 }
25173frvbf_media_overflow (current_cpu, 1);
25174}
25175} else {
25176 {
25177 UDI opval = tmp_tmp;
25178 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25179 written |= (1 << 20);
25180 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25181 }
25182}
25183}
25184}
25185}
25186}
e930b1f5 25187}
b34f6357
DB
25188}
25189
25190 abuf->written = written;
25191 return vpc;
25192#undef FLD
25193}
25194
25195/* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25196
25197static SEM_PC
25198SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25199{
25200#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25202 int UNUSED written = 0;
25203 IADDR UNUSED pc = abuf->addr;
25204 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25205
e930b1f5 25206if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25207if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25208frvbf_media_acc_not_aligned (current_cpu);
25209} else {
25210if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25211frvbf_media_register_not_aligned (current_cpu);
25212} else {
25213if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25214{
25215 HI tmp_argihi;
25216 HI tmp_argilo;
25217 HI tmp_argjhi;
25218 HI tmp_argjlo;
25219{
25220 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25221 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25222 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25223 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25224}
25225{
25226 DI tmp_tmp;
25227 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25228if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25229{
25230 {
25231 DI opval = MAKEDI (127, 0xffffffff);
25232 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25233 written |= (1 << 19);
25234 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25235 }
25236frvbf_media_overflow (current_cpu, 8);
25237}
25238} else {
25239if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25240{
25241 {
25242 DI opval = MAKEDI (0xffffff80, 0);
25243 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25244 written |= (1 << 19);
25245 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25246 }
25247frvbf_media_overflow (current_cpu, 8);
25248}
25249} else {
25250 {
25251 DI opval = tmp_tmp;
25252 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25253 written |= (1 << 19);
25254 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25255 }
25256}
25257}
25258}
25259{
25260 DI tmp_tmp;
25261 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25262if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25263{
25264 {
25265 DI opval = MAKEDI (127, 0xffffffff);
25266 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25267 written |= (1 << 20);
25268 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25269 }
25270frvbf_media_overflow (current_cpu, 4);
25271}
25272} else {
25273if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25274{
25275 {
25276 DI opval = MAKEDI (0xffffff80, 0);
25277 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25278 written |= (1 << 20);
25279 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25280 }
25281frvbf_media_overflow (current_cpu, 4);
25282}
25283} else {
25284 {
25285 DI opval = tmp_tmp;
25286 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25287 written |= (1 << 20);
25288 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25289 }
25290}
25291}
25292}
25293{
25294 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25295 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25296 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25297 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25298}
25299{
25300 DI tmp_tmp;
25301 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25302if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25303{
25304 {
25305 DI opval = MAKEDI (127, 0xffffffff);
25306 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25307 written |= (1 << 21);
25308 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25309 }
25310frvbf_media_overflow (current_cpu, 2);
25311}
25312} else {
25313if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25314{
25315 {
25316 DI opval = MAKEDI (0xffffff80, 0);
25317 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25318 written |= (1 << 21);
25319 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25320 }
25321frvbf_media_overflow (current_cpu, 2);
25322}
25323} else {
25324 {
25325 DI opval = tmp_tmp;
25326 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25327 written |= (1 << 21);
25328 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25329 }
25330}
25331}
25332}
25333{
25334 DI tmp_tmp;
25335 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25336if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25337{
25338 {
25339 DI opval = MAKEDI (127, 0xffffffff);
25340 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25341 written |= (1 << 22);
25342 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25343 }
25344frvbf_media_overflow (current_cpu, 1);
25345}
25346} else {
25347if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25348{
25349 {
25350 DI opval = MAKEDI (0xffffff80, 0);
25351 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25352 written |= (1 << 22);
25353 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25354 }
25355frvbf_media_overflow (current_cpu, 1);
25356}
25357} else {
25358 {
25359 DI opval = tmp_tmp;
25360 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25361 written |= (1 << 22);
25362 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25363 }
25364}
25365}
25366}
25367}
25368}
25369}
e930b1f5 25370}
b34f6357
DB
25371}
25372
25373 abuf->written = written;
25374 return vpc;
25375#undef FLD
25376}
25377
25378/* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25379
25380static SEM_PC
25381SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25382{
25383#define FLD(f) abuf->fields.sfmt_cmqmachu.f
25384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25385 int UNUSED written = 0;
25386 IADDR UNUSED pc = abuf->addr;
25387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25388
e930b1f5 25389if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
25390if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25391frvbf_media_acc_not_aligned (current_cpu);
25392} else {
25393if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25394frvbf_media_register_not_aligned (current_cpu);
25395} else {
25396if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25397{
25398 UHI tmp_argihi;
25399 UHI tmp_argilo;
25400 UHI tmp_argjhi;
25401 UHI tmp_argjlo;
25402{
25403 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25404 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25405 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25406 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25407}
25408{
25409 DI tmp_tmp;
25410 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25411if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25412{
25413 {
25414 UDI opval = MAKEDI (255, 0xffffffff);
25415 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25416 written |= (1 << 19);
25417 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25418 }
25419frvbf_media_overflow (current_cpu, 8);
25420}
25421} else {
25422if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25423{
25424 {
25425 UDI opval = MAKEDI (0, 0);
25426 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25427 written |= (1 << 19);
25428 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25429 }
25430frvbf_media_overflow (current_cpu, 8);
25431}
25432} else {
25433 {
25434 UDI opval = tmp_tmp;
25435 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25436 written |= (1 << 19);
25437 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25438 }
25439}
25440}
25441}
25442{
25443 DI tmp_tmp;
25444 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25445if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25446{
25447 {
25448 UDI opval = MAKEDI (255, 0xffffffff);
25449 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25450 written |= (1 << 20);
25451 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25452 }
25453frvbf_media_overflow (current_cpu, 4);
25454}
25455} else {
25456if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25457{
25458 {
25459 UDI opval = MAKEDI (0, 0);
25460 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25461 written |= (1 << 20);
25462 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25463 }
25464frvbf_media_overflow (current_cpu, 4);
25465}
25466} else {
25467 {
25468 UDI opval = tmp_tmp;
25469 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25470 written |= (1 << 20);
25471 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25472 }
25473}
25474}
25475}
25476{
25477 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25478 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25479 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25480 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25481}
25482{
25483 DI tmp_tmp;
25484 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25485if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25486{
25487 {
25488 UDI opval = MAKEDI (255, 0xffffffff);
25489 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25490 written |= (1 << 21);
25491 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25492 }
25493frvbf_media_overflow (current_cpu, 2);
25494}
25495} else {
25496if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25497{
25498 {
25499 UDI opval = MAKEDI (0, 0);
25500 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25501 written |= (1 << 21);
25502 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25503 }
25504frvbf_media_overflow (current_cpu, 2);
25505}
25506} else {
25507 {
25508 UDI opval = tmp_tmp;
25509 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25510 written |= (1 << 21);
25511 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25512 }
25513}
25514}
25515}
25516{
25517 DI tmp_tmp;
25518 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25519if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25520{
25521 {
25522 UDI opval = MAKEDI (255, 0xffffffff);
25523 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25524 written |= (1 << 22);
25525 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25526 }
25527frvbf_media_overflow (current_cpu, 1);
25528}
25529} else {
25530if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25531{
25532 {
25533 UDI opval = MAKEDI (0, 0);
25534 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25535 written |= (1 << 22);
25536 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25537 }
25538frvbf_media_overflow (current_cpu, 1);
25539}
25540} else {
25541 {
25542 UDI opval = tmp_tmp;
25543 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25544 written |= (1 << 22);
25545 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25546 }
25547}
25548}
25549}
25550}
25551}
25552}
e930b1f5 25553}
b34f6357
DB
25554}
25555
25556 abuf->written = written;
25557 return vpc;
25558#undef FLD
25559}
25560
25561/* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25562
25563static SEM_PC
25564SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25565{
25566#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25568 int UNUSED written = 0;
25569 IADDR UNUSED pc = abuf->addr;
25570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25571
e930b1f5 25572if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25573if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25574frvbf_media_acc_not_aligned (current_cpu);
25575} else {
25576if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25577frvbf_media_register_not_aligned (current_cpu);
25578} else {
25579{
25580 HI tmp_argihi;
25581 HI tmp_argilo;
25582 HI tmp_argjhi;
25583 HI tmp_argjlo;
25584{
25585 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25586 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25587 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25588 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25589}
25590{
25591 DI tmp_tmp;
25592 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25593if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25594{
25595 {
25596 DI opval = MAKEDI (127, 0xffffffff);
25597 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25598 written |= (1 << 19);
25599 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25600 }
25601frvbf_media_overflow (current_cpu, 2);
25602}
25603} else {
25604if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25605{
25606 {
25607 DI opval = MAKEDI (0xffffff80, 0);
25608 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25609 written |= (1 << 19);
25610 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25611 }
25612frvbf_media_overflow (current_cpu, 2);
25613}
25614} else {
25615 {
25616 DI opval = tmp_tmp;
25617 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25618 written |= (1 << 19);
25619 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25620 }
25621}
25622}
25623}
25624{
25625 DI tmp_tmp;
25626 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25627if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25628{
25629 {
25630 DI opval = MAKEDI (127, 0xffffffff);
25631 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25632 written |= (1 << 20);
25633 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25634 }
25635frvbf_media_overflow (current_cpu, 1);
25636}
25637} else {
25638if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25639{
25640 {
25641 DI opval = MAKEDI (0xffffff80, 0);
25642 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25643 written |= (1 << 20);
25644 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25645 }
25646frvbf_media_overflow (current_cpu, 1);
25647}
25648} else {
25649 {
25650 DI opval = tmp_tmp;
25651 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25652 written |= (1 << 20);
25653 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25654 }
25655}
25656}
25657}
25658{
25659 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25660 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25661 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25662 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25663}
25664{
25665 DI tmp_tmp;
25666 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25667if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25668{
25669 {
25670 DI opval = MAKEDI (127, 0xffffffff);
25671 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25672 written |= (1 << 17);
25673 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25674 }
25675frvbf_media_overflow (current_cpu, 8);
25676}
25677} else {
25678if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25679{
25680 {
25681 DI opval = MAKEDI (0xffffff80, 0);
25682 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25683 written |= (1 << 17);
25684 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25685 }
25686frvbf_media_overflow (current_cpu, 8);
25687}
25688} else {
25689 {
25690 DI opval = tmp_tmp;
25691 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25692 written |= (1 << 17);
25693 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25694 }
25695}
25696}
25697}
25698{
25699 DI tmp_tmp;
25700 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25701if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25702{
25703 {
25704 DI opval = MAKEDI (127, 0xffffffff);
25705 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25706 written |= (1 << 18);
25707 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25708 }
25709frvbf_media_overflow (current_cpu, 4);
25710}
25711} else {
25712if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25713{
25714 {
25715 DI opval = MAKEDI (0xffffff80, 0);
25716 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25717 written |= (1 << 18);
25718 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25719 }
25720frvbf_media_overflow (current_cpu, 4);
25721}
25722} else {
25723 {
25724 DI opval = tmp_tmp;
25725 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25726 written |= (1 << 18);
25727 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25728 }
25729}
25730}
25731}
25732}
25733}
e930b1f5 25734}
b34f6357
DB
25735}
25736
25737 abuf->written = written;
25738 return vpc;
25739#undef FLD
25740}
25741
25742/* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25743
25744static SEM_PC
25745SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25746{
25747#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25749 int UNUSED written = 0;
25750 IADDR UNUSED pc = abuf->addr;
25751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25752
e930b1f5 25753if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25754if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25755frvbf_media_acc_not_aligned (current_cpu);
25756} else {
25757if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25758frvbf_media_register_not_aligned (current_cpu);
25759} else {
25760{
25761 HI tmp_argihi;
25762 HI tmp_argilo;
25763 HI tmp_argjhi;
25764 HI tmp_argjlo;
25765{
25766 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25767 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25768 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25769 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25770}
25771{
25772 DI tmp_tmp;
25773 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25774if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25775{
25776 {
25777 DI opval = MAKEDI (127, 0xffffffff);
25778 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25779 written |= (1 << 19);
25780 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25781 }
25782frvbf_media_overflow (current_cpu, 2);
25783}
25784} else {
25785if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25786{
25787 {
25788 DI opval = MAKEDI (0xffffff80, 0);
25789 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25790 written |= (1 << 19);
25791 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25792 }
25793frvbf_media_overflow (current_cpu, 2);
25794}
25795} else {
25796 {
25797 DI opval = tmp_tmp;
25798 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25799 written |= (1 << 19);
25800 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25801 }
25802}
25803}
25804}
25805{
25806 DI tmp_tmp;
25807 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25808if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25809{
25810 {
25811 DI opval = MAKEDI (127, 0xffffffff);
25812 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25813 written |= (1 << 20);
25814 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25815 }
25816frvbf_media_overflow (current_cpu, 1);
25817}
25818} else {
25819if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25820{
25821 {
25822 DI opval = MAKEDI (0xffffff80, 0);
25823 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25824 written |= (1 << 20);
25825 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25826 }
25827frvbf_media_overflow (current_cpu, 1);
25828}
25829} else {
25830 {
25831 DI opval = tmp_tmp;
25832 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25833 written |= (1 << 20);
25834 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25835 }
25836}
25837}
25838}
25839{
25840 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25841 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25842 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25843 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25844}
25845{
25846 DI tmp_tmp;
25847 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25848if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25849{
25850 {
25851 DI opval = MAKEDI (127, 0xffffffff);
25852 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25853 written |= (1 << 17);
25854 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25855 }
25856frvbf_media_overflow (current_cpu, 8);
25857}
25858} else {
25859if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25860{
25861 {
25862 DI opval = MAKEDI (0xffffff80, 0);
25863 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25864 written |= (1 << 17);
25865 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25866 }
25867frvbf_media_overflow (current_cpu, 8);
25868}
25869} else {
25870 {
25871 DI opval = tmp_tmp;
25872 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25873 written |= (1 << 17);
25874 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25875 }
25876}
25877}
25878}
25879{
25880 DI tmp_tmp;
25881 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25882if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25883{
25884 {
25885 DI opval = MAKEDI (127, 0xffffffff);
25886 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25887 written |= (1 << 18);
25888 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25889 }
25890frvbf_media_overflow (current_cpu, 4);
25891}
25892} else {
25893if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25894{
25895 {
25896 DI opval = MAKEDI (0xffffff80, 0);
25897 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25898 written |= (1 << 18);
25899 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25900 }
25901frvbf_media_overflow (current_cpu, 4);
25902}
25903} else {
25904 {
25905 DI opval = tmp_tmp;
25906 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25907 written |= (1 << 18);
25908 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25909 }
25910}
25911}
25912}
25913}
25914}
e930b1f5 25915}
b34f6357
DB
25916}
25917
25918 abuf->written = written;
25919 return vpc;
25920#undef FLD
25921}
25922
25923/* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25924
25925static SEM_PC
25926SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25927{
25928#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25930 int UNUSED written = 0;
25931 IADDR UNUSED pc = abuf->addr;
25932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25933
e930b1f5 25934if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25935if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25936frvbf_media_acc_not_aligned (current_cpu);
25937} else {
25938if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25939frvbf_media_register_not_aligned (current_cpu);
25940} else {
25941{
25942 HI tmp_argihi;
25943 HI tmp_argilo;
25944 HI tmp_argjhi;
25945 HI tmp_argjlo;
25946{
25947 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25948 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25949 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25950 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25951}
25952{
25953 DI tmp_tmp;
25954 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25955if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25956{
25957 {
25958 DI opval = MAKEDI (127, 0xffffffff);
25959 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25960 written |= (1 << 17);
25961 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25962 }
25963frvbf_media_overflow (current_cpu, 8);
25964}
25965} else {
25966if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25967{
25968 {
25969 DI opval = MAKEDI (0xffffff80, 0);
25970 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25971 written |= (1 << 17);
25972 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25973 }
25974frvbf_media_overflow (current_cpu, 8);
25975}
25976} else {
25977 {
25978 DI opval = tmp_tmp;
25979 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25980 written |= (1 << 17);
25981 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25982 }
25983}
25984}
25985}
25986{
25987 DI tmp_tmp;
25988 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25989if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25990{
25991 {
25992 DI opval = MAKEDI (127, 0xffffffff);
25993 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25994 written |= (1 << 18);
25995 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25996 }
25997frvbf_media_overflow (current_cpu, 4);
25998}
25999} else {
26000if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26001{
26002 {
26003 DI opval = MAKEDI (0xffffff80, 0);
26004 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26005 written |= (1 << 18);
26006 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26007 }
26008frvbf_media_overflow (current_cpu, 4);
26009}
26010} else {
26011 {
26012 DI opval = tmp_tmp;
26013 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26014 written |= (1 << 18);
26015 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26016 }
26017}
26018}
26019}
26020{
26021 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26022 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26023 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26024 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26025}
26026{
26027 DI tmp_tmp;
26028 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
26029if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26030{
26031 {
26032 DI opval = MAKEDI (127, 0xffffffff);
26033 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26034 written |= (1 << 19);
26035 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26036 }
26037frvbf_media_overflow (current_cpu, 2);
26038}
26039} else {
26040if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26041{
26042 {
26043 DI opval = MAKEDI (0xffffff80, 0);
26044 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26045 written |= (1 << 19);
26046 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26047 }
26048frvbf_media_overflow (current_cpu, 2);
26049}
26050} else {
26051 {
26052 DI opval = tmp_tmp;
26053 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26054 written |= (1 << 19);
26055 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26056 }
26057}
26058}
26059}
26060{
26061 DI tmp_tmp;
26062 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
26063if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26064{
26065 {
26066 DI opval = MAKEDI (127, 0xffffffff);
26067 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26068 written |= (1 << 20);
26069 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26070 }
26071frvbf_media_overflow (current_cpu, 1);
26072}
26073} else {
26074if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26075{
26076 {
26077 DI opval = MAKEDI (0xffffff80, 0);
26078 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26079 written |= (1 << 20);
26080 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26081 }
26082frvbf_media_overflow (current_cpu, 1);
26083}
26084} else {
26085 {
26086 DI opval = tmp_tmp;
26087 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26088 written |= (1 << 20);
26089 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26090 }
26091}
26092}
26093}
26094}
26095}
e930b1f5 26096}
b34f6357
DB
26097}
26098
26099 abuf->written = written;
26100 return vpc;
26101#undef FLD
26102}
26103
26104/* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26105
26106static SEM_PC
26107SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26108{
26109#define FLD(f) abuf->fields.sfmt_cmmachs.f
26110 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26111 int UNUSED written = 0;
26112 IADDR UNUSED pc = abuf->addr;
26113 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26114
e930b1f5 26115if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26116{
26117 HI tmp_argihi;
26118 HI tmp_argilo;
26119 HI tmp_argjhi;
26120 HI tmp_argjlo;
26121{
26122 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26123 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26124 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26125 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26126}
26127{
26128 DI tmp_tmp1;
26129 DI tmp_tmp2;
26130 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26131 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26132 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26133if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26134{
26135 {
26136 DI opval = MAKEDI (127, 0xffffffff);
26137 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26138 written |= (1 << 9);
b34f6357
DB
26139 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26140 }
26141frvbf_media_overflow (current_cpu, 8);
26142}
26143} else {
26144if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26145{
26146 {
26147 DI opval = MAKEDI (0xffffff80, 0);
26148 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26149 written |= (1 << 9);
b34f6357
DB
26150 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26151 }
26152frvbf_media_overflow (current_cpu, 8);
26153}
26154} else {
26155 {
26156 DI opval = tmp_tmp1;
26157 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26158 written |= (1 << 9);
b34f6357
DB
26159 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26160 }
26161}
26162}
26163}
e930b1f5 26164}
b34f6357
DB
26165}
26166
26167 abuf->written = written;
26168 return vpc;
26169#undef FLD
26170}
26171
26172/* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26173
26174static SEM_PC
26175SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26176{
26177#define FLD(f) abuf->fields.sfmt_cmmachs.f
26178 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26179 int UNUSED written = 0;
26180 IADDR UNUSED pc = abuf->addr;
26181 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26182
e930b1f5 26183if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26184{
26185 UHI tmp_argihi;
26186 UHI tmp_argilo;
26187 UHI tmp_argjhi;
26188 UHI tmp_argjlo;
26189{
26190 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26191 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26192 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26193 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26194}
26195{
26196 DI tmp_tmp1;
26197 DI tmp_tmp2;
26198 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26199 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26200 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26201if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26202{
26203 {
26204 DI opval = MAKEDI (255, 0xffffffff);
26205 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26206 written |= (1 << 9);
b34f6357
DB
26207 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26208 }
26209frvbf_media_overflow (current_cpu, 8);
26210}
26211} else {
26212if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26213{
26214 {
26215 DI opval = MAKEDI (0, 0);
26216 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26217 written |= (1 << 9);
b34f6357
DB
26218 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26219 }
26220frvbf_media_overflow (current_cpu, 8);
26221}
26222} else {
26223 {
26224 DI opval = tmp_tmp1;
26225 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26226 written |= (1 << 9);
b34f6357
DB
26227 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26228 }
26229}
26230}
26231}
e930b1f5 26232}
b34f6357
DB
26233}
26234
26235 abuf->written = written;
26236 return vpc;
26237#undef FLD
26238}
26239
26240/* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26241
26242static SEM_PC
26243SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26244{
26245#define FLD(f) abuf->fields.sfmt_cmmachs.f
26246 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26247 int UNUSED written = 0;
26248 IADDR UNUSED pc = abuf->addr;
26249 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26250
e930b1f5 26251if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26252{
26253 HI tmp_argihi;
26254 HI tmp_argilo;
26255 HI tmp_argjhi;
26256 HI tmp_argjlo;
26257{
26258 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26259 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26260 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26261 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26262}
26263{
26264 DI tmp_tmp1;
26265 DI tmp_tmp2;
26266 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26267 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26268 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26269if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26270{
26271 {
26272 DI opval = MAKEDI (127, 0xffffffff);
26273 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26274 written |= (1 << 9);
b34f6357
DB
26275 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26276 }
26277frvbf_media_overflow (current_cpu, 8);
26278}
26279} else {
26280if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26281{
26282 {
26283 DI opval = MAKEDI (0xffffff80, 0);
26284 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26285 written |= (1 << 9);
b34f6357
DB
26286 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26287 }
26288frvbf_media_overflow (current_cpu, 8);
26289}
26290} else {
26291 {
26292 DI opval = tmp_tmp1;
26293 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26294 written |= (1 << 9);
b34f6357
DB
26295 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26296 }
26297}
26298}
26299}
e930b1f5 26300}
b34f6357
DB
26301}
26302
26303 abuf->written = written;
26304 return vpc;
26305#undef FLD
26306}
26307
26308/* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26309
26310static SEM_PC
26311SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26312{
26313#define FLD(f) abuf->fields.sfmt_cmmachs.f
26314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26315 int UNUSED written = 0;
26316 IADDR UNUSED pc = abuf->addr;
26317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26318
e930b1f5 26319if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26320{
26321 UHI tmp_argihi;
26322 UHI tmp_argilo;
26323 UHI tmp_argjhi;
26324 UHI tmp_argjlo;
26325{
26326 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26327 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26328 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26329 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26330}
26331{
26332 DI tmp_tmp1;
26333 DI tmp_tmp2;
26334 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26335 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26336 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26337if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26338{
26339 {
26340 DI opval = MAKEDI (255, 0xffffffff);
26341 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26342 written |= (1 << 9);
b34f6357
DB
26343 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26344 }
26345frvbf_media_overflow (current_cpu, 8);
26346}
26347} else {
26348if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26349{
26350 {
26351 DI opval = MAKEDI (0, 0);
26352 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26353 written |= (1 << 9);
b34f6357
DB
26354 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26355 }
26356frvbf_media_overflow (current_cpu, 8);
26357}
26358} else {
26359 {
26360 DI opval = tmp_tmp1;
26361 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26362 written |= (1 << 9);
b34f6357
DB
26363 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26364 }
26365}
26366}
26367}
e930b1f5 26368}
b34f6357
DB
26369}
26370
26371 abuf->written = written;
26372 return vpc;
26373#undef FLD
26374}
26375
26376/* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26377
26378static SEM_PC
26379SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26380{
26381#define FLD(f) abuf->fields.sfmt_cmmachs.f
26382 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26383 int UNUSED written = 0;
26384 IADDR UNUSED pc = abuf->addr;
26385 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26386
26387if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26388if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26389{
26390 HI tmp_argihi;
26391 HI tmp_argilo;
26392 HI tmp_argjhi;
26393 HI tmp_argjlo;
26394{
26395 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26396 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26397 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26398 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26399}
26400{
26401 DI tmp_tmp1;
26402 DI tmp_tmp2;
26403 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26404 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26405 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26406if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26407{
26408 {
26409 DI opval = MAKEDI (127, 0xffffffff);
26410 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26411 written |= (1 << 11);
b34f6357
DB
26412 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26413 }
26414frvbf_media_overflow (current_cpu, 8);
26415}
26416} else {
26417if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26418{
26419 {
26420 DI opval = MAKEDI (0xffffff80, 0);
26421 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26422 written |= (1 << 11);
b34f6357
DB
26423 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26424 }
26425frvbf_media_overflow (current_cpu, 8);
26426}
26427} else {
26428 {
26429 DI opval = tmp_tmp1;
26430 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26431 written |= (1 << 11);
b34f6357
DB
26432 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26433 }
26434}
26435}
26436}
26437}
e930b1f5 26438}
b34f6357
DB
26439}
26440
26441 abuf->written = written;
26442 return vpc;
26443#undef FLD
26444}
26445
26446/* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26447
26448static SEM_PC
26449SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26450{
26451#define FLD(f) abuf->fields.sfmt_cmmachs.f
26452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26453 int UNUSED written = 0;
26454 IADDR UNUSED pc = abuf->addr;
26455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26456
26457if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26458if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26459{
26460 UHI tmp_argihi;
26461 UHI tmp_argilo;
26462 UHI tmp_argjhi;
26463 UHI tmp_argjlo;
26464{
26465 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26466 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26467 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26468 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26469}
26470{
26471 DI tmp_tmp1;
26472 DI tmp_tmp2;
26473 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26474 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26475 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26476if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26477{
26478 {
26479 DI opval = MAKEDI (255, 0xffffffff);
26480 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26481 written |= (1 << 11);
b34f6357
DB
26482 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26483 }
26484frvbf_media_overflow (current_cpu, 8);
26485}
26486} else {
26487if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26488{
26489 {
26490 DI opval = MAKEDI (0, 0);
26491 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26492 written |= (1 << 11);
b34f6357
DB
26493 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26494 }
26495frvbf_media_overflow (current_cpu, 8);
26496}
26497} else {
26498 {
26499 DI opval = tmp_tmp1;
26500 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26501 written |= (1 << 11);
b34f6357
DB
26502 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26503 }
26504}
26505}
26506}
26507}
e930b1f5 26508}
b34f6357
DB
26509}
26510
26511 abuf->written = written;
26512 return vpc;
26513#undef FLD
26514}
26515
26516/* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26517
26518static SEM_PC
26519SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26520{
26521#define FLD(f) abuf->fields.sfmt_cmmachs.f
26522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26523 int UNUSED written = 0;
26524 IADDR UNUSED pc = abuf->addr;
26525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26526
26527if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26528if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26529{
26530 HI tmp_argihi;
26531 HI tmp_argilo;
26532 HI tmp_argjhi;
26533 HI tmp_argjlo;
26534{
26535 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26536 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26537 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26538 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26539}
26540{
26541 DI tmp_tmp1;
26542 DI tmp_tmp2;
26543 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26544 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26545 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26546if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26547{
26548 {
26549 DI opval = MAKEDI (127, 0xffffffff);
26550 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26551 written |= (1 << 11);
b34f6357
DB
26552 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26553 }
26554frvbf_media_overflow (current_cpu, 8);
26555}
26556} else {
26557if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26558{
26559 {
26560 DI opval = MAKEDI (0xffffff80, 0);
26561 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26562 written |= (1 << 11);
b34f6357
DB
26563 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26564 }
26565frvbf_media_overflow (current_cpu, 8);
26566}
26567} else {
26568 {
26569 DI opval = tmp_tmp1;
26570 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26571 written |= (1 << 11);
b34f6357
DB
26572 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26573 }
26574}
26575}
26576}
26577}
e930b1f5 26578}
b34f6357
DB
26579}
26580
26581 abuf->written = written;
26582 return vpc;
26583#undef FLD
26584}
26585
26586/* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26587
26588static SEM_PC
26589SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26590{
26591#define FLD(f) abuf->fields.sfmt_cmmachs.f
26592 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26593 int UNUSED written = 0;
26594 IADDR UNUSED pc = abuf->addr;
26595 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26596
26597if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26598if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26599{
26600 UHI tmp_argihi;
26601 UHI tmp_argilo;
26602 UHI tmp_argjhi;
26603 UHI tmp_argjlo;
26604{
26605 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26606 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26607 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26608 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26609}
26610{
26611 DI tmp_tmp1;
26612 DI tmp_tmp2;
26613 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26614 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26615 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26616if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26617{
26618 {
26619 DI opval = MAKEDI (255, 0xffffffff);
26620 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26621 written |= (1 << 11);
b34f6357
DB
26622 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26623 }
26624frvbf_media_overflow (current_cpu, 8);
26625}
26626} else {
26627if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26628{
26629 {
26630 DI opval = MAKEDI (0, 0);
26631 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26632 written |= (1 << 11);
b34f6357
DB
26633 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26634 }
26635frvbf_media_overflow (current_cpu, 8);
26636}
26637} else {
26638 {
26639 DI opval = tmp_tmp1;
26640 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26641 written |= (1 << 11);
b34f6357
DB
26642 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26643 }
26644}
26645}
26646}
26647}
e930b1f5 26648}
b34f6357
DB
26649}
26650
26651 abuf->written = written;
26652 return vpc;
26653#undef FLD
26654}
26655
26656/* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26657
26658static SEM_PC
26659SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26660{
26661#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26663 int UNUSED written = 0;
26664 IADDR UNUSED pc = abuf->addr;
26665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26666
e930b1f5 26667if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26668if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26669frvbf_media_acc_not_aligned (current_cpu);
26670} else {
26671if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26672frvbf_media_register_not_aligned (current_cpu);
26673} else {
26674{
26675 HI tmp_argihi;
26676 HI tmp_argilo;
26677 HI tmp_argjhi;
26678 HI tmp_argjlo;
26679{
26680 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26681 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26682 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26683 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26684}
26685{
26686 DI tmp_tmp1;
26687 DI tmp_tmp2;
26688 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26689 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26690 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26691if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26692{
26693 {
26694 DI opval = MAKEDI (127, 0xffffffff);
26695 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26696 written |= (1 << 13);
26697 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26698 }
26699frvbf_media_overflow (current_cpu, 8);
26700}
26701} else {
26702if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26703{
26704 {
26705 DI opval = MAKEDI (0xffffff80, 0);
26706 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26707 written |= (1 << 13);
26708 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26709 }
26710frvbf_media_overflow (current_cpu, 8);
26711}
26712} else {
26713 {
26714 DI opval = tmp_tmp1;
26715 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26716 written |= (1 << 13);
26717 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26718 }
26719}
26720}
26721}
26722{
26723 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26724 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26725 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26726 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26727}
26728{
26729 DI tmp_tmp1;
26730 DI tmp_tmp2;
26731 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26732 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26733 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26734if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26735{
26736 {
26737 DI opval = MAKEDI (127, 0xffffffff);
26738 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26739 written |= (1 << 14);
26740 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26741 }
26742frvbf_media_overflow (current_cpu, 4);
26743}
26744} else {
26745if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26746{
26747 {
26748 DI opval = MAKEDI (0xffffff80, 0);
26749 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26750 written |= (1 << 14);
26751 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26752 }
26753frvbf_media_overflow (current_cpu, 4);
26754}
26755} else {
26756 {
26757 DI opval = tmp_tmp1;
26758 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26759 written |= (1 << 14);
26760 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26761 }
26762}
26763}
26764}
26765}
26766}
e930b1f5 26767}
b34f6357
DB
26768}
26769
26770 abuf->written = written;
26771 return vpc;
26772#undef FLD
26773}
26774
26775/* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26776
26777static SEM_PC
26778SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26779{
26780#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26782 int UNUSED written = 0;
26783 IADDR UNUSED pc = abuf->addr;
26784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26785
e930b1f5 26786if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26787if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26788frvbf_media_acc_not_aligned (current_cpu);
26789} else {
26790if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26791frvbf_media_register_not_aligned (current_cpu);
26792} else {
26793{
26794 UHI tmp_argihi;
26795 UHI tmp_argilo;
26796 UHI tmp_argjhi;
26797 UHI tmp_argjlo;
26798{
26799 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26800 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26801 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26802 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26803}
26804{
26805 DI tmp_tmp1;
26806 DI tmp_tmp2;
26807 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26808 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26809 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26810if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26811{
26812 {
26813 DI opval = MAKEDI (255, 0xffffffff);
26814 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26815 written |= (1 << 13);
26816 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26817 }
26818frvbf_media_overflow (current_cpu, 8);
26819}
26820} else {
26821if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26822{
26823 {
26824 DI opval = MAKEDI (0, 0);
26825 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26826 written |= (1 << 13);
26827 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26828 }
26829frvbf_media_overflow (current_cpu, 8);
26830}
26831} else {
26832 {
26833 DI opval = tmp_tmp1;
26834 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26835 written |= (1 << 13);
26836 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26837 }
26838}
26839}
26840}
26841{
26842 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26843 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26844 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26845 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26846}
26847{
26848 DI tmp_tmp1;
26849 DI tmp_tmp2;
26850 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26851 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26852 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26853if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26854{
26855 {
26856 DI opval = MAKEDI (255, 0xffffffff);
26857 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26858 written |= (1 << 14);
26859 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26860 }
26861frvbf_media_overflow (current_cpu, 4);
26862}
26863} else {
26864if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26865{
26866 {
26867 DI opval = MAKEDI (0, 0);
26868 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26869 written |= (1 << 14);
26870 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26871 }
26872frvbf_media_overflow (current_cpu, 4);
26873}
26874} else {
26875 {
26876 DI opval = tmp_tmp1;
26877 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26878 written |= (1 << 14);
26879 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26880 }
26881}
26882}
26883}
26884}
26885}
e930b1f5 26886}
b34f6357
DB
26887}
26888
26889 abuf->written = written;
26890 return vpc;
26891#undef FLD
26892}
26893
26894/* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26895
26896static SEM_PC
26897SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26898{
26899#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26901 int UNUSED written = 0;
26902 IADDR UNUSED pc = abuf->addr;
26903 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26904
e930b1f5 26905if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26906if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26907frvbf_media_acc_not_aligned (current_cpu);
26908} else {
26909if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26910frvbf_media_register_not_aligned (current_cpu);
26911} else {
26912{
26913 HI tmp_argihi;
26914 HI tmp_argilo;
26915 HI tmp_argjhi;
26916 HI tmp_argjlo;
26917{
26918 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26919 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26920 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26921 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26922}
26923{
26924 DI tmp_tmp1;
26925 DI tmp_tmp2;
26926 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26927 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26928 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26929if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26930{
26931 {
26932 DI opval = MAKEDI (127, 0xffffffff);
26933 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26934 written |= (1 << 13);
26935 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26936 }
26937frvbf_media_overflow (current_cpu, 8);
26938}
26939} else {
26940if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26941{
26942 {
26943 DI opval = MAKEDI (0xffffff80, 0);
26944 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26945 written |= (1 << 13);
26946 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26947 }
26948frvbf_media_overflow (current_cpu, 8);
26949}
26950} else {
26951 {
26952 DI opval = tmp_tmp1;
26953 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26954 written |= (1 << 13);
26955 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26956 }
26957}
26958}
26959}
26960{
26961 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26962 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26963 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26964 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26965}
26966{
26967 DI tmp_tmp1;
26968 DI tmp_tmp2;
26969 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26970 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26971 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26972if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26973{
26974 {
26975 DI opval = MAKEDI (127, 0xffffffff);
26976 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26977 written |= (1 << 14);
26978 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26979 }
26980frvbf_media_overflow (current_cpu, 4);
26981}
26982} else {
26983if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26984{
26985 {
26986 DI opval = MAKEDI (0xffffff80, 0);
26987 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26988 written |= (1 << 14);
26989 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26990 }
26991frvbf_media_overflow (current_cpu, 4);
26992}
26993} else {
26994 {
26995 DI opval = tmp_tmp1;
26996 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26997 written |= (1 << 14);
26998 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26999 }
27000}
27001}
27002}
27003}
27004}
e930b1f5 27005}
b34f6357
DB
27006}
27007
27008 abuf->written = written;
27009 return vpc;
27010#undef FLD
27011}
27012
27013/* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
27014
27015static SEM_PC
27016SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27017{
27018#define FLD(f) abuf->fields.sfmt_cmqmachs.f
27019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27020 int UNUSED written = 0;
27021 IADDR UNUSED pc = abuf->addr;
27022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27023
e930b1f5 27024if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
27025if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
27026frvbf_media_acc_not_aligned (current_cpu);
27027} else {
27028if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
27029frvbf_media_register_not_aligned (current_cpu);
27030} else {
27031{
27032 UHI tmp_argihi;
27033 UHI tmp_argilo;
27034 UHI tmp_argjhi;
27035 UHI tmp_argjlo;
27036{
27037 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27038 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27039 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27040 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27041}
27042{
27043 DI tmp_tmp1;
27044 DI tmp_tmp2;
27045 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27046 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27047 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27048if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27049{
27050 {
27051 DI opval = MAKEDI (255, 0xffffffff);
27052 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27053 written |= (1 << 13);
27054 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27055 }
27056frvbf_media_overflow (current_cpu, 8);
27057}
27058} else {
27059if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27060{
27061 {
27062 DI opval = MAKEDI (0, 0);
27063 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27064 written |= (1 << 13);
27065 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27066 }
27067frvbf_media_overflow (current_cpu, 8);
27068}
27069} else {
27070 {
27071 DI opval = tmp_tmp1;
27072 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27073 written |= (1 << 13);
27074 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27075 }
27076}
27077}
27078}
27079{
27080 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27081 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27082 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27083 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27084}
27085{
27086 DI tmp_tmp1;
27087 DI tmp_tmp2;
27088 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27089 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27090 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27091if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27092{
27093 {
27094 DI opval = MAKEDI (255, 0xffffffff);
27095 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27096 written |= (1 << 14);
27097 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27098 }
27099frvbf_media_overflow (current_cpu, 4);
27100}
27101} else {
27102if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27103{
27104 {
27105 DI opval = MAKEDI (0, 0);
27106 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27107 written |= (1 << 14);
27108 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27109 }
27110frvbf_media_overflow (current_cpu, 4);
27111}
27112} else {
27113 {
27114 DI opval = tmp_tmp1;
27115 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27116 written |= (1 << 14);
27117 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27118 }
27119}
27120}
27121}
27122}
27123}
e930b1f5 27124}
b34f6357
DB
27125}
27126
27127 abuf->written = written;
27128 return vpc;
27129#undef FLD
27130}
27131
27132/* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27133
27134static SEM_PC
27135SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27136{
27137#define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27139 int UNUSED written = 0;
27140 IADDR UNUSED pc = abuf->addr;
27141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27142
27143{
27144 UHI tmp_tmp;
27145if (ANDSI (FLD (f_u6), 1)) {
27146 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27147} else {
27148 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27149}
27150 {
27151 UHI opval = tmp_tmp;
27152 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27153 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27154 }
27155 {
27156 UHI opval = tmp_tmp;
27157 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27158 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27159 }
27160}
27161
27162 return vpc;
27163#undef FLD
27164}
27165
27166/* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27167
27168static SEM_PC
27169SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27170{
27171#define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27173 int UNUSED written = 0;
27174 IADDR UNUSED pc = abuf->addr;
27175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27176
27177if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27178{
27179 UHI tmp_tmp;
27180if (ANDSI (FLD (f_u6), 1)) {
27181 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27182} else {
27183 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27184}
27185 {
27186 UHI opval = tmp_tmp;
27187 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27188 written |= (1 << 7);
27189 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27190 }
27191 {
27192 UHI opval = tmp_tmp;
27193 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27194 written |= (1 << 8);
27195 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27196 }
27197}
27198}
27199
27200 abuf->written = written;
27201 return vpc;
27202#undef FLD
27203}
27204
27205/* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27206
27207static SEM_PC
27208SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27209{
27210#define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27212 int UNUSED written = 0;
27213 IADDR UNUSED pc = abuf->addr;
27214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27215
27216if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27217frvbf_media_register_not_aligned (current_cpu);
27218} else {
27219{
27220 UHI tmp_tmp;
27221 {
27222 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27223 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27224 written |= (1 << 6);
27225 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27226 }
27227if (ANDSI (FLD (f_u6), 1)) {
27228 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27229} else {
27230 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27231}
27232 {
27233 UHI opval = tmp_tmp;
27234 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27235 written |= (1 << 7);
27236 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27237 }
27238 {
27239 UHI opval = tmp_tmp;
27240 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27241 written |= (1 << 9);
27242 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27243 }
27244 {
27245 UHI opval = tmp_tmp;
27246 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27247 written |= (1 << 8);
27248 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27249 }
27250 {
27251 UHI opval = tmp_tmp;
27252 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27253 written |= (1 << 10);
27254 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27255 }
27256}
27257}
27258
27259 abuf->written = written;
27260 return vpc;
27261#undef FLD
27262}
27263
27264/* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27265
27266static SEM_PC
27267SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27268{
27269#define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27270 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27271 int UNUSED written = 0;
27272 IADDR UNUSED pc = abuf->addr;
27273 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27274
27275if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27276frvbf_media_register_not_aligned (current_cpu);
27277} else {
27278if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27279{
27280 UHI tmp_tmp;
27281 {
27282 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27283 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27284 written |= (1 << 8);
27285 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27286 }
27287if (ANDSI (FLD (f_u6), 1)) {
27288 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27289} else {
27290 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27291}
27292 {
27293 UHI opval = tmp_tmp;
27294 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27295 written |= (1 << 9);
27296 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27297 }
27298 {
27299 UHI opval = tmp_tmp;
27300 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27301 written |= (1 << 11);
27302 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27303 }
27304 {
27305 UHI opval = tmp_tmp;
27306 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27307 written |= (1 << 10);
27308 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27309 }
27310 {
27311 UHI opval = tmp_tmp;
27312 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27313 written |= (1 << 12);
27314 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27315 }
27316}
27317}
27318}
27319
27320 abuf->written = written;
27321 return vpc;
27322#undef FLD
27323}
27324
27325/* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27326
27327static SEM_PC
27328SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27329{
27330#define FLD(f) abuf->fields.sfmt_cmaddhss.f
27331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27332 int UNUSED written = 0;
27333 IADDR UNUSED pc = abuf->addr;
27334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27335
27336{
27337 {
27338 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27339 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27340 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27341 }
27342 {
27343 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27344 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27345 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27346 }
27347}
27348
27349 return vpc;
27350#undef FLD
27351}
27352
27353/* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27354
27355static SEM_PC
27356SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27357{
27358#define FLD(f) abuf->fields.sfmt_mdpackh.f
27359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27360 int UNUSED written = 0;
27361 IADDR UNUSED pc = abuf->addr;
27362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27363
27364if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27365frvbf_media_register_not_aligned (current_cpu);
27366} else {
27367{
27368 {
27369 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27370 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27371 written |= (1 << 10);
27372 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27373 }
27374 {
27375 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27376 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27377 written |= (1 << 11);
27378 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27379 }
27380 {
27381 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27382 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27383 written |= (1 << 12);
27384 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27385 }
27386{
27387 {
27388 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27389 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27390 written |= (1 << 13);
27391 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27392 }
27393 {
27394 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27395 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27396 written |= (1 << 15);
27397 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27398 }
27399}
27400{
27401 {
27402 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27403 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27404 written |= (1 << 14);
27405 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27406 }
27407 {
27408 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27409 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27410 written |= (1 << 16);
27411 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27412 }
27413}
27414}
27415}
27416
27417 abuf->written = written;
27418 return vpc;
27419#undef FLD
27420}
27421
27422/* munpackh: munpackh$pack $FRinti,$FRintkeven */
27423
27424static SEM_PC
27425SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27426{
27427#define FLD(f) abuf->fields.sfmt_munpackh.f
27428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27429 int UNUSED written = 0;
27430 IADDR UNUSED pc = abuf->addr;
27431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27432
27433if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27434frvbf_media_register_not_aligned (current_cpu);
27435} else {
27436{
27437 {
27438 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27439 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27440 written |= (1 << 6);
27441 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27442 }
27443 {
27444 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27445 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27446 written |= (1 << 7);
27447 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27448 }
27449{
27450 {
27451 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27452 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27453 written |= (1 << 8);
27454 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27455 }
27456 {
27457 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27458 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27459 written |= (1 << 10);
27460 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27461 }
27462 {
27463 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27464 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27465 written |= (1 << 9);
27466 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27467 }
27468 {
27469 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27470 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27471 written |= (1 << 11);
27472 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27473 }
27474}
27475}
27476}
27477
27478 abuf->written = written;
27479 return vpc;
27480#undef FLD
27481}
27482
27483/* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27484
27485static SEM_PC
27486SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27487{
27488#define FLD(f) abuf->fields.sfmt_mdunpackh.f
27489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27490 int UNUSED written = 0;
27491 IADDR UNUSED pc = abuf->addr;
27492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27493
27494if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27495frvbf_media_register_not_aligned (current_cpu);
27496} else {
27497{
27498 {
27499 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27500 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27501 written |= (1 << 8);
27502 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27503 }
27504 {
27505 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27506 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27507 written |= (1 << 9);
27508 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27509 }
27510{
27511 {
27512 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27513 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27514 written |= (1 << 10);
27515 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27516 }
27517 {
27518 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27519 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27520 written |= (1 << 14);
27521 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27522 }
27523 {
27524 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27525 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27526 written |= (1 << 12);
27527 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27528 }
27529 {
27530 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27531 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27532 written |= (1 << 16);
27533 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27534 }
27535}
27536{
27537 {
27538 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27539 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27540 written |= (1 << 11);
27541 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27542 }
27543 {
27544 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27545 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27546 written |= (1 << 15);
27547 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27548 }
27549 {
27550 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27551 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27552 written |= (1 << 13);
27553 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27554 }
27555 {
27556 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27557 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27558 written |= (1 << 17);
27559 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27560 }
27561}
27562}
27563}
27564
27565 abuf->written = written;
27566 return vpc;
27567#undef FLD
27568}
27569
27570/* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27571
27572static SEM_PC
27573SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27574{
27575#define FLD(f) abuf->fields.sfmt_cmbtoh.f
27576 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27577 int UNUSED written = 0;
27578 IADDR UNUSED pc = abuf->addr;
27579 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27580
27581{
27582 {
27583 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27584 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27585 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27586 }
27587 {
27588 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27589 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27590 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27591 }
27592if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27593frvbf_media_register_not_aligned (current_cpu);
27594} else {
27595{
27596 {
27597 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27598 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27599 written |= (1 << 10);
27600 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27601 }
27602 {
27603 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27604 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27605 written |= (1 << 12);
27606 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27607 }
27608 {
27609 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27610 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27611 written |= (1 << 11);
27612 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27613 }
27614 {
27615 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27616 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27617 written |= (1 << 13);
27618 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27619 }
27620}
27621}
27622}
27623
27624 abuf->written = written;
27625 return vpc;
27626#undef FLD
27627}
27628
27629/* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27630
27631static SEM_PC
27632SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27633{
27634#define FLD(f) abuf->fields.sfmt_cmbtoh.f
27635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27636 int UNUSED written = 0;
27637 IADDR UNUSED pc = abuf->addr;
27638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27639
27640{
27641 {
27642 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27643 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27644 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27645 }
27646 {
27647 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27648 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27649 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27650 }
27651if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27652frvbf_media_register_not_aligned (current_cpu);
27653} else {
27654if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27655{
27656 {
27657 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27658 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27659 written |= (1 << 12);
27660 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27661 }
27662 {
27663 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27664 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27665 written |= (1 << 14);
27666 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27667 }
27668 {
27669 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27670 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27671 written |= (1 << 13);
27672 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27673 }
27674 {
27675 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27676 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27677 written |= (1 << 15);
27678 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27679 }
27680}
27681}
27682}
27683}
27684
27685 abuf->written = written;
27686 return vpc;
27687#undef FLD
27688}
27689
27690/* mhtob: mhtob$pack $FRintjeven,$FRintk */
27691
27692static SEM_PC
27693SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27694{
27695#define FLD(f) abuf->fields.sfmt_cmhtob.f
27696 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27697 int UNUSED written = 0;
27698 IADDR UNUSED pc = abuf->addr;
27699 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27700
27701{
27702 {
27703 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27704 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27705 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27706 }
27707 {
27708 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27709 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27710 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27711 }
27712if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27713frvbf_media_register_not_aligned (current_cpu);
27714} else {
27715{
27716 {
27717 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27718 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27719 written |= (1 << 13);
27720 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27721 }
27722 {
27723 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27724 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27725 written |= (1 << 12);
27726 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27727 }
27728 {
27729 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27730 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27731 written |= (1 << 11);
27732 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27733 }
27734 {
27735 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27736 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27737 written |= (1 << 10);
27738 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27739 }
27740}
27741}
27742}
27743
27744 abuf->written = written;
27745 return vpc;
27746#undef FLD
27747}
27748
27749/* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27750
27751static SEM_PC
27752SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27753{
27754#define FLD(f) abuf->fields.sfmt_cmhtob.f
27755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27756 int UNUSED written = 0;
27757 IADDR UNUSED pc = abuf->addr;
27758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27759
27760{
27761 {
27762 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27763 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27764 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27765 }
27766 {
27767 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27768 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27769 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27770 }
27771if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27772frvbf_media_register_not_aligned (current_cpu);
27773} else {
27774if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27775{
27776 {
27777 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27778 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27779 written |= (1 << 15);
27780 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27781 }
27782 {
27783 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27784 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27785 written |= (1 << 14);
27786 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27787 }
27788 {
27789 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27790 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27791 written |= (1 << 13);
27792 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27793 }
27794 {
27795 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27796 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27797 written |= (1 << 12);
27798 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27799 }
27800}
27801}
27802}
27803}
27804
27805 abuf->written = written;
27806 return vpc;
27807#undef FLD
27808}
27809
27810/* mbtohe: mbtohe$pack $FRintj,$FRintk */
27811
27812static SEM_PC
27813SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27814{
27815#define FLD(f) abuf->fields.sfmt_cmbtohe.f
27816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27817 int UNUSED written = 0;
27818 IADDR UNUSED pc = abuf->addr;
27819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27820
27821{
27822 {
27823 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27824 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27825 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27826 }
27827 {
27828 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27829 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27830 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27831 }
27832if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27833frvbf_media_register_not_aligned (current_cpu);
27834} else {
27835{
27836 {
27837 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27838 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27839 written |= (1 << 10);
27840 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27841 }
27842 {
27843 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27844 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27845 written |= (1 << 14);
27846 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27847 }
27848 {
27849 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27850 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27851 written |= (1 << 11);
27852 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27853 }
27854 {
27855 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27856 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27857 written |= (1 << 15);
27858 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27859 }
27860 {
27861 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27862 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27863 written |= (1 << 12);
27864 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27865 }
27866 {
27867 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27868 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27869 written |= (1 << 16);
27870 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27871 }
27872 {
27873 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27874 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27875 written |= (1 << 13);
27876 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27877 }
27878 {
27879 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27880 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27881 written |= (1 << 17);
27882 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27883 }
27884}
27885}
27886}
27887
27888 abuf->written = written;
27889 return vpc;
27890#undef FLD
27891}
27892
27893/* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27894
27895static SEM_PC
27896SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27897{
27898#define FLD(f) abuf->fields.sfmt_cmbtohe.f
27899 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27900 int UNUSED written = 0;
27901 IADDR UNUSED pc = abuf->addr;
27902 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27903
27904{
27905 {
27906 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27907 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27908 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27909 }
27910 {
27911 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27912 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27913 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27914 }
27915if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27916frvbf_media_register_not_aligned (current_cpu);
27917} else {
27918if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27919{
27920 {
27921 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27922 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27923 written |= (1 << 12);
27924 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27925 }
27926 {
27927 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27928 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27929 written |= (1 << 16);
27930 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27931 }
27932 {
27933 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27934 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27935 written |= (1 << 13);
27936 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27937 }
27938 {
27939 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27940 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27941 written |= (1 << 17);
27942 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27943 }
27944 {
27945 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27946 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27947 written |= (1 << 14);
27948 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27949 }
27950 {
27951 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27952 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27953 written |= (1 << 18);
27954 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27955 }
27956 {
27957 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27958 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27959 written |= (1 << 15);
27960 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27961 }
27962 {
27963 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27964 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27965 written |= (1 << 19);
27966 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27967 }
27968}
27969}
27970}
27971}
27972
27973 abuf->written = written;
27974 return vpc;
27975#undef FLD
27976}
27977
d03ea14f 27978/* mnop: mnop$pack */
b34f6357
DB
27979
27980static SEM_PC
d03ea14f 27981SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
b34f6357 27982{
d03ea14f
DB
27983#define FLD(f) abuf->fields.fmt_empty.f
27984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27985 int UNUSED written = 0;
27986 IADDR UNUSED pc = abuf->addr;
27987 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27988
27989((void) 0); /*nop*/
27990
27991 return vpc;
27992#undef FLD
27993}
27994
27995/* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27996
27997static SEM_PC
27998SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27999{
28000#define FLD(f) abuf->fields.sfmt_mdasaccs.f
28001 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28002 int UNUSED written = 0;
28003 IADDR UNUSED pc = abuf->addr;
28004 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28005
28006frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
28007
28008 return vpc;
28009#undef FLD
28010}
28011
28012/* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
28013
28014static SEM_PC
28015SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28016{
28017#define FLD(f) abuf->fields.sfmt_mdasaccs.f
b34f6357
DB
28018 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28019 int UNUSED written = 0;
28020 IADDR UNUSED pc = abuf->addr;
28021 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28022
d03ea14f 28023frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
b34f6357
DB
28024
28025 return vpc;
28026#undef FLD
28027}
28028
28029/* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
28030
28031static SEM_PC
28032SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28033{
28034#define FLD(f) abuf->fields.sfmt_mcuti.f
28035 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28036 int UNUSED written = 0;
28037 IADDR UNUSED pc = abuf->addr;
28038 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28039
28040 {
28041 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
28042 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28043 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28044 }
28045
28046 return vpc;
28047#undef FLD
28048}
28049
28050/* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
28051
28052static SEM_PC
28053SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28054{
28055#define FLD(f) abuf->fields.sfmt_mrdaccg.f
28056 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28057 int UNUSED written = 0;
28058 IADDR UNUSED pc = abuf->addr;
28059 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28060
28061 {
28062 SI opval = GET_H_ACCG (FLD (f_ACCGi));
28063 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28064 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28065 }
28066
28067 return vpc;
28068#undef FLD
28069}
28070
28071/* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
28072
28073static SEM_PC
28074SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28075{
28076#define FLD(f) abuf->fields.sfmt_cmmachs.f
28077 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28078 int UNUSED written = 0;
28079 IADDR UNUSED pc = abuf->addr;
28080 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28081
28082 {
28083 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
28084 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
28085 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28086 }
28087
28088 return vpc;
28089#undef FLD
28090}
28091
28092/* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28093
28094static SEM_PC
28095SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28096{
28097#define FLD(f) abuf->fields.sfmt_mwtaccg.f
28098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28099 int UNUSED written = 0;
28100 IADDR UNUSED pc = abuf->addr;
28101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28102
1c453cd6
DB
28103{
28104frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
b34f6357
DB
28105 {
28106 USI opval = GET_H_FR_INT (FLD (f_FRi));
28107 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28108 TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28109 }
1c453cd6 28110}
b34f6357
DB
28111
28112 return vpc;
28113#undef FLD
28114}
28115
28116/* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28117
28118static SEM_PC
28119SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28120{
28121#define FLD(f) abuf->fields.fmt_empty.f
28122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28123 int UNUSED written = 0;
28124 IADDR UNUSED pc = abuf->addr;
28125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28126
28127frvbf_media_cop (current_cpu, 1);
28128
28129 return vpc;
28130#undef FLD
28131}
28132
28133/* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28134
28135static SEM_PC
28136SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28137{
28138#define FLD(f) abuf->fields.fmt_empty.f
28139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28140 int UNUSED written = 0;
28141 IADDR UNUSED pc = abuf->addr;
28142 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28143
28144frvbf_media_cop (current_cpu, 2);
28145
28146 return vpc;
28147#undef FLD
28148}
28149
28150/* fnop: fnop$pack */
28151
28152static SEM_PC
28153SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28154{
28155#define FLD(f) abuf->fields.fmt_empty.f
28156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28157 int UNUSED written = 0;
28158 IADDR UNUSED pc = abuf->addr;
28159 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28160
28161((void) 0); /*nop*/
28162
28163 return vpc;
28164#undef FLD
28165}
28166
28167/* Table of all semantic fns. */
28168
28169static const struct sem_fn_desc sem_fns[] = {
28170 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28171 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28172 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28173 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28174 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28175 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28176 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28177 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28178 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28179 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28180 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28181 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28182 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28183 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28184 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28185 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28186 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28187 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
e930b1f5
DB
28188 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28189 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28190 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
b34f6357
DB
28191 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28192 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28193 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
e930b1f5
DB
28194 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28195 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
b34f6357
DB
28196 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28197 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28198 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28199 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28200 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28201 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28202 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28203 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28204 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28205 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28206 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28207 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28208 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28209 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28210 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28211 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28212 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28213 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28214 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28215 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28216 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28217 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28218 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28219 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28220 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28221 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28222 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28223 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28224 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28225 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28226 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28227 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28228 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28229 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28230 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28231 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28232 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
e930b1f5
DB
28233 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28234 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
b34f6357
DB
28235 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28236 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28237 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28238 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28239 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28240 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28241 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28242 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28243 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28244 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28245 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28246 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28247 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28248 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28249 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28250 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28251 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28252 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28253 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28254 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28255 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28256 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28257 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28258 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28259 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28260 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28261 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28262 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28263 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28264 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28265 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28266 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28267 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28268 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28269 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28270 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28271 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28272 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28273 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28274 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28275 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28276 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28277 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28278 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28279 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28280 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28281 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28282 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28283 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28284 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28285 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28286 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28287 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28288 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28289 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28290 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28291 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28292 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28293 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28294 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28295 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28296 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28297 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28298 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28299 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28300 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28301 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28302 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28303 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28304 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28305 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28306 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28307 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28308 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28309 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28310 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28311 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28312 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28313 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28314 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28315 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28316 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28317 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28318 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28319 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28320 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28321 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28322 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28323 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28324 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28325 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28326 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28327 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28328 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28329 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28330 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28331 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28332 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28333 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28334 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28335 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28336 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28337 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28338 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28339 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28340 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28341 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28342 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28343 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28344 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
b34f6357
DB
28345 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28346 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28347 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28348 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28349 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28350 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28351 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28352 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
b34f6357
DB
28353 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28354 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28355 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
b34f6357
DB
28356 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28357 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28358 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
b34f6357
DB
28359 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28360 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28361 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28362 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28363 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28364 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28365 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28366 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28367 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28368 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28369 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28370 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28371 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28372 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28373 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28374 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28375 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28376 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28377 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28378 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28379 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28380 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28381 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28382 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28383 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28384 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28385 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28386 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28387 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28388 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28389 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28390 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28391 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28392 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28393 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28394 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28395 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28396 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28397 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28398 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28399 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28400 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28401 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28402 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28403 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28404 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28405 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28406 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28407 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28408 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28409 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28410 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28411 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28412 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28413 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28414 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28415 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28416 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28417 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28418 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28419 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28420 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28421 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28422 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28423 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28424 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28425 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28426 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28427 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28428 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28429 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28430 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28431 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28432 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28433 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28434 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28435 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28436 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28437 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28438 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28439 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28440 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28441 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28442 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28443 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28444 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28445 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28446 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28447 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28448 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28449 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28450 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28451 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28452 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28453 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28454 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28455 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28456 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28457 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28458 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28459 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28460 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28461 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28462 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28463 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28464 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28465 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28466 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28467 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28468 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28469 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28470 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28471 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28472 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28473 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28474 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28475 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28476 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28477 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28478 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28479 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28480 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28481 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28482 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28483 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28484 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28485 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28486 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28487 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28488 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28489 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28490 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28491 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28492 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28493 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28494 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28495 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28496 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28497 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28498 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28499 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28500 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28501 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28502 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28503 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28504 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28505 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28506 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28507 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28508 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28509 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28510 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28511 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28512 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28513 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28514 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28515 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28516 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28517 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28518 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28519 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28520 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28521 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28522 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28523 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28524 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28525 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28526 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28527 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28528 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28529 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28530 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28531 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28532 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28533 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28534 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28535 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28536 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28537 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28538 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28539 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28540 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28541 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28542 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28543 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28544 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28545 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28546 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28547 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28548 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28549 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28550 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28551 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28552 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28553 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28554 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28555 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28556 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28557 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28558 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28559 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28560 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28561 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28562 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28563 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28564 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28565 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28566 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28567 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28568 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28569 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28570 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28571 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28572 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28573 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28574 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28575 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28576 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28577 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28578 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28579 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28580 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28581 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28582 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28583 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28584 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28585 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28586 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28587 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28588 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28589 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28590 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28591 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28592 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28593 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28594 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28595 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28596 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28597 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28598 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28599 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28600 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28601 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28602 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28603 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28604 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28605 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28606 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28607 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28608 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28609 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28610 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28611 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28612 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28613 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28614 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28615 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28616 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28617 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28618 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28619 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28620 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28621 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28622 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28623 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28624 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28625 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28626 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28627 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28628 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28629 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28630 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28631 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28632 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28633 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28634 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28635 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28636 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28637 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28638 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28639 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28640 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28641 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28642 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28643 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28644 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28645 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28646 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28647 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28648 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28649 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28650 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28651 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28652 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28653 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28654 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28655 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28656 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28657 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28658 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28659 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28660 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28661 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28662 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28663 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28664 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28665 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28666 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28667 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28668 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28669 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28670 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28671 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28672 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28673 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28674 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28675 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28676 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28677 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28678 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28679 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28680 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28681 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28682 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28683 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28684 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28685 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28686 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28687 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28688 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28689 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28690 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28691 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28692 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28693 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28694 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28695 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28696 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28697 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
676a64f4
RS
28698 { FRVBF_INSN_LRAI, SEM_FN_NAME (frvbf,lrai) },
28699 { FRVBF_INSN_LRAD, SEM_FN_NAME (frvbf,lrad) },
28700 { FRVBF_INSN_TLBPR, SEM_FN_NAME (frvbf,tlbpr) },
b34f6357
DB
28701 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28702 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28703 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28704 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28705 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28706 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28707 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28708 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28709 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28710 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28711 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28712 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28713 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28714 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28715 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28716 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28717 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28718 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28719 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28720 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28721 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28722 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28723 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28724 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28725 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28726 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28727 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28728 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28729 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28730 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28731 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28732 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28733 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28734 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28735 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28736 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28737 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28738 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28739 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28740 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28741 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28742 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28743 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28744 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28745 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28746 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28747 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28748 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28749 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28750 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28751 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28752 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28753 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28754 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28755 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28756 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28757 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28758 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28759 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28760 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28761 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28762 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28763 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28764 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28765 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28766 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28767 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28768 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28769 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28770 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28771 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28772 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28773 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28774 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28775 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28776 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28777 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28778 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28779 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28780 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28781 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28782 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28783 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28784 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28785 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28786 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28787 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28788 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28789 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28790 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28791 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28792 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28793 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28794 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28795 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28796 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28797 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28798 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28799 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28800 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28801 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28802 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28803 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28804 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28805 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28806 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28807 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28808 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28809 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28810 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28811 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28812 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28813 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28814 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28815 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28816 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28817 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28818 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28819 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28820 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28821 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28822 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28823 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28824 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28825 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28826 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28827 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28828 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28829 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28830 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28831 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28832 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28833 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28834 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28835 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28836 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28837 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28838 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28839 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28840 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28841 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28842 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28843 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28844 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28845 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28846 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28847 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
676a64f4
RS
28848 { FRVBF_INSN_MQLCLRHS, SEM_FN_NAME (frvbf,mqlclrhs) },
28849 { FRVBF_INSN_MQLMTHS, SEM_FN_NAME (frvbf,mqlmths) },
28850 { FRVBF_INSN_MQSLLHI, SEM_FN_NAME (frvbf,mqsllhi) },
28851 { FRVBF_INSN_MQSRAHI, SEM_FN_NAME (frvbf,mqsrahi) },
b34f6357
DB
28852 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28853 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28854 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28855 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28856 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28857 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28858 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28859 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28860 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28861 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28862 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28863 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28864 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28865 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28866 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28867 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28868 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28869 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28870 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28871 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28872 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28873 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28874 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28875 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28876 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28877 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28878 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28879 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28880 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28881 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28882 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28883 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28884 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28885 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28886 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28887 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28888 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28889 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28890 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28891 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28892 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28893 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28894 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28895 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28896 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28897 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28898 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28899 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28900 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28901 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28902 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28903 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28904 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28905 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28906 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28907 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28908 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
d03ea14f
DB
28909 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28910 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28911 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
b34f6357
DB
28912 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28913 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28914 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28915 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28916 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28917 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28918 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28919 { 0, 0 }
28920};
28921
28922/* Add the semantic fns to IDESC_TABLE. */
28923
28924void
28925SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28926{
28927 IDESC *idesc_table = CPU_IDESC (current_cpu);
28928 const struct sem_fn_desc *sf;
28929 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28930
28931 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28932 {
28933 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28934 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28935 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28936#if FAST_P
28937 if (valid_p)
28938 idesc_table[sf->index].sem_fast = sf->fn;
28939 else
28940 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28941#else
28942 if (valid_p)
28943 idesc_table[sf->index].sem_full = sf->fn;
28944 else
28945 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28946#endif
28947 }
28948}
28949