Regenerate cgen-derived files.
[deliverable/binutils-gdb.git] / sim / frv / sem.c
CommitLineData
b34f6357
DB
1/* Simulator instruction semantics for frvbf.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
0f51e9bf 5Copyright 1996-2010 Free Software Foundation, Inc.
b34f6357
DB
6
7This file is part of the GNU simulators.
8
bce3bbcb
HPN
9 This file is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
12 any later version.
b34f6357 13
bce3bbcb
HPN
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
b34f6357 18
bce3bbcb
HPN
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
b34f6357
DB
22
23*/
24
25#define WANT_CPU frvbf
26#define WANT_CPU_FRVBF
27
28#include "sim-main.h"
29#include "cgen-mem.h"
30#include "cgen-ops.h"
31
32#undef GET_ATTR
b34f6357 33#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
b34f6357
DB
34
35/* This is used so that we can compile two copies of the semantic code,
36 one with full feature support and one without that runs fast(er).
37 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
38#if FAST_P
39#define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
40#undef TRACE_RESULT
41#define TRACE_RESULT(cpu, abuf, name, type, val)
42#else
43#define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
44#endif
45
46/* x-invalid: --invalid-- */
47
48static SEM_PC
49SEM_FN_NAME (frvbf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
50{
2310652a 51#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
52 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
53 int UNUSED written = 0;
54 IADDR UNUSED pc = abuf->addr;
55 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
56
57 {
58 /* Update the recorded pc in the cpu state struct.
59 Only necessary for WITH_SCACHE case, but to avoid the
60 conditional compilation .... */
61 SET_H_PC (pc);
62 /* Virtual insns have zero size. Overwrite vpc with address of next insn
63 using the default-insn-bitsize spec. When executing insns in parallel
64 we may want to queue the fault and continue execution. */
65 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
66 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
67 }
68
69 return vpc;
70#undef FLD
71}
72
73/* x-after: --after-- */
74
75static SEM_PC
76SEM_FN_NAME (frvbf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
77{
2310652a 78#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
79 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
80 int UNUSED written = 0;
81 IADDR UNUSED pc = abuf->addr;
82 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
83
84 {
85#if WITH_SCACHE_PBB_FRVBF
86 frvbf_pbb_after (current_cpu, sem_arg);
87#endif
88 }
89
90 return vpc;
91#undef FLD
92}
93
94/* x-before: --before-- */
95
96static SEM_PC
97SEM_FN_NAME (frvbf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
98{
2310652a 99#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
101 int UNUSED written = 0;
102 IADDR UNUSED pc = abuf->addr;
103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
104
105 {
106#if WITH_SCACHE_PBB_FRVBF
107 frvbf_pbb_before (current_cpu, sem_arg);
108#endif
109 }
110
111 return vpc;
112#undef FLD
113}
114
115/* x-cti-chain: --cti-chain-- */
116
117static SEM_PC
118SEM_FN_NAME (frvbf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
119{
2310652a 120#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
122 int UNUSED written = 0;
123 IADDR UNUSED pc = abuf->addr;
124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
125
126 {
127#if WITH_SCACHE_PBB_FRVBF
128#ifdef DEFINE_SWITCH
129 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
130 pbb_br_type, pbb_br_npc);
131 BREAK (sem);
132#else
133 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
134 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
135 CPU_PBB_BR_TYPE (current_cpu),
136 CPU_PBB_BR_NPC (current_cpu));
137#endif
138#endif
139 }
140
141 return vpc;
142#undef FLD
143}
144
145/* x-chain: --chain-- */
146
147static SEM_PC
148SEM_FN_NAME (frvbf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
149{
2310652a 150#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
151 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
152 int UNUSED written = 0;
153 IADDR UNUSED pc = abuf->addr;
154 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
155
156 {
157#if WITH_SCACHE_PBB_FRVBF
158 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
159#ifdef DEFINE_SWITCH
160 BREAK (sem);
161#endif
162#endif
163 }
164
165 return vpc;
166#undef FLD
167}
168
169/* x-begin: --begin-- */
170
171static SEM_PC
172SEM_FN_NAME (frvbf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
173{
2310652a 174#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
175 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
176 int UNUSED written = 0;
177 IADDR UNUSED pc = abuf->addr;
178 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
179
180 {
181#if WITH_SCACHE_PBB_FRVBF
182#if defined DEFINE_SWITCH || defined FAST_P
183 /* In the switch case FAST_P is a constant, allowing several optimizations
184 in any called inline functions. */
185 vpc = frvbf_pbb_begin (current_cpu, FAST_P);
186#else
187#if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
188 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
189#else
190 vpc = frvbf_pbb_begin (current_cpu, 0);
191#endif
192#endif
193#endif
194 }
195
196 return vpc;
197#undef FLD
198}
199
200/* add: add$pack $GRi,$GRj,$GRk */
201
202static SEM_PC
203SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
204{
205#define FLD(f) abuf->fields.sfmt_addcc.f
206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
207 int UNUSED written = 0;
208 IADDR UNUSED pc = abuf->addr;
209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
210
211 {
212 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
213 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
214 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
215 }
216
217 return vpc;
218#undef FLD
219}
220
221/* sub: sub$pack $GRi,$GRj,$GRk */
222
223static SEM_PC
224SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
225{
226#define FLD(f) abuf->fields.sfmt_addcc.f
227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
228 int UNUSED written = 0;
229 IADDR UNUSED pc = abuf->addr;
230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
231
232 {
233 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
234 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
235 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
236 }
237
238 return vpc;
239#undef FLD
240}
241
242/* and: and$pack $GRi,$GRj,$GRk */
243
244static SEM_PC
245SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
246{
247#define FLD(f) abuf->fields.sfmt_addcc.f
248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
249 int UNUSED written = 0;
250 IADDR UNUSED pc = abuf->addr;
251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
252
253 {
254 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
255 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
256 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
257 }
258
259 return vpc;
260#undef FLD
261}
262
263/* or: or$pack $GRi,$GRj,$GRk */
264
265static SEM_PC
266SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
267{
268#define FLD(f) abuf->fields.sfmt_addcc.f
269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
270 int UNUSED written = 0;
271 IADDR UNUSED pc = abuf->addr;
272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
273
274 {
275 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
276 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
277 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
278 }
279
280 return vpc;
281#undef FLD
282}
283
284/* xor: xor$pack $GRi,$GRj,$GRk */
285
286static SEM_PC
287SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
288{
289#define FLD(f) abuf->fields.sfmt_addcc.f
290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
291 int UNUSED written = 0;
292 IADDR UNUSED pc = abuf->addr;
293 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
294
295 {
296 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
297 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
298 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
299 }
300
301 return vpc;
302#undef FLD
303}
304
305/* not: not$pack $GRj,$GRk */
306
307static SEM_PC
308SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
309{
e930b1f5 310#define FLD(f) abuf->fields.sfmt_scutss.f
b34f6357
DB
311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
312 int UNUSED written = 0;
313 IADDR UNUSED pc = abuf->addr;
314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
315
316 {
317 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
318 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
319 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
320 }
321
322 return vpc;
323#undef FLD
324}
325
326/* sdiv: sdiv$pack $GRi,$GRj,$GRk */
327
328static SEM_PC
329SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
330{
331#define FLD(f) abuf->fields.sfmt_addcc.f
332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
333 int UNUSED written = 0;
334 IADDR UNUSED pc = abuf->addr;
335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
336
337{
338frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
339; /*clobber*/
340}
341
342 return vpc;
343#undef FLD
344}
345
346/* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
347
348static SEM_PC
349SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
350{
351#define FLD(f) abuf->fields.sfmt_addcc.f
352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
353 int UNUSED written = 0;
354 IADDR UNUSED pc = abuf->addr;
355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
356
357{
358frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
359; /*clobber*/
360}
361
362 return vpc;
363#undef FLD
364}
365
366/* udiv: udiv$pack $GRi,$GRj,$GRk */
367
368static SEM_PC
369SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
370{
371#define FLD(f) abuf->fields.sfmt_addcc.f
372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
373 int UNUSED written = 0;
374 IADDR UNUSED pc = abuf->addr;
375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
376
377{
378frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
379; /*clobber*/
380}
381
382 return vpc;
383#undef FLD
384}
385
386/* nudiv: nudiv$pack $GRi,$GRj,$GRk */
387
388static SEM_PC
389SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
390{
391#define FLD(f) abuf->fields.sfmt_addcc.f
392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
393 int UNUSED written = 0;
394 IADDR UNUSED pc = abuf->addr;
395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
396
397{
398frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
399; /*clobber*/
400}
401
402 return vpc;
403#undef FLD
404}
405
406/* smul: smul$pack $GRi,$GRj,$GRdoublek */
407
408static SEM_PC
409SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
410{
411#define FLD(f) abuf->fields.sfmt_smulcc.f
412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
413 int UNUSED written = 0;
414 IADDR UNUSED pc = abuf->addr;
415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
416
417 {
418 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
419 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
420 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
421 }
422
423 return vpc;
424#undef FLD
425}
426
427/* umul: umul$pack $GRi,$GRj,$GRdoublek */
428
429static SEM_PC
430SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
431{
432#define FLD(f) abuf->fields.sfmt_smulcc.f
433 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
434 int UNUSED written = 0;
435 IADDR UNUSED pc = abuf->addr;
436 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
437
438 {
439 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
440 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
441 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
442 }
443
444 return vpc;
445#undef FLD
446}
447
e930b1f5
DB
448/* smu: smu$pack $GRi,$GRj */
449
450static SEM_PC
451SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
452{
453#define FLD(f) abuf->fields.sfmt_smass.f
454 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
455 int UNUSED written = 0;
456 IADDR UNUSED pc = abuf->addr;
457 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
458
459 {
460 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
461 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
462 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
463 }
464
465 return vpc;
466#undef FLD
467}
468
469/* smass: smass$pack $GRi,$GRj */
470
471static SEM_PC
472SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
473{
474#define FLD(f) abuf->fields.sfmt_smass.f
475 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
476 int UNUSED written = 0;
477 IADDR UNUSED pc = abuf->addr;
478 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
479
480 {
bce3bbcb 481 DI opval = (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (SUBDI (MAKEDI (2147483647, 0xffffffff), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (SUBDI (MAKEDI (0x80000000, 0), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (ADDDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
e930b1f5
DB
482 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
483 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
484 }
485
486 return vpc;
487#undef FLD
488}
489
490/* smsss: smsss$pack $GRi,$GRj */
491
492static SEM_PC
493SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
494{
495#define FLD(f) abuf->fields.sfmt_smass.f
496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
497 int UNUSED written = 0;
498 IADDR UNUSED pc = abuf->addr;
499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
500
501 {
bce3bbcb 502 DI opval = (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (ADDDI (MAKEDI (2147483647, 0xffffffff), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (ADDDI (MAKEDI (0x80000000, 0), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (SUBDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
e930b1f5
DB
503 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
504 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
505 }
506
507 return vpc;
508#undef FLD
509}
510
b34f6357
DB
511/* sll: sll$pack $GRi,$GRj,$GRk */
512
513static SEM_PC
514SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
515{
516#define FLD(f) abuf->fields.sfmt_addcc.f
517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
518 int UNUSED written = 0;
519 IADDR UNUSED pc = abuf->addr;
520 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
521
522 {
523 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
524 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
525 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
526 }
527
528 return vpc;
529#undef FLD
530}
531
532/* srl: srl$pack $GRi,$GRj,$GRk */
533
534static SEM_PC
535SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
536{
537#define FLD(f) abuf->fields.sfmt_addcc.f
538 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
539 int UNUSED written = 0;
540 IADDR UNUSED pc = abuf->addr;
541 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
542
543 {
544 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
545 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
546 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
547 }
548
549 return vpc;
550#undef FLD
551}
552
553/* sra: sra$pack $GRi,$GRj,$GRk */
554
555static SEM_PC
556SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
557{
558#define FLD(f) abuf->fields.sfmt_addcc.f
559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
560 int UNUSED written = 0;
561 IADDR UNUSED pc = abuf->addr;
562 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
563
564 {
565 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
566 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
567 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
568 }
569
570 return vpc;
571#undef FLD
572}
573
e930b1f5
DB
574/* slass: slass$pack $GRi,$GRj,$GRk */
575
576static SEM_PC
577SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
578{
579#define FLD(f) abuf->fields.sfmt_addcc.f
580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
581 int UNUSED written = 0;
582 IADDR UNUSED pc = abuf->addr;
583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
584
585 {
586 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
587 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
588 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
589 }
590
591 return vpc;
592#undef FLD
593}
594
595/* scutss: scutss$pack $GRj,$GRk */
596
597static SEM_PC
598SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
599{
600#define FLD(f) abuf->fields.sfmt_scutss.f
601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
602 int UNUSED written = 0;
603 IADDR UNUSED pc = abuf->addr;
604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
605
606 {
607 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
608 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
609 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
610 }
611
612 return vpc;
613#undef FLD
614}
615
b34f6357
DB
616/* scan: scan$pack $GRi,$GRj,$GRk */
617
618static SEM_PC
619SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
620{
621#define FLD(f) abuf->fields.sfmt_addcc.f
622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
623 int UNUSED written = 0;
624 IADDR UNUSED pc = abuf->addr;
625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
626
627{
628 SI tmp_tmp1;
629 SI tmp_tmp2;
630 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
631 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
632 {
633 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
634 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
635 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
636 }
637}
638
639 return vpc;
640#undef FLD
641}
642
643/* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
644
645static SEM_PC
646SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
647{
648#define FLD(f) abuf->fields.sfmt_cswap.f
649 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
650 int UNUSED written = 0;
651 IADDR UNUSED pc = abuf->addr;
652 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
653
654if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
655 {
656 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
657 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
658 written |= (1 << 4);
659 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
660 }
661}
662
663 abuf->written = written;
664 return vpc;
665#undef FLD
666}
667
668/* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
669
670static SEM_PC
671SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
672{
673#define FLD(f) abuf->fields.sfmt_cswap.f
674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
675 int UNUSED written = 0;
676 IADDR UNUSED pc = abuf->addr;
677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
678
679if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
680 {
681 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
682 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
683 written |= (1 << 4);
684 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
685 }
686}
687
688 abuf->written = written;
689 return vpc;
690#undef FLD
691}
692
693/* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
694
695static SEM_PC
696SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
697{
698#define FLD(f) abuf->fields.sfmt_cswap.f
699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
700 int UNUSED written = 0;
701 IADDR UNUSED pc = abuf->addr;
702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
703
704if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
705 {
706 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
707 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
708 written |= (1 << 4);
709 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
710 }
711}
712
713 abuf->written = written;
714 return vpc;
715#undef FLD
716}
717
718/* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
719
720static SEM_PC
721SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
722{
723#define FLD(f) abuf->fields.sfmt_cswap.f
724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
725 int UNUSED written = 0;
726 IADDR UNUSED pc = abuf->addr;
727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
728
729if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
730 {
731 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
732 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
733 written |= (1 << 4);
734 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
735 }
736}
737
738 abuf->written = written;
739 return vpc;
740#undef FLD
741}
742
743/* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
744
745static SEM_PC
746SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
747{
748#define FLD(f) abuf->fields.sfmt_cswap.f
749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
750 int UNUSED written = 0;
751 IADDR UNUSED pc = abuf->addr;
752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
753
754if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
755 {
756 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
757 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
758 written |= (1 << 4);
759 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
760 }
761}
762
763 abuf->written = written;
764 return vpc;
765#undef FLD
766}
767
768/* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
769
770static SEM_PC
771SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
772{
773#define FLD(f) abuf->fields.sfmt_cswap.f
774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
775 int UNUSED written = 0;
776 IADDR UNUSED pc = abuf->addr;
777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
778
779if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
780 {
781 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
782 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
783 written |= (1 << 3);
784 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
785 }
786}
787
788 abuf->written = written;
789 return vpc;
790#undef FLD
791}
792
793/* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
794
795static SEM_PC
796SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
797{
798#define FLD(f) abuf->fields.sfmt_clddu.f
799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
800 int UNUSED written = 0;
801 IADDR UNUSED pc = abuf->addr;
802 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
803
804if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
805 {
806 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
807 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
808 written |= (1 << 4);
809 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
810 }
811}
812
813 abuf->written = written;
814 return vpc;
815#undef FLD
816}
817
818/* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
819
820static SEM_PC
821SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
822{
823#define FLD(f) abuf->fields.sfmt_cswap.f
824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
825 int UNUSED written = 0;
826 IADDR UNUSED pc = abuf->addr;
827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
828
829if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
830{
831frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
832; /*clobber*/
833}
834}
835
836 abuf->written = written;
837 return vpc;
838#undef FLD
839}
840
841/* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
842
843static SEM_PC
844SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
845{
846#define FLD(f) abuf->fields.sfmt_cswap.f
847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
848 int UNUSED written = 0;
849 IADDR UNUSED pc = abuf->addr;
850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
851
852if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
853{
854frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
855; /*clobber*/
856}
857}
858
859 abuf->written = written;
860 return vpc;
861#undef FLD
862}
863
864/* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
865
866static SEM_PC
867SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
868{
869#define FLD(f) abuf->fields.sfmt_cswap.f
870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
871 int UNUSED written = 0;
872 IADDR UNUSED pc = abuf->addr;
873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
874
875if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
876 {
877 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
878 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
879 written |= (1 << 4);
880 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
881 }
882}
883
884 abuf->written = written;
885 return vpc;
886#undef FLD
887}
888
889/* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
890
891static SEM_PC
892SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
893{
894#define FLD(f) abuf->fields.sfmt_cswap.f
895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
896 int UNUSED written = 0;
897 IADDR UNUSED pc = abuf->addr;
898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
899
900if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
901 {
902 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
903 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
904 written |= (1 << 4);
905 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
906 }
907}
908
909 abuf->written = written;
910 return vpc;
911#undef FLD
912}
913
914/* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
915
916static SEM_PC
917SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
918{
919#define FLD(f) abuf->fields.sfmt_cswap.f
920 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
921 int UNUSED written = 0;
922 IADDR UNUSED pc = abuf->addr;
923 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
924
925if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
926 {
927 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
928 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
929 written |= (1 << 4);
930 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
931 }
932}
933
934 abuf->written = written;
935 return vpc;
936#undef FLD
937}
938
939/* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
940
941static SEM_PC
942SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
943{
944#define FLD(f) abuf->fields.sfmt_cswap.f
945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
946 int UNUSED written = 0;
947 IADDR UNUSED pc = abuf->addr;
948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
949
950if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
951{
952 SI tmp_tmp1;
953 SI tmp_tmp2;
954 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
955 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
956 {
957 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
958 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
959 written |= (1 << 4);
960 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
961 }
962}
963}
964
965 abuf->written = written;
966 return vpc;
967#undef FLD
968}
969
970/* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
971
972static SEM_PC
973SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
974{
975#define FLD(f) abuf->fields.sfmt_addcc.f
976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
977 int UNUSED written = 0;
978 IADDR UNUSED pc = abuf->addr;
979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
980
981{
982 BI tmp_tmp;
983 QI tmp_cc;
984 SI tmp_result;
985 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
986 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
987if (EQBI (tmp_tmp, 0)) {
988 tmp_cc = ANDQI (tmp_cc, 13);
989} else {
990 tmp_cc = ORQI (tmp_cc, 2);
991}
992 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
993if (EQBI (tmp_tmp, 0)) {
994 tmp_cc = ANDQI (tmp_cc, 14);
995} else {
996 tmp_cc = ORQI (tmp_cc, 1);
997}
998 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
999if (EQSI (tmp_result, 0)) {
1000 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1001} else {
1002if (LTSI (tmp_result, 0)) {
1003 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1004} else {
1005 tmp_cc = ANDQI (tmp_cc, 3);
1006}
1007}
1008 {
1009 SI opval = tmp_result;
1010 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1011 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1012 }
1013 {
1014 UQI opval = tmp_cc;
1015 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1016 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1017 }
1018}
1019
1020 return vpc;
1021#undef FLD
1022}
1023
1024/* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1025
1026static SEM_PC
1027SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1028{
1029#define FLD(f) abuf->fields.sfmt_addcc.f
1030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1031 int UNUSED written = 0;
1032 IADDR UNUSED pc = abuf->addr;
1033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1034
1035{
1036 BI tmp_tmp;
1037 QI tmp_cc;
1038 SI tmp_result;
1039 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1040 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1041if (EQBI (tmp_tmp, 0)) {
1042 tmp_cc = ANDQI (tmp_cc, 13);
1043} else {
1044 tmp_cc = ORQI (tmp_cc, 2);
1045}
1046 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1047if (EQBI (tmp_tmp, 0)) {
1048 tmp_cc = ANDQI (tmp_cc, 14);
1049} else {
1050 tmp_cc = ORQI (tmp_cc, 1);
1051}
1052 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1053if (EQSI (tmp_result, 0)) {
1054 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1055} else {
1056if (LTSI (tmp_result, 0)) {
1057 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1058} else {
1059 tmp_cc = ANDQI (tmp_cc, 3);
1060}
1061}
1062 {
1063 SI opval = tmp_result;
1064 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1065 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1066 }
1067 {
1068 UQI opval = tmp_cc;
1069 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1070 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1071 }
1072}
1073
1074 return vpc;
1075#undef FLD
1076}
1077
1078/* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1079
1080static SEM_PC
1081SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1082{
1083#define FLD(f) abuf->fields.sfmt_addcc.f
1084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1085 int UNUSED written = 0;
1086 IADDR UNUSED pc = abuf->addr;
1087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1088
1089{
1090 SI tmp_tmp;
1091 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1092 {
1093 SI opval = tmp_tmp;
1094 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1095 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1096 }
1097if (EQSI (tmp_tmp, 0)) {
1098 {
1099 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1100 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1101 written |= (1 << 4);
1102 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1103 }
1104} else {
1105if (LTSI (tmp_tmp, 0)) {
1106 {
1107 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1108 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1109 written |= (1 << 4);
1110 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1111 }
1112} else {
1113 {
1114 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1115 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1116 written |= (1 << 4);
1117 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1118 }
1119}
1120}
1121}
1122
1123 abuf->written = written;
1124 return vpc;
1125#undef FLD
1126}
1127
1128/* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1129
1130static SEM_PC
1131SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1132{
1133#define FLD(f) abuf->fields.sfmt_addcc.f
1134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1135 int UNUSED written = 0;
1136 IADDR UNUSED pc = abuf->addr;
1137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1138
1139{
1140 SI tmp_tmp;
1141 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1142 {
1143 SI opval = tmp_tmp;
1144 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1145 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1146 }
1147if (EQSI (tmp_tmp, 0)) {
1148 {
1149 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1150 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1151 written |= (1 << 4);
1152 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1153 }
1154} else {
1155if (LTSI (tmp_tmp, 0)) {
1156 {
1157 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1158 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1159 written |= (1 << 4);
1160 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1161 }
1162} else {
1163 {
1164 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1165 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1166 written |= (1 << 4);
1167 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1168 }
1169}
1170}
1171}
1172
1173 abuf->written = written;
1174 return vpc;
1175#undef FLD
1176}
1177
1178/* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1179
1180static SEM_PC
1181SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1182{
1183#define FLD(f) abuf->fields.sfmt_addcc.f
1184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1185 int UNUSED written = 0;
1186 IADDR UNUSED pc = abuf->addr;
1187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1188
1189{
1190 SI tmp_tmp;
1191 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1192 {
1193 SI opval = tmp_tmp;
1194 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1195 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1196 }
1197if (EQSI (tmp_tmp, 0)) {
1198 {
1199 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1200 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1201 written |= (1 << 4);
1202 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1203 }
1204} else {
1205if (LTSI (tmp_tmp, 0)) {
1206 {
1207 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1208 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1209 written |= (1 << 4);
1210 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1211 }
1212} else {
1213 {
1214 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1215 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1216 written |= (1 << 4);
1217 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1218 }
1219}
1220}
1221}
1222
1223 abuf->written = written;
1224 return vpc;
1225#undef FLD
1226}
1227
1228/* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1229
1230static SEM_PC
1231SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1232{
1233#define FLD(f) abuf->fields.sfmt_addcc.f
1234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1235 int UNUSED written = 0;
1236 IADDR UNUSED pc = abuf->addr;
1237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1238
1239{
1240 SI tmp_shift;
1241 SI tmp_tmp;
1242 QI tmp_cc;
1243 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1244 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1245 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1246 {
1247 SI opval = tmp_tmp;
1248 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1249 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1250 }
1251if (EQSI (tmp_tmp, 0)) {
1252 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1253} else {
1254if (LTSI (tmp_tmp, 0)) {
1255 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1256} else {
1257 tmp_cc = ANDQI (tmp_cc, 3);
1258}
1259}
1260 {
1261 UQI opval = tmp_cc;
1262 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1263 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1264 }
1265}
1266
1267 return vpc;
1268#undef FLD
1269}
1270
1271/* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1272
1273static SEM_PC
1274SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1275{
1276#define FLD(f) abuf->fields.sfmt_addcc.f
1277 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1278 int UNUSED written = 0;
1279 IADDR UNUSED pc = abuf->addr;
1280 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1281
1282{
1283 SI tmp_shift;
1284 SI tmp_tmp;
1285 QI tmp_cc;
1286 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1287 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1288 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1289 {
1290 SI opval = tmp_tmp;
1291 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1292 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1293 }
1294if (EQSI (tmp_tmp, 0)) {
1295 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1296} else {
1297if (LTSI (tmp_tmp, 0)) {
1298 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1299} else {
1300 tmp_cc = ANDQI (tmp_cc, 3);
1301}
1302}
1303 {
1304 UQI opval = tmp_cc;
1305 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1306 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1307 }
1308}
1309
1310 return vpc;
1311#undef FLD
1312}
1313
1314/* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1315
1316static SEM_PC
1317SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1318{
1319#define FLD(f) abuf->fields.sfmt_addcc.f
1320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1321 int UNUSED written = 0;
1322 IADDR UNUSED pc = abuf->addr;
1323 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1324
1325{
1326 SI tmp_shift;
1327 SI tmp_tmp;
1328 QI tmp_cc;
1329 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1330 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1331 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1332 {
1333 SI opval = tmp_tmp;
1334 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1335 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1336 }
1337if (EQSI (tmp_tmp, 0)) {
1338 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1339} else {
1340if (LTSI (tmp_tmp, 0)) {
1341 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1342} else {
1343 tmp_cc = ANDQI (tmp_cc, 3);
1344}
1345}
1346 {
1347 UQI opval = tmp_cc;
1348 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1349 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1350 }
1351}
1352
1353 return vpc;
1354#undef FLD
1355}
1356
1357/* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1358
1359static SEM_PC
1360SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1361{
1362#define FLD(f) abuf->fields.sfmt_smulcc.f
1363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1364 int UNUSED written = 0;
1365 IADDR UNUSED pc = abuf->addr;
1366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1367
1368{
1369 DI tmp_tmp;
1370 QI tmp_cc;
1371 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1372 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1373if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1374 tmp_cc = ANDQI (tmp_cc, 7);
1375} else {
1376 tmp_cc = ORQI (tmp_cc, 8);
1377}
1378if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1379 tmp_cc = ANDQI (tmp_cc, 11);
1380} else {
1381 tmp_cc = ORQI (tmp_cc, 4);
1382}
1383 {
1384 DI opval = tmp_tmp;
1385 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1386 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1387 }
1388 {
1389 UQI opval = tmp_cc;
1390 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1391 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1392 }
1393}
1394
1395 return vpc;
1396#undef FLD
1397}
1398
1399/* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1400
1401static SEM_PC
1402SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1403{
1404#define FLD(f) abuf->fields.sfmt_smulcc.f
1405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1406 int UNUSED written = 0;
1407 IADDR UNUSED pc = abuf->addr;
1408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1409
1410{
1411 DI tmp_tmp;
1412 QI tmp_cc;
1413 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1414 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1415if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1416 tmp_cc = ANDQI (tmp_cc, 7);
1417} else {
1418 tmp_cc = ORQI (tmp_cc, 8);
1419}
1420if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1421 tmp_cc = ANDQI (tmp_cc, 11);
1422} else {
1423 tmp_cc = ORQI (tmp_cc, 4);
1424}
1425 {
1426 DI opval = tmp_tmp;
1427 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1428 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1429 }
1430 {
1431 UQI opval = tmp_cc;
1432 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1433 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1434 }
1435}
1436
1437 return vpc;
1438#undef FLD
1439}
1440
1441/* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1442
1443static SEM_PC
1444SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1445{
1446#define FLD(f) abuf->fields.sfmt_caddcc.f
1447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1448 int UNUSED written = 0;
1449 IADDR UNUSED pc = abuf->addr;
1450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1451
1452if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1453{
1454 BI tmp_tmp;
1455 QI tmp_cc;
1456 SI tmp_result;
b29791a8 1457 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
1458 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1459if (EQBI (tmp_tmp, 0)) {
1460 tmp_cc = ANDQI (tmp_cc, 13);
1461} else {
1462 tmp_cc = ORQI (tmp_cc, 2);
1463}
1464 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1465if (EQBI (tmp_tmp, 0)) {
1466 tmp_cc = ANDQI (tmp_cc, 14);
1467} else {
1468 tmp_cc = ORQI (tmp_cc, 1);
1469}
1470 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1471if (EQSI (tmp_result, 0)) {
1472 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1473} else {
1474if (LTSI (tmp_result, 0)) {
1475 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1476} else {
1477 tmp_cc = ANDQI (tmp_cc, 3);
1478}
1479}
1480 {
1481 SI opval = tmp_result;
1482 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1483 written |= (1 << 6);
1484 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1485 }
1486 {
1487 UQI opval = tmp_cc;
b29791a8 1488 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1489 written |= (1 << 7);
1490 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1491 }
1492}
1493}
1494
1495 abuf->written = written;
1496 return vpc;
1497#undef FLD
1498}
1499
1500/* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1501
1502static SEM_PC
1503SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1504{
1505#define FLD(f) abuf->fields.sfmt_caddcc.f
1506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1507 int UNUSED written = 0;
1508 IADDR UNUSED pc = abuf->addr;
1509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1510
1511if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1512{
1513 BI tmp_tmp;
1514 QI tmp_cc;
1515 SI tmp_result;
b29791a8 1516 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
1517 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1518if (EQBI (tmp_tmp, 0)) {
1519 tmp_cc = ANDQI (tmp_cc, 13);
1520} else {
1521 tmp_cc = ORQI (tmp_cc, 2);
1522}
1523 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1524if (EQBI (tmp_tmp, 0)) {
1525 tmp_cc = ANDQI (tmp_cc, 14);
1526} else {
1527 tmp_cc = ORQI (tmp_cc, 1);
1528}
1529 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1530if (EQSI (tmp_result, 0)) {
1531 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1532} else {
1533if (LTSI (tmp_result, 0)) {
1534 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1535} else {
1536 tmp_cc = ANDQI (tmp_cc, 3);
1537}
1538}
1539 {
1540 SI opval = tmp_result;
1541 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1542 written |= (1 << 6);
1543 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1544 }
1545 {
1546 UQI opval = tmp_cc;
b29791a8 1547 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1548 written |= (1 << 7);
1549 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1550 }
1551}
1552}
1553
1554 abuf->written = written;
1555 return vpc;
1556#undef FLD
1557}
1558
1559/* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1560
1561static SEM_PC
1562SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1563{
1564#define FLD(f) abuf->fields.sfmt_csmulcc.f
1565 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1566 int UNUSED written = 0;
1567 IADDR UNUSED pc = abuf->addr;
1568 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1569
1570if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1571{
1572 DI tmp_tmp;
1573 QI tmp_cc;
b29791a8 1574 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
1575 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1576if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1577 tmp_cc = ANDQI (tmp_cc, 7);
1578} else {
1579 tmp_cc = ORQI (tmp_cc, 8);
1580}
1581if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1582 tmp_cc = ANDQI (tmp_cc, 11);
1583} else {
1584 tmp_cc = ORQI (tmp_cc, 4);
1585}
1586 {
1587 DI opval = tmp_tmp;
1588 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1589 written |= (1 << 6);
1590 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1591 }
1592 {
1593 UQI opval = tmp_cc;
b29791a8 1594 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1595 written |= (1 << 7);
1596 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1597 }
1598}
1599}
1600
1601 abuf->written = written;
1602 return vpc;
1603#undef FLD
1604}
1605
1606/* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1607
1608static SEM_PC
1609SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1610{
1611#define FLD(f) abuf->fields.sfmt_caddcc.f
1612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1613 int UNUSED written = 0;
1614 IADDR UNUSED pc = abuf->addr;
1615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1616
1617if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1618{
1619 SI tmp_tmp;
1620 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1621 {
1622 SI opval = tmp_tmp;
1623 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1624 written |= (1 << 6);
1625 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1626 }
1627if (EQSI (tmp_tmp, 0)) {
1628 {
b29791a8
DE
1629 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1630 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1631 written |= (1 << 7);
1632 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1633 }
1634} else {
1635if (LTSI (tmp_tmp, 0)) {
1636 {
b29791a8
DE
1637 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1638 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1639 written |= (1 << 7);
1640 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1641 }
1642} else {
1643 {
b29791a8
DE
1644 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1645 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1646 written |= (1 << 7);
1647 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1648 }
1649}
1650}
1651}
1652}
1653
1654 abuf->written = written;
1655 return vpc;
1656#undef FLD
1657}
1658
1659/* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1660
1661static SEM_PC
1662SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1663{
1664#define FLD(f) abuf->fields.sfmt_caddcc.f
1665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1666 int UNUSED written = 0;
1667 IADDR UNUSED pc = abuf->addr;
1668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1669
1670if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1671{
1672 SI tmp_tmp;
1673 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1674 {
1675 SI opval = tmp_tmp;
1676 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1677 written |= (1 << 6);
1678 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1679 }
1680if (EQSI (tmp_tmp, 0)) {
1681 {
b29791a8
DE
1682 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1683 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1684 written |= (1 << 7);
1685 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1686 }
1687} else {
1688if (LTSI (tmp_tmp, 0)) {
1689 {
b29791a8
DE
1690 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1691 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1692 written |= (1 << 7);
1693 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1694 }
1695} else {
1696 {
b29791a8
DE
1697 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1698 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1699 written |= (1 << 7);
1700 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1701 }
1702}
1703}
1704}
1705}
1706
1707 abuf->written = written;
1708 return vpc;
1709#undef FLD
1710}
1711
1712/* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1713
1714static SEM_PC
1715SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1716{
1717#define FLD(f) abuf->fields.sfmt_caddcc.f
1718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1719 int UNUSED written = 0;
1720 IADDR UNUSED pc = abuf->addr;
1721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1722
1723if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1724{
1725 SI tmp_tmp;
1726 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1727 {
1728 SI opval = tmp_tmp;
1729 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1730 written |= (1 << 6);
1731 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1732 }
1733if (EQSI (tmp_tmp, 0)) {
1734 {
b29791a8
DE
1735 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1736 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1737 written |= (1 << 7);
1738 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1739 }
1740} else {
1741if (LTSI (tmp_tmp, 0)) {
1742 {
b29791a8
DE
1743 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1744 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1745 written |= (1 << 7);
1746 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1747 }
1748} else {
1749 {
b29791a8
DE
1750 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1751 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1752 written |= (1 << 7);
1753 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1754 }
1755}
1756}
1757}
1758}
1759
1760 abuf->written = written;
1761 return vpc;
1762#undef FLD
1763}
1764
1765/* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1766
1767static SEM_PC
1768SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1769{
1770#define FLD(f) abuf->fields.sfmt_caddcc.f
1771 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1772 int UNUSED written = 0;
1773 IADDR UNUSED pc = abuf->addr;
1774 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1775
1776if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1777{
1778 SI tmp_shift;
1779 SI tmp_tmp;
1780 QI tmp_cc;
1781 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
b29791a8 1782 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
b34f6357
DB
1783 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1784 {
1785 SI opval = tmp_tmp;
1786 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1787 written |= (1 << 6);
1788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1789 }
1790if (EQSI (tmp_tmp, 0)) {
1791 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1792} else {
1793if (LTSI (tmp_tmp, 0)) {
1794 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1795} else {
1796 tmp_cc = ANDQI (tmp_cc, 3);
1797}
1798}
1799 {
1800 UQI opval = tmp_cc;
b29791a8 1801 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1802 written |= (1 << 7);
1803 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1804 }
1805}
1806}
1807
1808 abuf->written = written;
1809 return vpc;
1810#undef FLD
1811}
1812
1813/* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1814
1815static SEM_PC
1816SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1817{
1818#define FLD(f) abuf->fields.sfmt_caddcc.f
1819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1820 int UNUSED written = 0;
1821 IADDR UNUSED pc = abuf->addr;
1822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1823
1824if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1825{
1826 SI tmp_shift;
1827 SI tmp_tmp;
1828 QI tmp_cc;
1829 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
b29791a8 1830 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
b34f6357
DB
1831 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1832 {
1833 SI opval = tmp_tmp;
1834 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1835 written |= (1 << 6);
1836 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1837 }
1838if (EQSI (tmp_tmp, 0)) {
1839 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1840} else {
1841if (LTSI (tmp_tmp, 0)) {
1842 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1843} else {
1844 tmp_cc = ANDQI (tmp_cc, 3);
1845}
1846}
1847 {
1848 UQI opval = tmp_cc;
b29791a8 1849 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1850 written |= (1 << 7);
1851 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1852 }
1853}
1854}
1855
1856 abuf->written = written;
1857 return vpc;
1858#undef FLD
1859}
1860
1861/* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1862
1863static SEM_PC
1864SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1865{
1866#define FLD(f) abuf->fields.sfmt_caddcc.f
1867 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1868 int UNUSED written = 0;
1869 IADDR UNUSED pc = abuf->addr;
1870 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1871
1872if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1873{
1874 SI tmp_shift;
1875 SI tmp_tmp;
1876 QI tmp_cc;
1877 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
b29791a8 1878 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
b34f6357
DB
1879 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1880 {
1881 SI opval = tmp_tmp;
1882 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1883 written |= (1 << 6);
1884 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1885 }
1886if (EQSI (tmp_tmp, 0)) {
1887 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1888} else {
1889if (LTSI (tmp_tmp, 0)) {
1890 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1891} else {
1892 tmp_cc = ANDQI (tmp_cc, 3);
1893}
1894}
1895 {
1896 UQI opval = tmp_cc;
b29791a8 1897 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1898 written |= (1 << 7);
1899 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1900 }
1901}
1902}
1903
1904 abuf->written = written;
1905 return vpc;
1906#undef FLD
1907}
1908
1909/* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1910
1911static SEM_PC
1912SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1913{
1914#define FLD(f) abuf->fields.sfmt_addcc.f
1915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1916 int UNUSED written = 0;
1917 IADDR UNUSED pc = abuf->addr;
1918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1919
1920 {
1921 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1922 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1923 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1924 }
1925
1926 return vpc;
1927#undef FLD
1928}
1929
1930/* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1931
1932static SEM_PC
1933SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1934{
1935#define FLD(f) abuf->fields.sfmt_addcc.f
1936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1937 int UNUSED written = 0;
1938 IADDR UNUSED pc = abuf->addr;
1939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1940
1941 {
1942 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1944 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1945 }
1946
1947 return vpc;
1948#undef FLD
1949}
1950
1951/* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1952
1953static SEM_PC
1954SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1955{
1956#define FLD(f) abuf->fields.sfmt_addcc.f
1957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1958 int UNUSED written = 0;
1959 IADDR UNUSED pc = abuf->addr;
1960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1961
1962{
1963 SI tmp_tmp;
1964 QI tmp_cc;
1965 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1966 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
b29791a8 1967if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
1968 tmp_cc = ANDQI (tmp_cc, 13);
1969} else {
1970 tmp_cc = ORQI (tmp_cc, 2);
1971}
b29791a8 1972if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
1973 tmp_cc = ANDQI (tmp_cc, 14);
1974} else {
1975 tmp_cc = ORQI (tmp_cc, 1);
1976}
1977if (EQSI (tmp_tmp, 0)) {
1978 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1979} else {
1980if (LTSI (tmp_tmp, 0)) {
1981 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1982} else {
1983 tmp_cc = ANDQI (tmp_cc, 3);
1984}
1985}
1986 {
1987 SI opval = tmp_tmp;
1988 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1989 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1990 }
1991 {
1992 UQI opval = tmp_cc;
1993 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1994 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1995 }
1996}
1997
1998 return vpc;
1999#undef FLD
2000}
2001
2002/* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2003
2004static SEM_PC
2005SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2006{
2007#define FLD(f) abuf->fields.sfmt_addcc.f
2008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2009 int UNUSED written = 0;
2010 IADDR UNUSED pc = abuf->addr;
2011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2012
2013{
2014 SI tmp_tmp;
2015 QI tmp_cc;
2016 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2017 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
b29791a8 2018if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2019 tmp_cc = ANDQI (tmp_cc, 13);
2020} else {
2021 tmp_cc = ORQI (tmp_cc, 2);
2022}
b29791a8 2023if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2024 tmp_cc = ANDQI (tmp_cc, 14);
2025} else {
2026 tmp_cc = ORQI (tmp_cc, 1);
2027}
2028if (EQSI (tmp_tmp, 0)) {
2029 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2030} else {
2031if (LTSI (tmp_tmp, 0)) {
2032 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2033} else {
2034 tmp_cc = ANDQI (tmp_cc, 3);
2035}
2036}
2037 {
2038 SI opval = tmp_tmp;
2039 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2040 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2041 }
2042 {
2043 UQI opval = tmp_cc;
2044 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2045 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2046 }
2047}
2048
2049 return vpc;
2050#undef FLD
2051}
2052
e930b1f5
DB
2053/* addss: addss$pack $GRi,$GRj,$GRk */
2054
2055static SEM_PC
2056SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2057{
2058#define FLD(f) abuf->fields.sfmt_addcc.f
2059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2060 int UNUSED written = 0;
2061 IADDR UNUSED pc = abuf->addr;
2062 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2063
2064{
2065 {
2066 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2067 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2068 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2069 }
2070if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2071 {
2072 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2073 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2074 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2075 }
2076}
2077}
2078
2079 return vpc;
2080#undef FLD
2081}
2082
2083/* subss: subss$pack $GRi,$GRj,$GRk */
2084
2085static SEM_PC
2086SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2087{
2088#define FLD(f) abuf->fields.sfmt_addcc.f
2089 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2090 int UNUSED written = 0;
2091 IADDR UNUSED pc = abuf->addr;
2092 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2093
2094{
2095 {
2096 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2097 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2098 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2099 }
2100if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2101 {
2102 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2103 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2104 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2105 }
2106}
2107}
2108
2109 return vpc;
2110#undef FLD
2111}
2112
b34f6357
DB
2113/* addi: addi$pack $GRi,$s12,$GRk */
2114
2115static SEM_PC
2116SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2117{
2118#define FLD(f) abuf->fields.sfmt_swapi.f
2119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2120 int UNUSED written = 0;
2121 IADDR UNUSED pc = abuf->addr;
2122 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2123
2124 {
2125 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2126 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2127 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2128 }
2129
2130 return vpc;
2131#undef FLD
2132}
2133
2134/* subi: subi$pack $GRi,$s12,$GRk */
2135
2136static SEM_PC
2137SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2138{
2139#define FLD(f) abuf->fields.sfmt_swapi.f
2140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2141 int UNUSED written = 0;
2142 IADDR UNUSED pc = abuf->addr;
2143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2144
2145 {
2146 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2148 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2149 }
2150
2151 return vpc;
2152#undef FLD
2153}
2154
2155/* andi: andi$pack $GRi,$s12,$GRk */
2156
2157static SEM_PC
2158SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2159{
2160#define FLD(f) abuf->fields.sfmt_swapi.f
2161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2162 int UNUSED written = 0;
2163 IADDR UNUSED pc = abuf->addr;
2164 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2165
2166 {
2167 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2168 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2169 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2170 }
2171
2172 return vpc;
2173#undef FLD
2174}
2175
2176/* ori: ori$pack $GRi,$s12,$GRk */
2177
2178static SEM_PC
2179SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2180{
2181#define FLD(f) abuf->fields.sfmt_swapi.f
2182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2183 int UNUSED written = 0;
2184 IADDR UNUSED pc = abuf->addr;
2185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2186
2187 {
2188 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2189 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2190 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2191 }
2192
2193 return vpc;
2194#undef FLD
2195}
2196
2197/* xori: xori$pack $GRi,$s12,$GRk */
2198
2199static SEM_PC
2200SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2201{
2202#define FLD(f) abuf->fields.sfmt_swapi.f
2203 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2204 int UNUSED written = 0;
2205 IADDR UNUSED pc = abuf->addr;
2206 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2207
2208 {
2209 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2210 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2211 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2212 }
2213
2214 return vpc;
2215#undef FLD
2216}
2217
2218/* sdivi: sdivi$pack $GRi,$s12,$GRk */
2219
2220static SEM_PC
2221SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2222{
2223#define FLD(f) abuf->fields.sfmt_swapi.f
2224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2225 int UNUSED written = 0;
2226 IADDR UNUSED pc = abuf->addr;
2227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2228
2229{
2230frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2231; /*clobber*/
2232}
2233
2234 return vpc;
2235#undef FLD
2236}
2237
2238/* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2239
2240static SEM_PC
2241SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2242{
2243#define FLD(f) abuf->fields.sfmt_swapi.f
2244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2245 int UNUSED written = 0;
2246 IADDR UNUSED pc = abuf->addr;
2247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2248
2249{
2250frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2251; /*clobber*/
2252}
2253
2254 return vpc;
2255#undef FLD
2256}
2257
2258/* udivi: udivi$pack $GRi,$s12,$GRk */
2259
2260static SEM_PC
2261SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2262{
2263#define FLD(f) abuf->fields.sfmt_swapi.f
2264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2265 int UNUSED written = 0;
2266 IADDR UNUSED pc = abuf->addr;
2267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2268
2269{
2270frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2271; /*clobber*/
2272}
2273
2274 return vpc;
2275#undef FLD
2276}
2277
2278/* nudivi: nudivi$pack $GRi,$s12,$GRk */
2279
2280static SEM_PC
2281SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2282{
2283#define FLD(f) abuf->fields.sfmt_swapi.f
2284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2285 int UNUSED written = 0;
2286 IADDR UNUSED pc = abuf->addr;
2287 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2288
2289{
2290frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2291; /*clobber*/
2292}
2293
2294 return vpc;
2295#undef FLD
2296}
2297
2298/* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2299
2300static SEM_PC
2301SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2302{
2303#define FLD(f) abuf->fields.sfmt_smuli.f
2304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2305 int UNUSED written = 0;
2306 IADDR UNUSED pc = abuf->addr;
2307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2308
2309 {
2310 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2311 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2312 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2313 }
2314
2315 return vpc;
2316#undef FLD
2317}
2318
2319/* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2320
2321static SEM_PC
2322SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2323{
2324#define FLD(f) abuf->fields.sfmt_smuli.f
2325 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2326 int UNUSED written = 0;
2327 IADDR UNUSED pc = abuf->addr;
2328 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2329
2330 {
2331 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2332 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2333 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2334 }
2335
2336 return vpc;
2337#undef FLD
2338}
2339
2340/* slli: slli$pack $GRi,$s12,$GRk */
2341
2342static SEM_PC
2343SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2344{
2345#define FLD(f) abuf->fields.sfmt_swapi.f
2346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2347 int UNUSED written = 0;
2348 IADDR UNUSED pc = abuf->addr;
2349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2350
2351 {
2352 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2353 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2354 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2355 }
2356
2357 return vpc;
2358#undef FLD
2359}
2360
2361/* srli: srli$pack $GRi,$s12,$GRk */
2362
2363static SEM_PC
2364SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2365{
2366#define FLD(f) abuf->fields.sfmt_swapi.f
2367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2368 int UNUSED written = 0;
2369 IADDR UNUSED pc = abuf->addr;
2370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2371
2372 {
2373 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2374 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2375 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2376 }
2377
2378 return vpc;
2379#undef FLD
2380}
2381
2382/* srai: srai$pack $GRi,$s12,$GRk */
2383
2384static SEM_PC
2385SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2386{
2387#define FLD(f) abuf->fields.sfmt_swapi.f
2388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2389 int UNUSED written = 0;
2390 IADDR UNUSED pc = abuf->addr;
2391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2392
2393 {
2394 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2395 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2396 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2397 }
2398
2399 return vpc;
2400#undef FLD
2401}
2402
2403/* scani: scani$pack $GRi,$s12,$GRk */
2404
2405static SEM_PC
2406SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2407{
2408#define FLD(f) abuf->fields.sfmt_swapi.f
2409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2410 int UNUSED written = 0;
2411 IADDR UNUSED pc = abuf->addr;
2412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2413
2414{
2415 SI tmp_tmp1;
2416 SI tmp_tmp2;
2417 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2418 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2419 {
2420 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2421 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2422 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2423 }
2424}
2425
2426 return vpc;
2427#undef FLD
2428}
2429
2430/* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2431
2432static SEM_PC
2433SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2434{
2435#define FLD(f) abuf->fields.sfmt_addicc.f
2436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2437 int UNUSED written = 0;
2438 IADDR UNUSED pc = abuf->addr;
2439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2440
2441{
2442 BI tmp_tmp;
2443 QI tmp_cc;
2444 SI tmp_result;
2445 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2446 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2447if (EQBI (tmp_tmp, 0)) {
2448 tmp_cc = ANDQI (tmp_cc, 13);
2449} else {
2450 tmp_cc = ORQI (tmp_cc, 2);
2451}
2452 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2453if (EQBI (tmp_tmp, 0)) {
2454 tmp_cc = ANDQI (tmp_cc, 14);
2455} else {
2456 tmp_cc = ORQI (tmp_cc, 1);
2457}
2458 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2459if (EQSI (tmp_result, 0)) {
2460 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2461} else {
2462if (LTSI (tmp_result, 0)) {
2463 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2464} else {
2465 tmp_cc = ANDQI (tmp_cc, 3);
2466}
2467}
2468 {
2469 SI opval = tmp_result;
2470 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2471 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2472 }
2473 {
2474 UQI opval = tmp_cc;
2475 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2476 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2477 }
2478}
2479
2480 return vpc;
2481#undef FLD
2482}
2483
2484/* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2485
2486static SEM_PC
2487SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2488{
2489#define FLD(f) abuf->fields.sfmt_addicc.f
2490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2491 int UNUSED written = 0;
2492 IADDR UNUSED pc = abuf->addr;
2493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2494
2495{
2496 BI tmp_tmp;
2497 QI tmp_cc;
2498 SI tmp_result;
2499 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2500 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2501if (EQBI (tmp_tmp, 0)) {
2502 tmp_cc = ANDQI (tmp_cc, 13);
2503} else {
2504 tmp_cc = ORQI (tmp_cc, 2);
2505}
2506 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2507if (EQBI (tmp_tmp, 0)) {
2508 tmp_cc = ANDQI (tmp_cc, 14);
2509} else {
2510 tmp_cc = ORQI (tmp_cc, 1);
2511}
2512 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2513if (EQSI (tmp_result, 0)) {
2514 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2515} else {
2516if (LTSI (tmp_result, 0)) {
2517 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2518} else {
2519 tmp_cc = ANDQI (tmp_cc, 3);
2520}
2521}
2522 {
2523 SI opval = tmp_result;
2524 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2525 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2526 }
2527 {
2528 UQI opval = tmp_cc;
2529 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2530 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2531 }
2532}
2533
2534 return vpc;
2535#undef FLD
2536}
2537
2538/* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2539
2540static SEM_PC
2541SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2542{
2543#define FLD(f) abuf->fields.sfmt_addicc.f
2544 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2545 int UNUSED written = 0;
2546 IADDR UNUSED pc = abuf->addr;
2547 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2548
2549{
2550 SI tmp_tmp;
2551 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2552 {
2553 SI opval = tmp_tmp;
2554 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2555 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2556 }
2557if (EQSI (tmp_tmp, 0)) {
2558 {
2559 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2560 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2561 written |= (1 << 4);
2562 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2563 }
2564} else {
2565if (LTSI (tmp_tmp, 0)) {
2566 {
2567 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2568 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2569 written |= (1 << 4);
2570 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2571 }
2572} else {
2573 {
2574 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2575 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2576 written |= (1 << 4);
2577 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2578 }
2579}
2580}
2581}
2582
2583 abuf->written = written;
2584 return vpc;
2585#undef FLD
2586}
2587
2588/* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2589
2590static SEM_PC
2591SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2592{
2593#define FLD(f) abuf->fields.sfmt_addicc.f
2594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2595 int UNUSED written = 0;
2596 IADDR UNUSED pc = abuf->addr;
2597 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2598
2599{
2600 SI tmp_tmp;
2601 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2602 {
2603 SI opval = tmp_tmp;
2604 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2605 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2606 }
2607if (EQSI (tmp_tmp, 0)) {
2608 {
2609 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2610 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2611 written |= (1 << 4);
2612 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2613 }
2614} else {
2615if (LTSI (tmp_tmp, 0)) {
2616 {
2617 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2618 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2619 written |= (1 << 4);
2620 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2621 }
2622} else {
2623 {
2624 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2625 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2626 written |= (1 << 4);
2627 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2628 }
2629}
2630}
2631}
2632
2633 abuf->written = written;
2634 return vpc;
2635#undef FLD
2636}
2637
2638/* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2639
2640static SEM_PC
2641SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2642{
2643#define FLD(f) abuf->fields.sfmt_addicc.f
2644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2645 int UNUSED written = 0;
2646 IADDR UNUSED pc = abuf->addr;
2647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2648
2649{
2650 SI tmp_tmp;
2651 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2652 {
2653 SI opval = tmp_tmp;
2654 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2655 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2656 }
2657if (EQSI (tmp_tmp, 0)) {
2658 {
2659 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2660 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2661 written |= (1 << 4);
2662 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2663 }
2664} else {
2665if (LTSI (tmp_tmp, 0)) {
2666 {
2667 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2668 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2669 written |= (1 << 4);
2670 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2671 }
2672} else {
2673 {
2674 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2675 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2676 written |= (1 << 4);
2677 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2678 }
2679}
2680}
2681}
2682
2683 abuf->written = written;
2684 return vpc;
2685#undef FLD
2686}
2687
2688/* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2689
2690static SEM_PC
2691SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2692{
2693#define FLD(f) abuf->fields.sfmt_smulicc.f
2694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2695 int UNUSED written = 0;
2696 IADDR UNUSED pc = abuf->addr;
2697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2698
2699{
2700 DI tmp_tmp;
2701 QI tmp_cc;
2702 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2703 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2704if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2705 tmp_cc = ANDQI (tmp_cc, 7);
2706} else {
2707 tmp_cc = ORQI (tmp_cc, 8);
2708}
2709if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2710 tmp_cc = ANDQI (tmp_cc, 11);
2711} else {
2712 tmp_cc = ORQI (tmp_cc, 4);
2713}
2714 {
2715 DI opval = tmp_tmp;
2716 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2717 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2718 }
2719 {
2720 UQI opval = tmp_cc;
2721 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2722 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2723 }
2724}
2725
2726 return vpc;
2727#undef FLD
2728}
2729
2730/* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2731
2732static SEM_PC
2733SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2734{
2735#define FLD(f) abuf->fields.sfmt_smulicc.f
2736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2737 int UNUSED written = 0;
2738 IADDR UNUSED pc = abuf->addr;
2739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2740
2741{
2742 DI tmp_tmp;
2743 QI tmp_cc;
2744 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2745 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2746if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2747 tmp_cc = ANDQI (tmp_cc, 7);
2748} else {
2749 tmp_cc = ORQI (tmp_cc, 8);
2750}
2751if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2752 tmp_cc = ANDQI (tmp_cc, 11);
2753} else {
2754 tmp_cc = ORQI (tmp_cc, 4);
2755}
2756 {
2757 DI opval = tmp_tmp;
2758 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2759 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2760 }
2761 {
2762 UQI opval = tmp_cc;
2763 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2764 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2765 }
2766}
2767
2768 return vpc;
2769#undef FLD
2770}
2771
2772/* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2773
2774static SEM_PC
2775SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2776{
2777#define FLD(f) abuf->fields.sfmt_addicc.f
2778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2779 int UNUSED written = 0;
2780 IADDR UNUSED pc = abuf->addr;
2781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2782
2783{
2784 SI tmp_shift;
2785 SI tmp_tmp;
2786 QI tmp_cc;
2787 tmp_shift = ANDSI (FLD (f_s10), 31);
2788 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2789 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2790 {
2791 SI opval = tmp_tmp;
2792 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2793 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2794 }
2795if (EQSI (tmp_tmp, 0)) {
2796 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2797} else {
2798if (LTSI (tmp_tmp, 0)) {
2799 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2800} else {
2801 tmp_cc = ANDQI (tmp_cc, 3);
2802}
2803}
2804 {
2805 UQI opval = tmp_cc;
2806 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2807 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2808 }
2809}
2810
2811 return vpc;
2812#undef FLD
2813}
2814
2815/* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2816
2817static SEM_PC
2818SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2819{
2820#define FLD(f) abuf->fields.sfmt_addicc.f
2821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2822 int UNUSED written = 0;
2823 IADDR UNUSED pc = abuf->addr;
2824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2825
2826{
2827 SI tmp_shift;
2828 SI tmp_tmp;
2829 QI tmp_cc;
2830 tmp_shift = ANDSI (FLD (f_s10), 31);
2831 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2832 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2833 {
2834 SI opval = tmp_tmp;
2835 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2836 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2837 }
2838if (EQSI (tmp_tmp, 0)) {
2839 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2840} else {
2841if (LTSI (tmp_tmp, 0)) {
2842 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2843} else {
2844 tmp_cc = ANDQI (tmp_cc, 3);
2845}
2846}
2847 {
2848 UQI opval = tmp_cc;
2849 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2850 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2851 }
2852}
2853
2854 return vpc;
2855#undef FLD
2856}
2857
2858/* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2859
2860static SEM_PC
2861SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2862{
2863#define FLD(f) abuf->fields.sfmt_addicc.f
2864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2865 int UNUSED written = 0;
2866 IADDR UNUSED pc = abuf->addr;
2867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2868
2869{
2870 SI tmp_shift;
2871 SI tmp_tmp;
2872 QI tmp_cc;
2873 tmp_shift = ANDSI (FLD (f_s10), 31);
2874 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2875 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2876 {
2877 SI opval = tmp_tmp;
2878 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2879 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2880 }
2881if (EQSI (tmp_tmp, 0)) {
2882 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2883} else {
2884if (LTSI (tmp_tmp, 0)) {
2885 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2886} else {
2887 tmp_cc = ANDQI (tmp_cc, 3);
2888}
2889}
2890 {
2891 UQI opval = tmp_cc;
2892 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2893 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2894 }
2895}
2896
2897 return vpc;
2898#undef FLD
2899}
2900
2901/* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2902
2903static SEM_PC
2904SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2905{
2906#define FLD(f) abuf->fields.sfmt_addicc.f
2907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2908 int UNUSED written = 0;
2909 IADDR UNUSED pc = abuf->addr;
2910 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2911
2912 {
2913 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2914 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2915 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2916 }
2917
2918 return vpc;
2919#undef FLD
2920}
2921
2922/* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2923
2924static SEM_PC
2925SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2926{
2927#define FLD(f) abuf->fields.sfmt_addicc.f
2928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2929 int UNUSED written = 0;
2930 IADDR UNUSED pc = abuf->addr;
2931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2932
2933 {
2934 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2935 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2936 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2937 }
2938
2939 return vpc;
2940#undef FLD
2941}
2942
2943/* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2944
2945static SEM_PC
2946SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2947{
2948#define FLD(f) abuf->fields.sfmt_addicc.f
2949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2950 int UNUSED written = 0;
2951 IADDR UNUSED pc = abuf->addr;
2952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2953
2954{
2955 SI tmp_tmp;
2956 QI tmp_cc;
2957 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2958 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
b29791a8 2959if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2960 tmp_cc = ANDQI (tmp_cc, 13);
2961} else {
2962 tmp_cc = ORQI (tmp_cc, 2);
2963}
b29791a8 2964if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2965 tmp_cc = ANDQI (tmp_cc, 14);
2966} else {
2967 tmp_cc = ORQI (tmp_cc, 1);
2968}
2969if (EQSI (tmp_tmp, 0)) {
2970 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2971} else {
2972if (LTSI (tmp_tmp, 0)) {
2973 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2974} else {
2975 tmp_cc = ANDQI (tmp_cc, 3);
2976}
2977}
2978 {
2979 SI opval = tmp_tmp;
2980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2981 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2982 }
2983 {
2984 UQI opval = tmp_cc;
2985 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2986 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2987 }
2988}
2989
2990 return vpc;
2991#undef FLD
2992}
2993
2994/* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2995
2996static SEM_PC
2997SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2998{
2999#define FLD(f) abuf->fields.sfmt_addicc.f
3000 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3001 int UNUSED written = 0;
3002 IADDR UNUSED pc = abuf->addr;
3003 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3004
3005{
3006 SI tmp_tmp;
3007 QI tmp_cc;
3008 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3009 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
b29791a8 3010if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
3011 tmp_cc = ANDQI (tmp_cc, 13);
3012} else {
3013 tmp_cc = ORQI (tmp_cc, 2);
3014}
b29791a8 3015if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
3016 tmp_cc = ANDQI (tmp_cc, 14);
3017} else {
3018 tmp_cc = ORQI (tmp_cc, 1);
3019}
3020if (EQSI (tmp_tmp, 0)) {
3021 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3022} else {
3023if (LTSI (tmp_tmp, 0)) {
3024 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3025} else {
3026 tmp_cc = ANDQI (tmp_cc, 3);
3027}
3028}
3029 {
3030 SI opval = tmp_tmp;
3031 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3032 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3033 }
3034 {
3035 UQI opval = tmp_cc;
3036 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3037 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3038 }
3039}
3040
3041 return vpc;
3042#undef FLD
3043}
3044
3045/* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3046
3047static SEM_PC
3048SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3049{
3050#define FLD(f) abuf->fields.sfmt_smulcc.f
3051 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3052 int UNUSED written = 0;
3053 IADDR UNUSED pc = abuf->addr;
3054 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3055
3056{
3057 QI tmp_cc;
3058if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3059 tmp_cc = ANDQI (tmp_cc, 7);
3060} else {
3061 tmp_cc = ORQI (tmp_cc, 8);
3062}
3063if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3064 tmp_cc = ANDQI (tmp_cc, 11);
3065} else {
3066 tmp_cc = ORQI (tmp_cc, 4);
3067}
3068if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3069 tmp_cc = ANDQI (tmp_cc, 13);
3070} else {
3071 tmp_cc = ORQI (tmp_cc, 2);
3072}
3073if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3074 tmp_cc = ANDQI (tmp_cc, 14);
3075} else {
3076 tmp_cc = ORQI (tmp_cc, 1);
3077}
3078 {
3079 UQI opval = tmp_cc;
3080 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3081 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3082 }
3083}
3084
3085 return vpc;
3086#undef FLD
3087}
3088
3089/* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3090
3091static SEM_PC
3092SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3093{
3094#define FLD(f) abuf->fields.sfmt_smulcc.f
3095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3096 int UNUSED written = 0;
3097 IADDR UNUSED pc = abuf->addr;
3098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3099
3100{
3101 QI tmp_cc;
3102 tmp_cc = 0;
3103if (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)) {
3104 tmp_cc = ANDQI (tmp_cc, 14);
3105} else {
3106 tmp_cc = ORQI (tmp_cc, 1);
3107}
3108 {
3109 UQI opval = tmp_cc;
3110 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3111 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3112 }
3113}
3114
3115 return vpc;
3116#undef FLD
3117}
3118
3119/* setlo: setlo$pack $ulo16,$GRklo */
3120
3121static SEM_PC
3122SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3123{
3124#define FLD(f) abuf->fields.sfmt_setlo.f
3125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3126 int UNUSED written = 0;
3127 IADDR UNUSED pc = abuf->addr;
3128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3129
3130 {
3131 UHI opval = FLD (f_u16);
3132 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3133 TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3134 }
3135
3136 return vpc;
3137#undef FLD
3138}
3139
3140/* sethi: sethi$pack $uhi16,$GRkhi */
3141
3142static SEM_PC
3143SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3144{
3145#define FLD(f) abuf->fields.sfmt_sethi.f
3146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3147 int UNUSED written = 0;
3148 IADDR UNUSED pc = abuf->addr;
3149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3150
3151 {
3152 UHI opval = FLD (f_u16);
3153 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3154 TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3155 }
3156
3157 return vpc;
3158#undef FLD
3159}
3160
3161/* setlos: setlos$pack $slo16,$GRk */
3162
3163static SEM_PC
3164SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3165{
3166#define FLD(f) abuf->fields.sfmt_setlos.f
3167 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3168 int UNUSED written = 0;
3169 IADDR UNUSED pc = abuf->addr;
3170 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3171
3172 {
3173 SI opval = FLD (f_s16);
3174 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3175 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3176 }
3177
3178 return vpc;
3179#undef FLD
3180}
3181
3182/* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3183
3184static SEM_PC
3185SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3186{
3187#define FLD(f) abuf->fields.sfmt_addcc.f
3188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3189 int UNUSED written = 0;
3190 IADDR UNUSED pc = abuf->addr;
3191 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3192
3193 {
3194 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3195 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3196 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3197 }
3198
3199 return vpc;
3200#undef FLD
3201}
3202
3203/* ldub: ldub$pack @($GRi,$GRj),$GRk */
3204
3205static SEM_PC
3206SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3207{
3208#define FLD(f) abuf->fields.sfmt_addcc.f
3209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3210 int UNUSED written = 0;
3211 IADDR UNUSED pc = abuf->addr;
3212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3213
3214 {
3215 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3216 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3217 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3218 }
3219
3220 return vpc;
3221#undef FLD
3222}
3223
3224/* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3225
3226static SEM_PC
3227SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3228{
3229#define FLD(f) abuf->fields.sfmt_addcc.f
3230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3231 int UNUSED written = 0;
3232 IADDR UNUSED pc = abuf->addr;
3233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3234
3235 {
3236 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3237 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3239 }
3240
3241 return vpc;
3242#undef FLD
3243}
3244
3245/* lduh: lduh$pack @($GRi,$GRj),$GRk */
3246
3247static SEM_PC
3248SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3249{
3250#define FLD(f) abuf->fields.sfmt_addcc.f
3251 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3252 int UNUSED written = 0;
3253 IADDR UNUSED pc = abuf->addr;
3254 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3255
3256 {
3257 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3258 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3259 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3260 }
3261
3262 return vpc;
3263#undef FLD
3264}
3265
79e59fe6 3266/* ld: ld$pack $ldann($GRi,$GRj),$GRk */
b34f6357
DB
3267
3268static SEM_PC
3269SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3270{
3271#define FLD(f) abuf->fields.sfmt_addcc.f
3272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3273 int UNUSED written = 0;
3274 IADDR UNUSED pc = abuf->addr;
3275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3276
3277 {
3278 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3279 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3280 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3281 }
3282
3283 return vpc;
3284#undef FLD
3285}
3286
3287/* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3288
3289static SEM_PC
3290SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3291{
3292#define FLD(f) abuf->fields.sfmt_cldbfu.f
3293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3294 int UNUSED written = 0;
3295 IADDR UNUSED pc = abuf->addr;
3296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3297
3298 {
3299 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3300 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3301 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3302 }
3303
3304 return vpc;
3305#undef FLD
3306}
3307
3308/* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3309
3310static SEM_PC
3311SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3312{
3313#define FLD(f) abuf->fields.sfmt_cldbfu.f
3314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3315 int UNUSED written = 0;
3316 IADDR UNUSED pc = abuf->addr;
3317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3318
3319 {
3320 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3321 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3322 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3323 }
3324
3325 return vpc;
3326#undef FLD
3327}
3328
3329/* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3330
3331static SEM_PC
3332SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3333{
3334#define FLD(f) abuf->fields.sfmt_cldbfu.f
3335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3336 int UNUSED written = 0;
3337 IADDR UNUSED pc = abuf->addr;
3338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3339
3340 {
3341 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3342 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3343 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3344 }
3345
3346 return vpc;
3347#undef FLD
3348}
3349
3350/* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3351
3352static SEM_PC
3353SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3354{
3355#define FLD(f) abuf->fields.sfmt_ldcu.f
3356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3357 int UNUSED written = 0;
3358 IADDR UNUSED pc = abuf->addr;
3359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3360
3361 {
3362 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3363 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3364 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3365 }
3366
3367 return vpc;
3368#undef FLD
3369}
3370
3371/* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3372
3373static SEM_PC
3374SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3375{
3376#define FLD(f) abuf->fields.sfmt_addcc.f
3377 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3378 int UNUSED written = 0;
3379 IADDR UNUSED pc = abuf->addr;
3380 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3381
3382{
3383 BI tmp_do_op;
3384 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3385if (tmp_do_op) {
3386 {
3387 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3388 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3389 written |= (1 << 6);
3390 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3391 }
3392}
3393}
3394
3395 abuf->written = written;
3396 return vpc;
3397#undef FLD
3398}
3399
3400/* nldub: nldub$pack @($GRi,$GRj),$GRk */
3401
3402static SEM_PC
3403SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3404{
3405#define FLD(f) abuf->fields.sfmt_addcc.f
3406 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3407 int UNUSED written = 0;
3408 IADDR UNUSED pc = abuf->addr;
3409 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3410
3411{
3412 BI tmp_do_op;
3413 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3414if (tmp_do_op) {
3415 {
3416 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3417 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3418 written |= (1 << 6);
3419 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3420 }
3421}
3422}
3423
3424 abuf->written = written;
3425 return vpc;
3426#undef FLD
3427}
3428
3429/* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3430
3431static SEM_PC
3432SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3433{
3434#define FLD(f) abuf->fields.sfmt_addcc.f
3435 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3436 int UNUSED written = 0;
3437 IADDR UNUSED pc = abuf->addr;
3438 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3439
3440{
3441 BI tmp_do_op;
3442 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3443if (tmp_do_op) {
3444 {
3445 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3446 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3447 written |= (1 << 6);
3448 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3449 }
3450}
3451}
3452
3453 abuf->written = written;
3454 return vpc;
3455#undef FLD
3456}
3457
3458/* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3459
3460static SEM_PC
3461SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3462{
3463#define FLD(f) abuf->fields.sfmt_addcc.f
3464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3465 int UNUSED written = 0;
3466 IADDR UNUSED pc = abuf->addr;
3467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3468
3469{
3470 BI tmp_do_op;
3471 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3472if (tmp_do_op) {
3473 {
3474 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3475 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3476 written |= (1 << 6);
3477 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3478 }
3479}
3480}
3481
3482 abuf->written = written;
3483 return vpc;
3484#undef FLD
3485}
3486
3487/* nld: nld$pack @($GRi,$GRj),$GRk */
3488
3489static SEM_PC
3490SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3491{
3492#define FLD(f) abuf->fields.sfmt_addcc.f
3493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3494 int UNUSED written = 0;
3495 IADDR UNUSED pc = abuf->addr;
3496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3497
3498{
3499 BI tmp_do_op;
3500 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3501if (tmp_do_op) {
3502 {
3503 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3504 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3505 written |= (1 << 6);
3506 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3507 }
3508}
3509}
3510
3511 abuf->written = written;
3512 return vpc;
3513#undef FLD
3514}
3515
3516/* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3517
3518static SEM_PC
3519SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3520{
3521#define FLD(f) abuf->fields.sfmt_cldbfu.f
3522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3523 int UNUSED written = 0;
3524 IADDR UNUSED pc = abuf->addr;
3525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3526
3527{
3528 BI tmp_do_op;
3529 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3530if (tmp_do_op) {
3531 {
3532 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3533 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3534 written |= (1 << 6);
3535 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3536 }
3537}
3538}
3539
3540 abuf->written = written;
3541 return vpc;
3542#undef FLD
3543}
3544
3545/* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3546
3547static SEM_PC
3548SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3549{
3550#define FLD(f) abuf->fields.sfmt_cldbfu.f
3551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3552 int UNUSED written = 0;
3553 IADDR UNUSED pc = abuf->addr;
3554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3555
3556{
3557 BI tmp_do_op;
3558 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3559if (tmp_do_op) {
3560 {
3561 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3562 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3563 written |= (1 << 6);
3564 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3565 }
3566}
3567}
3568
3569 abuf->written = written;
3570 return vpc;
3571#undef FLD
3572}
3573
3574/* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3575
3576static SEM_PC
3577SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3578{
3579#define FLD(f) abuf->fields.sfmt_cldbfu.f
3580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3581 int UNUSED written = 0;
3582 IADDR UNUSED pc = abuf->addr;
3583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3584
3585{
3586 BI tmp_do_op;
3587 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3588if (tmp_do_op) {
3589 {
3590 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3591 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3592 written |= (1 << 6);
3593 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3594 }
3595}
3596}
3597
3598 abuf->written = written;
3599 return vpc;
3600#undef FLD
3601}
3602
79e59fe6 3603/* ldd: ldd$pack $lddann($GRi,$GRj),$GRdoublek */
b34f6357
DB
3604
3605static SEM_PC
3606SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3607{
3608#define FLD(f) abuf->fields.sfmt_smulcc.f
3609 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3610 int UNUSED written = 0;
3611 IADDR UNUSED pc = abuf->addr;
3612 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3613
3614{
3615 SI tmp_address;
3616if (NESI (FLD (f_GRk), 0)) {
3617{
3618 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3619 {
3620 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3621 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3622 written |= (1 << 4);
3623 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3624 }
3625}
3626}
3627}
3628
3629 abuf->written = written;
3630 return vpc;
3631#undef FLD
3632}
3633
3634/* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3635
3636static SEM_PC
3637SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3638{
3639#define FLD(f) abuf->fields.sfmt_clddfu.f
3640 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3641 int UNUSED written = 0;
3642 IADDR UNUSED pc = abuf->addr;
3643 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3644
3645{
3646 SI tmp_address;
3647{
3648 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3649 {
3650 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3651 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3652 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3653 }
3654}
3655}
3656
3657 return vpc;
3658#undef FLD
3659}
3660
3661/* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3662
3663static SEM_PC
3664SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3665{
3666#define FLD(f) abuf->fields.sfmt_lddcu.f
3667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3668 int UNUSED written = 0;
3669 IADDR UNUSED pc = abuf->addr;
3670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3671
3672{
3673 SI tmp_address;
3674{
3675 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3676 {
3677 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3678 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3679 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3680 }
3681}
3682}
3683
3684 return vpc;
3685#undef FLD
3686}
3687
3688/* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3689
3690static SEM_PC
3691SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3692{
3693#define FLD(f) abuf->fields.sfmt_smulcc.f
3694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3695 int UNUSED written = 0;
3696 IADDR UNUSED pc = abuf->addr;
3697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3698
3699{
3700 SI tmp_address;
3701{
3702 BI tmp_do_op;
3703 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3704if (tmp_do_op) {
3705if (NESI (FLD (f_GRk), 0)) {
3706{
3707 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3708 {
3709 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3710 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3711 written |= (1 << 6);
3712 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3713 }
3714}
3715}
3716}
3717}
3718}
3719
3720 abuf->written = written;
3721 return vpc;
3722#undef FLD
3723}
3724
3725/* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3726
3727static SEM_PC
3728SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3729{
3730#define FLD(f) abuf->fields.sfmt_clddfu.f
3731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3732 int UNUSED written = 0;
3733 IADDR UNUSED pc = abuf->addr;
3734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3735
3736{
3737 SI tmp_address;
3738{
3739 BI tmp_do_op;
3740 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3741if (tmp_do_op) {
3742{
3743 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3744 {
3745 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3746 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3747 written |= (1 << 6);
3748 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3749 }
3750}
3751}
3752}
3753}
3754
3755 abuf->written = written;
3756 return vpc;
3757#undef FLD
3758}
3759
3760/* ldq: ldq$pack @($GRi,$GRj),$GRk */
3761
3762static SEM_PC
3763SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3764{
3765#define FLD(f) abuf->fields.sfmt_smulcc.f
3766 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3767 int UNUSED written = 0;
3768 IADDR UNUSED pc = abuf->addr;
3769 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3770
3771{
3772 SI tmp_address;
3773{
3774 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3775frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3776}
3777}
3778
3779 return vpc;
3780#undef FLD
3781}
3782
3783/* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3784
3785static SEM_PC
3786SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3787{
3788#define FLD(f) abuf->fields.sfmt_cstdfu.f
3789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3790 int UNUSED written = 0;
3791 IADDR UNUSED pc = abuf->addr;
3792 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3793
3794{
3795 SI tmp_address;
3796{
3797 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3798frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3799}
3800}
3801
3802 return vpc;
3803#undef FLD
3804}
3805
3806/* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3807
3808static SEM_PC
3809SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3810{
3811#define FLD(f) abuf->fields.sfmt_stdcu.f
3812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3813 int UNUSED written = 0;
3814 IADDR UNUSED pc = abuf->addr;
3815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3816
3817{
3818 SI tmp_address;
3819{
3820 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3821frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3822}
3823}
3824
3825 return vpc;
3826#undef FLD
3827}
3828
3829/* nldq: nldq$pack @($GRi,$GRj),$GRk */
3830
3831static SEM_PC
3832SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3833{
3834#define FLD(f) abuf->fields.sfmt_smulcc.f
3835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3836 int UNUSED written = 0;
3837 IADDR UNUSED pc = abuf->addr;
3838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3839
3840{
3841 SI tmp_address;
3842{
3843 BI tmp_do_op;
3844 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3845if (tmp_do_op) {
3846{
3847 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3848frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3849}
3850}
3851}
3852}
3853
3854 return vpc;
3855#undef FLD
3856}
3857
3858/* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3859
3860static SEM_PC
3861SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3862{
3863#define FLD(f) abuf->fields.sfmt_cstdfu.f
3864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3865 int UNUSED written = 0;
3866 IADDR UNUSED pc = abuf->addr;
3867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3868
3869{
3870 SI tmp_address;
3871{
3872 BI tmp_do_op;
3873 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3874if (tmp_do_op) {
3875{
3876 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3877frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3878}
3879}
3880}
3881}
3882
3883 return vpc;
3884#undef FLD
3885}
3886
3887/* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3888
3889static SEM_PC
3890SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3891{
3892#define FLD(f) abuf->fields.sfmt_cldsbu.f
3893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3894 int UNUSED written = 0;
3895 IADDR UNUSED pc = abuf->addr;
3896 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3897
3898{
3899 USI tmp_address;
3900 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3901 {
3902 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3903 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3904 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3905 }
3906if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3907{
3908 {
3909 SI opval = tmp_address;
3910 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3911 written |= (1 << 5);
3912 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3913 }
3914frvbf_force_update (current_cpu);
3915}
3916}
3917}
3918
3919 abuf->written = written;
3920 return vpc;
3921#undef FLD
3922}
3923
3924/* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3925
3926static SEM_PC
3927SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3928{
3929#define FLD(f) abuf->fields.sfmt_cldsbu.f
3930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3931 int UNUSED written = 0;
3932 IADDR UNUSED pc = abuf->addr;
3933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3934
3935{
3936 USI tmp_address;
3937 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3938 {
3939 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3940 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3941 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3942 }
3943if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3944{
3945 {
3946 SI opval = tmp_address;
3947 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3948 written |= (1 << 5);
3949 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3950 }
3951frvbf_force_update (current_cpu);
3952}
3953}
3954}
3955
3956 abuf->written = written;
3957 return vpc;
3958#undef FLD
3959}
3960
3961/* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3962
3963static SEM_PC
3964SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3965{
3966#define FLD(f) abuf->fields.sfmt_cldsbu.f
3967 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3968 int UNUSED written = 0;
3969 IADDR UNUSED pc = abuf->addr;
3970 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3971
3972{
3973 USI tmp_address;
3974 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3975 {
3976 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3977 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3978 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3979 }
3980if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3981{
3982 {
3983 SI opval = tmp_address;
3984 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3985 written |= (1 << 5);
3986 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3987 }
3988frvbf_force_update (current_cpu);
3989}
3990}
3991}
3992
3993 abuf->written = written;
3994 return vpc;
3995#undef FLD
3996}
3997
3998/* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
3999
4000static SEM_PC
4001SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4002{
4003#define FLD(f) abuf->fields.sfmt_cldsbu.f
4004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4005 int UNUSED written = 0;
4006 IADDR UNUSED pc = abuf->addr;
4007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4008
4009{
4010 USI tmp_address;
4011 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4012 {
4013 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4014 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4015 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4016 }
4017if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4018{
4019 {
4020 SI opval = tmp_address;
4021 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4022 written |= (1 << 5);
4023 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4024 }
4025frvbf_force_update (current_cpu);
4026}
4027}
4028}
4029
4030 abuf->written = written;
4031 return vpc;
4032#undef FLD
4033}
4034
4035/* ldu: ldu$pack @($GRi,$GRj),$GRk */
4036
4037static SEM_PC
4038SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4039{
4040#define FLD(f) abuf->fields.sfmt_cldsbu.f
4041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4042 int UNUSED written = 0;
4043 IADDR UNUSED pc = abuf->addr;
4044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4045
4046{
4047 USI tmp_address;
4048 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4049 {
4050 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4051 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4052 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4053 }
4054if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4055{
4056 {
4057 SI opval = tmp_address;
4058 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4059 written |= (1 << 5);
4060 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4061 }
4062frvbf_force_update (current_cpu);
4063}
4064}
4065}
4066
4067 abuf->written = written;
4068 return vpc;
4069#undef FLD
4070}
4071
4072/* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4073
4074static SEM_PC
4075SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4076{
4077#define FLD(f) abuf->fields.sfmt_cldsbu.f
4078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4079 int UNUSED written = 0;
4080 IADDR UNUSED pc = abuf->addr;
4081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4082
4083{
4084 BI tmp_do_op;
4085 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4086if (tmp_do_op) {
4087{
4088 USI tmp_address;
4089 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4090 {
4091 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4092 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4093 written |= (1 << 7);
4094 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4095 }
4096if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4097{
4098 {
4099 SI opval = tmp_address;
4100 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4101 written |= (1 << 6);
4102 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4103 }
4104frvbf_force_update (current_cpu);
4105}
4106}
4107}
4108}
4109}
4110
4111 abuf->written = written;
4112 return vpc;
4113#undef FLD
4114}
4115
4116/* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4117
4118static SEM_PC
4119SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4120{
4121#define FLD(f) abuf->fields.sfmt_cldsbu.f
4122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4123 int UNUSED written = 0;
4124 IADDR UNUSED pc = abuf->addr;
4125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4126
4127{
4128 BI tmp_do_op;
4129 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4130if (tmp_do_op) {
4131{
4132 USI tmp_address;
4133 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4134 {
4135 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4136 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4137 written |= (1 << 7);
4138 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4139 }
4140if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4141{
4142 {
4143 SI opval = tmp_address;
4144 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4145 written |= (1 << 6);
4146 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4147 }
4148frvbf_force_update (current_cpu);
4149}
4150}
4151}
4152}
4153}
4154
4155 abuf->written = written;
4156 return vpc;
4157#undef FLD
4158}
4159
4160/* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4161
4162static SEM_PC
4163SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4164{
4165#define FLD(f) abuf->fields.sfmt_cldsbu.f
4166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4167 int UNUSED written = 0;
4168 IADDR UNUSED pc = abuf->addr;
4169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4170
4171{
4172 BI tmp_do_op;
4173 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4174if (tmp_do_op) {
4175{
4176 USI tmp_address;
4177 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4178 {
4179 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4180 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4181 written |= (1 << 7);
4182 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4183 }
4184if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4185{
4186 {
4187 SI opval = tmp_address;
4188 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4189 written |= (1 << 6);
4190 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4191 }
4192frvbf_force_update (current_cpu);
4193}
4194}
4195}
4196}
4197}
4198
4199 abuf->written = written;
4200 return vpc;
4201#undef FLD
4202}
4203
4204/* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4205
4206static SEM_PC
4207SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4208{
4209#define FLD(f) abuf->fields.sfmt_cldsbu.f
4210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4211 int UNUSED written = 0;
4212 IADDR UNUSED pc = abuf->addr;
4213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4214
4215{
4216 BI tmp_do_op;
4217 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4218if (tmp_do_op) {
4219{
4220 USI tmp_address;
4221 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4222 {
4223 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4224 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4225 written |= (1 << 7);
4226 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4227 }
4228if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4229{
4230 {
4231 SI opval = tmp_address;
4232 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4233 written |= (1 << 6);
4234 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4235 }
4236frvbf_force_update (current_cpu);
4237}
4238}
4239}
4240}
4241}
4242
4243 abuf->written = written;
4244 return vpc;
4245#undef FLD
4246}
4247
4248/* nldu: nldu$pack @($GRi,$GRj),$GRk */
4249
4250static SEM_PC
4251SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4252{
4253#define FLD(f) abuf->fields.sfmt_cldsbu.f
4254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4255 int UNUSED written = 0;
4256 IADDR UNUSED pc = abuf->addr;
4257 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4258
4259{
4260 BI tmp_do_op;
4261 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4262if (tmp_do_op) {
4263{
4264 USI tmp_address;
4265 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4266 {
4267 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4268 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4269 written |= (1 << 7);
4270 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4271 }
4272if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4273{
4274 {
4275 SI opval = tmp_address;
4276 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4277 written |= (1 << 6);
4278 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4279 }
4280frvbf_force_update (current_cpu);
4281}
4282}
4283}
4284}
4285}
4286
4287 abuf->written = written;
4288 return vpc;
4289#undef FLD
4290}
4291
4292/* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4293
4294static SEM_PC
4295SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4296{
4297#define FLD(f) abuf->fields.sfmt_cldbfu.f
4298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4299 int UNUSED written = 0;
4300 IADDR UNUSED pc = abuf->addr;
4301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4302
4303{
4304 USI tmp_address;
4305 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4306 {
4307 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4308 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4309 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4310 }
4311 {
4312 SI opval = tmp_address;
4313 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4314 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4315 }
4316frvbf_force_update (current_cpu);
4317}
4318
4319 return vpc;
4320#undef FLD
4321}
4322
4323/* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4324
4325static SEM_PC
4326SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4327{
4328#define FLD(f) abuf->fields.sfmt_cldbfu.f
4329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4330 int UNUSED written = 0;
4331 IADDR UNUSED pc = abuf->addr;
4332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4333
4334{
4335 USI tmp_address;
4336 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4337 {
4338 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4339 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4340 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4341 }
4342 {
4343 SI opval = tmp_address;
4344 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4345 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4346 }
4347frvbf_force_update (current_cpu);
4348}
4349
4350 return vpc;
4351#undef FLD
4352}
4353
4354/* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4355
4356static SEM_PC
4357SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4358{
4359#define FLD(f) abuf->fields.sfmt_cldbfu.f
4360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4361 int UNUSED written = 0;
4362 IADDR UNUSED pc = abuf->addr;
4363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4364
4365{
4366 USI tmp_address;
4367 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4368 {
4369 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4370 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4371 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4372 }
4373 {
4374 SI opval = tmp_address;
4375 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4376 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4377 }
4378frvbf_force_update (current_cpu);
4379}
4380
4381 return vpc;
4382#undef FLD
4383}
4384
4385/* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4386
4387static SEM_PC
4388SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4389{
4390#define FLD(f) abuf->fields.sfmt_ldcu.f
4391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4392 int UNUSED written = 0;
4393 IADDR UNUSED pc = abuf->addr;
4394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4395
4396{
4397 USI tmp_address;
4398 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4399 {
4400 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4401 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4402 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4403 }
4404 {
4405 SI opval = tmp_address;
4406 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4407 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4408 }
4409frvbf_force_update (current_cpu);
4410}
4411
4412 return vpc;
4413#undef FLD
4414}
4415
4416/* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4417
4418static SEM_PC
4419SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4420{
4421#define FLD(f) abuf->fields.sfmt_cldbfu.f
4422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4423 int UNUSED written = 0;
4424 IADDR UNUSED pc = abuf->addr;
4425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4426
4427{
4428 BI tmp_do_op;
4429 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4430if (tmp_do_op) {
4431{
4432 USI tmp_address;
4433 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4434 {
4435 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4436 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4437 written |= (1 << 6);
4438 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4439 }
4440 {
4441 SI opval = tmp_address;
4442 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4443 written |= (1 << 7);
4444 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4445 }
4446frvbf_force_update (current_cpu);
4447}
4448}
4449}
4450
4451 abuf->written = written;
4452 return vpc;
4453#undef FLD
4454}
4455
4456/* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4457
4458static SEM_PC
4459SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4460{
4461#define FLD(f) abuf->fields.sfmt_cldbfu.f
4462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4463 int UNUSED written = 0;
4464 IADDR UNUSED pc = abuf->addr;
4465 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4466
4467{
4468 BI tmp_do_op;
4469 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4470if (tmp_do_op) {
4471{
4472 USI tmp_address;
4473 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4474 {
4475 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4476 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4477 written |= (1 << 6);
4478 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4479 }
4480 {
4481 SI opval = tmp_address;
4482 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4483 written |= (1 << 7);
4484 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4485 }
4486frvbf_force_update (current_cpu);
4487}
4488}
4489}
4490
4491 abuf->written = written;
4492 return vpc;
4493#undef FLD
4494}
4495
4496/* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4497
4498static SEM_PC
4499SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4500{
4501#define FLD(f) abuf->fields.sfmt_cldbfu.f
4502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4503 int UNUSED written = 0;
4504 IADDR UNUSED pc = abuf->addr;
4505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4506
4507{
4508 BI tmp_do_op;
4509 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4510if (tmp_do_op) {
4511{
4512 USI tmp_address;
4513 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4514 {
4515 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4516 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4517 written |= (1 << 6);
4518 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4519 }
4520 {
4521 SI opval = tmp_address;
4522 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4523 written |= (1 << 7);
4524 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4525 }
4526frvbf_force_update (current_cpu);
4527}
4528}
4529}
4530
4531 abuf->written = written;
4532 return vpc;
4533#undef FLD
4534}
4535
4536/* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4537
4538static SEM_PC
4539SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4540{
4541#define FLD(f) abuf->fields.sfmt_clddu.f
4542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4543 int UNUSED written = 0;
4544 IADDR UNUSED pc = abuf->addr;
4545 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4546
4547{
4548 SI tmp_address;
4549if (NESI (FLD (f_GRk), 0)) {
4550{
4551 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4552 {
4553 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4554 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4555 written |= (1 << 5);
4556 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4557 }
4558}
4559}
4560if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4561{
4562 {
4563 SI opval = tmp_address;
4564 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4565 written |= (1 << 6);
4566 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4567 }
4568frvbf_force_update (current_cpu);
4569}
4570}
4571}
4572
4573 abuf->written = written;
4574 return vpc;
4575#undef FLD
4576}
4577
4578/* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4579
4580static SEM_PC
4581SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4582{
4583#define FLD(f) abuf->fields.sfmt_clddu.f
4584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4585 int UNUSED written = 0;
4586 IADDR UNUSED pc = abuf->addr;
4587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4588
4589{
4590 BI tmp_do_op;
4591 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4592if (tmp_do_op) {
4593{
4594 SI tmp_address;
4595if (NESI (FLD (f_GRk), 0)) {
4596{
4597 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4598 {
4599 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4600 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4601 written |= (1 << 6);
4602 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4603 }
4604}
4605}
4606if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4607{
4608 {
4609 SI opval = tmp_address;
4610 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4611 written |= (1 << 7);
4612 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4613 }
4614frvbf_force_update (current_cpu);
4615}
4616}
4617}
4618}
4619}
4620
4621 abuf->written = written;
4622 return vpc;
4623#undef FLD
4624}
4625
4626/* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4627
4628static SEM_PC
4629SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4630{
4631#define FLD(f) abuf->fields.sfmt_clddfu.f
4632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4633 int UNUSED written = 0;
4634 IADDR UNUSED pc = abuf->addr;
4635 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4636
4637{
4638 SI tmp_address;
4639{
4640 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4641 {
4642 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4643 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4644 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4645 }
4646}
4647 {
4648 SI opval = tmp_address;
4649 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4650 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4651 }
4652frvbf_force_update (current_cpu);
4653}
4654
4655 return vpc;
4656#undef FLD
4657}
4658
4659/* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4660
4661static SEM_PC
4662SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4663{
4664#define FLD(f) abuf->fields.sfmt_lddcu.f
4665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4666 int UNUSED written = 0;
4667 IADDR UNUSED pc = abuf->addr;
4668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4669
4670{
4671 SI tmp_address;
4672{
4673 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4674 {
4675 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4676 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4677 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4678 }
4679}
4680 {
4681 SI opval = tmp_address;
4682 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4683 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4684 }
4685frvbf_force_update (current_cpu);
4686}
4687
4688 return vpc;
4689#undef FLD
4690}
4691
4692/* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4693
4694static SEM_PC
4695SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4696{
4697#define FLD(f) abuf->fields.sfmt_clddfu.f
4698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4699 int UNUSED written = 0;
4700 IADDR UNUSED pc = abuf->addr;
4701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4702
4703{
4704 BI tmp_do_op;
4705 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4706if (tmp_do_op) {
4707{
4708 SI tmp_address;
4709{
4710 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4711 {
4712 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4713 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4714 written |= (1 << 6);
4715 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4716 }
4717}
4718 {
4719 SI opval = tmp_address;
4720 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4721 written |= (1 << 7);
4722 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4723 }
4724frvbf_force_update (current_cpu);
4725}
4726}
4727}
4728
4729 abuf->written = written;
4730 return vpc;
4731#undef FLD
4732}
4733
4734/* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4735
4736static SEM_PC
4737SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4738{
4739#define FLD(f) abuf->fields.sfmt_cstdu.f
4740 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4741 int UNUSED written = 0;
4742 IADDR UNUSED pc = abuf->addr;
4743 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4744
4745{
4746 SI tmp_address;
4747{
4748 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4749frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4750}
4751if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4752{
4753 {
4754 SI opval = tmp_address;
4755 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4756 written |= (1 << 5);
4757 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4758 }
4759frvbf_force_update (current_cpu);
4760}
4761}
4762}
4763
4764 abuf->written = written;
4765 return vpc;
4766#undef FLD
4767}
4768
4769/* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4770
4771static SEM_PC
4772SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4773{
4774#define FLD(f) abuf->fields.sfmt_cstdu.f
4775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4776 int UNUSED written = 0;
4777 IADDR UNUSED pc = abuf->addr;
4778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4779
4780{
4781 BI tmp_do_op;
4782 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4783if (tmp_do_op) {
4784{
4785 SI tmp_address;
4786{
4787 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4788frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4789}
4790if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4791{
4792 {
4793 SI opval = tmp_address;
4794 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4795 written |= (1 << 6);
4796 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4797 }
4798frvbf_force_update (current_cpu);
4799}
4800}
4801}
4802}
4803}
4804
4805 abuf->written = written;
4806 return vpc;
4807#undef FLD
4808}
4809
4810/* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4811
4812static SEM_PC
4813SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4814{
4815#define FLD(f) abuf->fields.sfmt_cstdfu.f
4816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4817 int UNUSED written = 0;
4818 IADDR UNUSED pc = abuf->addr;
4819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4820
4821{
4822 SI tmp_address;
4823{
4824 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4825frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4826}
4827 {
4828 SI opval = tmp_address;
4829 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4830 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4831 }
4832frvbf_force_update (current_cpu);
4833}
4834
4835 return vpc;
4836#undef FLD
4837}
4838
4839/* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4840
4841static SEM_PC
4842SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4843{
4844#define FLD(f) abuf->fields.sfmt_stdcu.f
4845 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4846 int UNUSED written = 0;
4847 IADDR UNUSED pc = abuf->addr;
4848 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4849
4850{
4851 SI tmp_address;
4852{
4853 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4854frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4855}
4856 {
4857 SI opval = tmp_address;
4858 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4859 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4860 }
4861frvbf_force_update (current_cpu);
4862}
4863
4864 return vpc;
4865#undef FLD
4866}
4867
4868/* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4869
4870static SEM_PC
4871SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4872{
4873#define FLD(f) abuf->fields.sfmt_cstdfu.f
4874 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4875 int UNUSED written = 0;
4876 IADDR UNUSED pc = abuf->addr;
4877 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4878
4879{
4880 BI tmp_do_op;
4881 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4882if (tmp_do_op) {
4883{
4884 SI tmp_address;
4885{
4886 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4887frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4888}
4889 {
4890 SI opval = tmp_address;
4891 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4892 written |= (1 << 6);
4893 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4894 }
4895frvbf_force_update (current_cpu);
4896}
4897}
4898}
4899
4900 abuf->written = written;
4901 return vpc;
4902#undef FLD
4903}
4904
4905/* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4906
4907static SEM_PC
4908SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4909{
4910#define FLD(f) abuf->fields.sfmt_swapi.f
4911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4912 int UNUSED written = 0;
4913 IADDR UNUSED pc = abuf->addr;
4914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4915
4916 {
4917 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4918 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4919 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4920 }
4921
4922 return vpc;
4923#undef FLD
4924}
4925
4926/* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4927
4928static SEM_PC
4929SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4930{
4931#define FLD(f) abuf->fields.sfmt_swapi.f
4932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4933 int UNUSED written = 0;
4934 IADDR UNUSED pc = abuf->addr;
4935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4936
4937 {
4938 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4940 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4941 }
4942
4943 return vpc;
4944#undef FLD
4945}
4946
4947/* ldi: ldi$pack @($GRi,$d12),$GRk */
4948
4949static SEM_PC
4950SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4951{
4952#define FLD(f) abuf->fields.sfmt_swapi.f
4953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4954 int UNUSED written = 0;
4955 IADDR UNUSED pc = abuf->addr;
4956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4957
4958 {
4959 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4960 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4961 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4962 }
4963
4964 return vpc;
4965#undef FLD
4966}
4967
4968/* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4969
4970static SEM_PC
4971SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4972{
4973#define FLD(f) abuf->fields.sfmt_swapi.f
4974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4975 int UNUSED written = 0;
4976 IADDR UNUSED pc = abuf->addr;
4977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4978
4979 {
4980 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4981 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4982 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4983 }
4984
4985 return vpc;
4986#undef FLD
4987}
4988
4989/* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4990
4991static SEM_PC
4992SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4993{
4994#define FLD(f) abuf->fields.sfmt_swapi.f
4995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4996 int UNUSED written = 0;
4997 IADDR UNUSED pc = abuf->addr;
4998 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4999
5000 {
5001 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5002 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5003 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5004 }
5005
5006 return vpc;
5007#undef FLD
5008}
5009
5010/* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5011
5012static SEM_PC
5013SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5014{
5015#define FLD(f) abuf->fields.sfmt_ldbfi.f
5016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5017 int UNUSED written = 0;
5018 IADDR UNUSED pc = abuf->addr;
5019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5020
5021 {
5022 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5023 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5024 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5025 }
5026
5027 return vpc;
5028#undef FLD
5029}
5030
5031/* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5032
5033static SEM_PC
5034SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5035{
5036#define FLD(f) abuf->fields.sfmt_ldbfi.f
5037 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5038 int UNUSED written = 0;
5039 IADDR UNUSED pc = abuf->addr;
5040 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5041
5042 {
5043 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5044 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5045 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5046 }
5047
5048 return vpc;
5049#undef FLD
5050}
5051
5052/* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5053
5054static SEM_PC
5055SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5056{
5057#define FLD(f) abuf->fields.sfmt_ldbfi.f
5058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5059 int UNUSED written = 0;
5060 IADDR UNUSED pc = abuf->addr;
5061 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5062
5063 {
5064 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5065 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5066 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5067 }
5068
5069 return vpc;
5070#undef FLD
5071}
5072
5073/* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5074
5075static SEM_PC
5076SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5077{
5078#define FLD(f) abuf->fields.sfmt_swapi.f
5079 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5080 int UNUSED written = 0;
5081 IADDR UNUSED pc = abuf->addr;
5082 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5083
5084{
5085 BI tmp_do_op;
5086 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5087if (tmp_do_op) {
5088 {
5089 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5090 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5091 written |= (1 << 5);
5092 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5093 }
5094}
5095}
5096
5097 abuf->written = written;
5098 return vpc;
5099#undef FLD
5100}
5101
5102/* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5103
5104static SEM_PC
5105SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5106{
5107#define FLD(f) abuf->fields.sfmt_swapi.f
5108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5109 int UNUSED written = 0;
5110 IADDR UNUSED pc = abuf->addr;
5111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5112
5113{
5114 BI tmp_do_op;
5115 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5116if (tmp_do_op) {
5117 {
5118 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5119 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5120 written |= (1 << 5);
5121 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5122 }
5123}
5124}
5125
5126 abuf->written = written;
5127 return vpc;
5128#undef FLD
5129}
5130
5131/* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5132
5133static SEM_PC
5134SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5135{
5136#define FLD(f) abuf->fields.sfmt_swapi.f
5137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5138 int UNUSED written = 0;
5139 IADDR UNUSED pc = abuf->addr;
5140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5141
5142{
5143 BI tmp_do_op;
5144 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5145if (tmp_do_op) {
5146 {
5147 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5148 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5149 written |= (1 << 5);
5150 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5151 }
5152}
5153}
5154
5155 abuf->written = written;
5156 return vpc;
5157#undef FLD
5158}
5159
5160/* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5161
5162static SEM_PC
5163SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5164{
5165#define FLD(f) abuf->fields.sfmt_swapi.f
5166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5167 int UNUSED written = 0;
5168 IADDR UNUSED pc = abuf->addr;
5169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5170
5171{
5172 BI tmp_do_op;
5173 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5174if (tmp_do_op) {
5175 {
5176 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5177 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5178 written |= (1 << 5);
5179 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5180 }
5181}
5182}
5183
5184 abuf->written = written;
5185 return vpc;
5186#undef FLD
5187}
5188
5189/* nldi: nldi$pack @($GRi,$d12),$GRk */
5190
5191static SEM_PC
5192SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5193{
5194#define FLD(f) abuf->fields.sfmt_swapi.f
5195 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5196 int UNUSED written = 0;
5197 IADDR UNUSED pc = abuf->addr;
5198 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5199
5200{
5201 BI tmp_do_op;
5202 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5203if (tmp_do_op) {
5204 {
5205 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5206 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5207 written |= (1 << 5);
5208 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5209 }
5210}
5211}
5212
5213 abuf->written = written;
5214 return vpc;
5215#undef FLD
5216}
5217
5218/* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5219
5220static SEM_PC
5221SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5222{
5223#define FLD(f) abuf->fields.sfmt_ldbfi.f
5224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5225 int UNUSED written = 0;
5226 IADDR UNUSED pc = abuf->addr;
5227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5228
5229{
5230 BI tmp_do_op;
5231 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5232if (tmp_do_op) {
5233 {
5234 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5235 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5236 written |= (1 << 5);
5237 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5238 }
5239}
5240}
5241
5242 abuf->written = written;
5243 return vpc;
5244#undef FLD
5245}
5246
5247/* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5248
5249static SEM_PC
5250SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5251{
5252#define FLD(f) abuf->fields.sfmt_ldbfi.f
5253 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5254 int UNUSED written = 0;
5255 IADDR UNUSED pc = abuf->addr;
5256 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5257
5258{
5259 BI tmp_do_op;
5260 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5261if (tmp_do_op) {
5262 {
5263 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5264 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5265 written |= (1 << 5);
5266 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5267 }
5268}
5269}
5270
5271 abuf->written = written;
5272 return vpc;
5273#undef FLD
5274}
5275
5276/* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5277
5278static SEM_PC
5279SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5280{
5281#define FLD(f) abuf->fields.sfmt_ldbfi.f
5282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5283 int UNUSED written = 0;
5284 IADDR UNUSED pc = abuf->addr;
5285 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5286
5287{
5288 BI tmp_do_op;
5289 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5290if (tmp_do_op) {
5291 {
5292 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5293 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5294 written |= (1 << 5);
5295 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5296 }
5297}
5298}
5299
5300 abuf->written = written;
5301 return vpc;
5302#undef FLD
5303}
5304
5305/* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5306
5307static SEM_PC
5308SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5309{
5310#define FLD(f) abuf->fields.sfmt_smuli.f
5311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5312 int UNUSED written = 0;
5313 IADDR UNUSED pc = abuf->addr;
5314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5315
5316{
5317 SI tmp_address;
5318if (NESI (FLD (f_GRk), 0)) {
5319{
5320 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5321 {
5322 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5323 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5324 written |= (1 << 4);
5325 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5326 }
5327}
5328}
5329}
5330
5331 abuf->written = written;
5332 return vpc;
5333#undef FLD
5334}
5335
5336/* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5337
5338static SEM_PC
5339SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5340{
5341#define FLD(f) abuf->fields.sfmt_lddfi.f
5342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5343 int UNUSED written = 0;
5344 IADDR UNUSED pc = abuf->addr;
5345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5346
5347{
5348 SI tmp_address;
5349{
5350 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5351 {
5352 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5353 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5354 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5355 }
5356}
5357}
5358
5359 return vpc;
5360#undef FLD
5361}
5362
5363/* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5364
5365static SEM_PC
5366SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5367{
5368#define FLD(f) abuf->fields.sfmt_smuli.f
5369 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5370 int UNUSED written = 0;
5371 IADDR UNUSED pc = abuf->addr;
5372 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5373
5374{
5375 SI tmp_address;
5376{
5377 BI tmp_do_op;
5378 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5379if (tmp_do_op) {
5380if (NESI (FLD (f_GRk), 0)) {
5381{
5382 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5383 {
5384 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5385 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5386 written |= (1 << 5);
5387 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5388 }
5389}
5390}
5391}
5392}
5393}
5394
5395 abuf->written = written;
5396 return vpc;
5397#undef FLD
5398}
5399
5400/* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5401
5402static SEM_PC
5403SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5404{
5405#define FLD(f) abuf->fields.sfmt_lddfi.f
5406 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5407 int UNUSED written = 0;
5408 IADDR UNUSED pc = abuf->addr;
5409 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5410
5411{
5412 SI tmp_address;
5413{
5414 BI tmp_do_op;
5415 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5416if (tmp_do_op) {
5417{
5418 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5419 {
5420 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5421 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5422 written |= (1 << 5);
5423 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5424 }
5425}
5426}
5427}
5428}
5429
5430 abuf->written = written;
5431 return vpc;
5432#undef FLD
5433}
5434
5435/* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5436
5437static SEM_PC
5438SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5439{
5440#define FLD(f) abuf->fields.sfmt_stdi.f
5441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5442 int UNUSED written = 0;
5443 IADDR UNUSED pc = abuf->addr;
5444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5445
5446{
5447 SI tmp_address;
5448{
5449 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5450frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5451}
5452}
5453
5454 return vpc;
5455#undef FLD
5456}
5457
5458/* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5459
5460static SEM_PC
5461SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5462{
5463#define FLD(f) abuf->fields.sfmt_stdfi.f
5464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5465 int UNUSED written = 0;
5466 IADDR UNUSED pc = abuf->addr;
5467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5468
5469{
5470 SI tmp_address;
5471{
5472 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5473frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5474}
5475}
5476
5477 return vpc;
5478#undef FLD
5479}
5480
b34f6357
DB
5481/* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5482
5483static SEM_PC
5484SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5485{
5486#define FLD(f) abuf->fields.sfmt_stdfi.f
5487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5488 int UNUSED written = 0;
5489 IADDR UNUSED pc = abuf->addr;
5490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5491
5492{
5493 SI tmp_address;
5494{
5495 BI tmp_do_op;
5496 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5497if (tmp_do_op) {
5498{
5499 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5500frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5501}
5502}
5503}
5504}
5505
5506 return vpc;
5507#undef FLD
5508}
5509
5510/* stb: stb$pack $GRk,@($GRi,$GRj) */
5511
5512static SEM_PC
5513SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5514{
5515#define FLD(f) abuf->fields.sfmt_cswap.f
5516 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5517 int UNUSED written = 0;
5518 IADDR UNUSED pc = abuf->addr;
5519 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5520
5521frvbf_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)));
5522
5523 return vpc;
5524#undef FLD
5525}
5526
5527/* sth: sth$pack $GRk,@($GRi,$GRj) */
5528
5529static SEM_PC
5530SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5531{
5532#define FLD(f) abuf->fields.sfmt_cswap.f
5533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5534 int UNUSED written = 0;
5535 IADDR UNUSED pc = abuf->addr;
5536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5537
5538frvbf_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)));
5539
5540 return vpc;
5541#undef FLD
5542}
5543
5544/* st: st$pack $GRk,@($GRi,$GRj) */
5545
5546static SEM_PC
5547SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5548{
5549#define FLD(f) abuf->fields.sfmt_cswap.f
5550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5551 int UNUSED written = 0;
5552 IADDR UNUSED pc = abuf->addr;
5553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5554
5555frvbf_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)));
5556
5557 return vpc;
5558#undef FLD
5559}
5560
5561/* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5562
5563static SEM_PC
5564SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5565{
5566#define FLD(f) abuf->fields.sfmt_cstbfu.f
5567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5568 int UNUSED written = 0;
5569 IADDR UNUSED pc = abuf->addr;
5570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5571
5572frvbf_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)));
5573
5574 return vpc;
5575#undef FLD
5576}
5577
5578/* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5579
5580static SEM_PC
5581SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5582{
5583#define FLD(f) abuf->fields.sfmt_cstbfu.f
5584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5585 int UNUSED written = 0;
5586 IADDR UNUSED pc = abuf->addr;
5587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5588
5589frvbf_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)));
5590
5591 return vpc;
5592#undef FLD
5593}
5594
5595/* stf: stf$pack $FRintk,@($GRi,$GRj) */
5596
5597static SEM_PC
5598SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5599{
5600#define FLD(f) abuf->fields.sfmt_cstbfu.f
5601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5602 int UNUSED written = 0;
5603 IADDR UNUSED pc = abuf->addr;
5604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5605
5606frvbf_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)));
5607
5608 return vpc;
5609#undef FLD
5610}
5611
5612/* stc: stc$pack $CPRk,@($GRi,$GRj) */
5613
5614static SEM_PC
5615SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5616{
5617#define FLD(f) abuf->fields.sfmt_stcu.f
5618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5619 int UNUSED written = 0;
5620 IADDR UNUSED pc = abuf->addr;
5621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5622
5623frvbf_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)]));
5624
5625 return vpc;
5626#undef FLD
5627}
5628
29a79ca0 5629/* std: std$pack $GRdoublek,@($GRi,$GRj) */
b34f6357
DB
5630
5631static SEM_PC
5632SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5633{
5634#define FLD(f) abuf->fields.sfmt_cstdu.f
5635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5636 int UNUSED written = 0;
5637 IADDR UNUSED pc = abuf->addr;
5638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5639
5640{
5641 SI tmp_address;
5642{
5643 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5644frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5645}
5646}
5647
5648 return vpc;
5649#undef FLD
5650}
5651
29a79ca0 5652/* stdf: stdf$pack $FRdoublek,@($GRi,$GRj) */
b34f6357
DB
5653
5654static SEM_PC
5655SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5656{
5657#define FLD(f) abuf->fields.sfmt_cstdfu.f
5658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5659 int UNUSED written = 0;
5660 IADDR UNUSED pc = abuf->addr;
5661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5662
5663{
5664 SI tmp_address;
5665{
5666 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5667frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5668}
5669}
5670
5671 return vpc;
5672#undef FLD
5673}
5674
29a79ca0 5675/* stdc: stdc$pack $CPRdoublek,@($GRi,$GRj) */
b34f6357
DB
5676
5677static SEM_PC
5678SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5679{
5680#define FLD(f) abuf->fields.sfmt_stdcu.f
5681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5682 int UNUSED written = 0;
5683 IADDR UNUSED pc = abuf->addr;
5684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5685
5686{
5687 SI tmp_address;
5688{
5689 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5690frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5691}
5692}
5693
5694 return vpc;
5695#undef FLD
5696}
5697
b34f6357
DB
5698/* stq: stq$pack $GRk,@($GRi,$GRj) */
5699
5700static SEM_PC
5701SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5702{
5703#define FLD(f) abuf->fields.sfmt_smulcc.f
5704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5705 int UNUSED written = 0;
5706 IADDR UNUSED pc = abuf->addr;
5707 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5708
5709{
5710 SI tmp_address;
5711{
5712 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5713frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5714}
5715}
5716
5717 return vpc;
5718#undef FLD
5719}
5720
5721/* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5722
5723static SEM_PC
5724SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5725{
5726#define FLD(f) abuf->fields.sfmt_cstdfu.f
5727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5728 int UNUSED written = 0;
5729 IADDR UNUSED pc = abuf->addr;
5730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5731
5732{
5733 SI tmp_address;
5734{
5735 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5736frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5737}
5738}
5739
5740 return vpc;
5741#undef FLD
5742}
5743
5744/* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5745
5746static SEM_PC
5747SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5748{
5749#define FLD(f) abuf->fields.sfmt_stdcu.f
5750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5751 int UNUSED written = 0;
5752 IADDR UNUSED pc = abuf->addr;
5753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5754
5755{
5756 SI tmp_address;
5757{
5758 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5759frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5760}
5761}
5762
5763 return vpc;
5764#undef FLD
5765}
5766
b34f6357
DB
5767/* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5768
5769static SEM_PC
5770SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5771{
5772#define FLD(f) abuf->fields.sfmt_cstbu.f
5773 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5774 int UNUSED written = 0;
5775 IADDR UNUSED pc = abuf->addr;
5776 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5777
5778{
5779 USI tmp_address;
5780 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5781frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5782 {
5783 SI opval = tmp_address;
5784 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5785 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5786 }
5787}
5788
5789 return vpc;
5790#undef FLD
5791}
5792
5793/* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5794
5795static SEM_PC
5796SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5797{
5798#define FLD(f) abuf->fields.sfmt_cstbu.f
5799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5800 int UNUSED written = 0;
5801 IADDR UNUSED pc = abuf->addr;
5802 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5803
5804{
5805 USI tmp_address;
5806 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5807frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5808 {
5809 SI opval = tmp_address;
5810 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5811 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5812 }
5813}
5814
5815 return vpc;
5816#undef FLD
5817}
5818
5819/* stu: stu$pack $GRk,@($GRi,$GRj) */
5820
5821static SEM_PC
5822SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5823{
5824#define FLD(f) abuf->fields.sfmt_cstbu.f
5825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5826 int UNUSED written = 0;
5827 IADDR UNUSED pc = abuf->addr;
5828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5829
5830{
5831 USI tmp_address;
5832 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5833frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5834 {
5835 SI opval = tmp_address;
5836 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5837 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5838 }
5839}
5840
5841 return vpc;
5842#undef FLD
5843}
5844
5845/* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5846
5847static SEM_PC
5848SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5849{
5850#define FLD(f) abuf->fields.sfmt_cstbfu.f
5851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5852 int UNUSED written = 0;
5853 IADDR UNUSED pc = abuf->addr;
5854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5855
5856{
5857 USI tmp_address;
5858 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5859frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5860 {
5861 SI opval = tmp_address;
5862 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5863 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5864 }
5865}
5866
5867 return vpc;
5868#undef FLD
5869}
5870
5871/* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5872
5873static SEM_PC
5874SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5875{
5876#define FLD(f) abuf->fields.sfmt_cstbfu.f
5877 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5878 int UNUSED written = 0;
5879 IADDR UNUSED pc = abuf->addr;
5880 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5881
5882{
5883 USI tmp_address;
5884 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5885frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5886 {
5887 SI opval = tmp_address;
5888 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5889 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5890 }
5891}
5892
5893 return vpc;
5894#undef FLD
5895}
5896
5897/* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5898
5899static SEM_PC
5900SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5901{
5902#define FLD(f) abuf->fields.sfmt_cstbfu.f
5903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5904 int UNUSED written = 0;
5905 IADDR UNUSED pc = abuf->addr;
5906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5907
5908{
5909 USI tmp_address;
5910 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5911frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5912 {
5913 SI opval = tmp_address;
5914 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5915 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5916 }
5917}
5918
5919 return vpc;
5920#undef FLD
5921}
5922
5923/* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
5924
5925static SEM_PC
5926SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5927{
5928#define FLD(f) abuf->fields.sfmt_stcu.f
5929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5930 int UNUSED written = 0;
5931 IADDR UNUSED pc = abuf->addr;
5932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5933
5934{
5935 USI tmp_address;
5936 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5937frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
5938 {
5939 SI opval = tmp_address;
5940 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5941 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5942 }
5943}
5944
5945 return vpc;
5946#undef FLD
5947}
5948
29a79ca0 5949/* stdu: stdu$pack $GRdoublek,@($GRi,$GRj) */
b34f6357
DB
5950
5951static SEM_PC
5952SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5953{
5954#define FLD(f) abuf->fields.sfmt_cstdu.f
5955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5956 int UNUSED written = 0;
5957 IADDR UNUSED pc = abuf->addr;
5958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5959
5960{
5961 SI tmp_address;
5962{
5963 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5964frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5965}
5966 {
5967 SI opval = tmp_address;
5968 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5969 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5970 }
5971}
5972
5973 return vpc;
5974#undef FLD
5975}
5976
29a79ca0 5977/* stdfu: stdfu$pack $FRdoublek,@($GRi,$GRj) */
b34f6357
DB
5978
5979static SEM_PC
5980SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5981{
5982#define FLD(f) abuf->fields.sfmt_cstdfu.f
5983 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5984 int UNUSED written = 0;
5985 IADDR UNUSED pc = abuf->addr;
5986 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5987
5988{
5989 SI tmp_address;
5990{
5991 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5992frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5993}
5994 {
5995 SI opval = tmp_address;
5996 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5997 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5998 }
5999}
6000
6001 return vpc;
6002#undef FLD
6003}
6004
29a79ca0 6005/* stdcu: stdcu$pack $CPRdoublek,@($GRi,$GRj) */
b34f6357
DB
6006
6007static SEM_PC
6008SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6009{
6010#define FLD(f) abuf->fields.sfmt_stdcu.f
6011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6012 int UNUSED written = 0;
6013 IADDR UNUSED pc = abuf->addr;
6014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6015
6016{
6017 SI tmp_address;
6018{
6019 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6020frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6021}
6022 {
6023 SI opval = tmp_address;
6024 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6025 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6026 }
6027}
6028
6029 return vpc;
6030#undef FLD
6031}
6032
6033/* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6034
6035static SEM_PC
6036SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6037{
6038#define FLD(f) abuf->fields.sfmt_cstdu.f
6039 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6040 int UNUSED written = 0;
6041 IADDR UNUSED pc = abuf->addr;
6042 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6043
6044{
6045 SI tmp_address;
6046{
6047 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6048frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6049}
6050 {
6051 SI opval = tmp_address;
6052 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6053 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6054 }
6055}
6056
6057 return vpc;
6058#undef FLD
6059}
6060
6061/* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6062
6063static SEM_PC
6064SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6065{
6066#define FLD(f) abuf->fields.sfmt_cstdfu.f
6067 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6068 int UNUSED written = 0;
6069 IADDR UNUSED pc = abuf->addr;
6070 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6071
6072{
6073 SI tmp_address;
6074{
6075 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6076frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6077}
6078 {
6079 SI opval = tmp_address;
6080 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6081 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6082 }
6083}
6084
6085 return vpc;
6086#undef FLD
6087}
6088
6089/* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6090
6091static SEM_PC
6092SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6093{
6094#define FLD(f) abuf->fields.sfmt_stdcu.f
6095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6096 int UNUSED written = 0;
6097 IADDR UNUSED pc = abuf->addr;
6098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6099
6100{
6101 SI tmp_address;
6102{
6103 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6104frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6105}
6106 {
6107 SI opval = tmp_address;
6108 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6109 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6110 }
6111}
6112
6113 return vpc;
6114#undef FLD
6115}
6116
6117/* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6118
6119static SEM_PC
6120SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6121{
6122#define FLD(f) abuf->fields.sfmt_cswap.f
6123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6124 int UNUSED written = 0;
6125 IADDR UNUSED pc = abuf->addr;
6126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6127
6128if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6129 {
6130 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6131 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6132 written |= (1 << 5);
6133 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6134 }
6135}
6136
6137 abuf->written = written;
6138 return vpc;
6139#undef FLD
6140}
6141
6142/* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6143
6144static SEM_PC
6145SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6146{
6147#define FLD(f) abuf->fields.sfmt_cswap.f
6148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6149 int UNUSED written = 0;
6150 IADDR UNUSED pc = abuf->addr;
6151 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6152
6153if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6154 {
6155 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6156 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6157 written |= (1 << 5);
6158 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6159 }
6160}
6161
6162 abuf->written = written;
6163 return vpc;
6164#undef FLD
6165}
6166
6167/* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6168
6169static SEM_PC
6170SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6171{
6172#define FLD(f) abuf->fields.sfmt_cswap.f
6173 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6174 int UNUSED written = 0;
6175 IADDR UNUSED pc = abuf->addr;
6176 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6177
6178if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6179 {
6180 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6181 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6182 written |= (1 << 5);
6183 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6184 }
6185}
6186
6187 abuf->written = written;
6188 return vpc;
6189#undef FLD
6190}
6191
6192/* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6193
6194static SEM_PC
6195SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6196{
6197#define FLD(f) abuf->fields.sfmt_cswap.f
6198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6199 int UNUSED written = 0;
6200 IADDR UNUSED pc = abuf->addr;
6201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6202
6203if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6204 {
6205 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6206 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6207 written |= (1 << 5);
6208 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6209 }
6210}
6211
6212 abuf->written = written;
6213 return vpc;
6214#undef FLD
6215}
6216
6217/* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6218
6219static SEM_PC
6220SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6221{
6222#define FLD(f) abuf->fields.sfmt_cswap.f
6223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6224 int UNUSED written = 0;
6225 IADDR UNUSED pc = abuf->addr;
6226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6227
6228if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6229 {
6230 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6231 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6232 written |= (1 << 5);
6233 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6234 }
6235}
6236
6237 abuf->written = written;
6238 return vpc;
6239#undef FLD
6240}
6241
6242/* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6243
6244static SEM_PC
6245SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6246{
6247#define FLD(f) abuf->fields.sfmt_cldbfu.f
6248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6249 int UNUSED written = 0;
6250 IADDR UNUSED pc = abuf->addr;
6251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6252
6253if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6254 {
6255 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6256 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6257 written |= (1 << 5);
6258 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6259 }
6260}
6261
6262 abuf->written = written;
6263 return vpc;
6264#undef FLD
6265}
6266
6267/* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6268
6269static SEM_PC
6270SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6271{
6272#define FLD(f) abuf->fields.sfmt_cldbfu.f
6273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6274 int UNUSED written = 0;
6275 IADDR UNUSED pc = abuf->addr;
6276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6277
6278if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6279 {
6280 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6281 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6282 written |= (1 << 5);
6283 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6284 }
6285}
6286
6287 abuf->written = written;
6288 return vpc;
6289#undef FLD
6290}
6291
6292/* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6293
6294static SEM_PC
6295SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6296{
6297#define FLD(f) abuf->fields.sfmt_cldbfu.f
6298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6299 int UNUSED written = 0;
6300 IADDR UNUSED pc = abuf->addr;
6301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6302
6303if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6304 {
6305 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6306 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6307 written |= (1 << 5);
6308 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6309 }
6310}
6311
6312 abuf->written = written;
6313 return vpc;
6314#undef FLD
6315}
6316
6317/* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6318
6319static SEM_PC
6320SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6321{
6322#define FLD(f) abuf->fields.sfmt_clddu.f
6323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6324 int UNUSED written = 0;
6325 IADDR UNUSED pc = abuf->addr;
6326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6327
6328if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6329{
6330 SI tmp_address;
6331if (NESI (FLD (f_GRk), 0)) {
6332{
6333 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6334 {
6335 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6336 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6337 written |= (1 << 6);
6338 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6339 }
6340}
6341}
6342}
6343}
6344
6345 abuf->written = written;
6346 return vpc;
6347#undef FLD
6348}
6349
6350/* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6351
6352static SEM_PC
6353SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6354{
6355#define FLD(f) abuf->fields.sfmt_clddfu.f
6356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6357 int UNUSED written = 0;
6358 IADDR UNUSED pc = abuf->addr;
6359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6360
6361if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6362{
6363 SI tmp_address;
6364{
6365 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6366 {
6367 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6368 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6369 written |= (1 << 5);
6370 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6371 }
6372}
6373}
6374}
6375
6376 abuf->written = written;
6377 return vpc;
6378#undef FLD
6379}
6380
6381/* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6382
6383static SEM_PC
6384SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6385{
6386#define FLD(f) abuf->fields.sfmt_cswap.f
6387 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6388 int UNUSED written = 0;
6389 IADDR UNUSED pc = abuf->addr;
6390 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6391
6392if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6393{
6394 SI tmp_address;
6395{
6396 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6397frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6398}
6399}
6400}
6401
6402 return vpc;
6403#undef FLD
6404}
6405
6406/* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6407
6408static SEM_PC
6409SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6410{
6411#define FLD(f) abuf->fields.sfmt_cldsbu.f
6412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6413 int UNUSED written = 0;
6414 IADDR UNUSED pc = abuf->addr;
6415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6416
6417if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6418{
6419 SI tmp_address;
6420 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6421 {
6422 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6423 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6424 written |= (1 << 8);
6425 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6426 }
6427if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6428 {
6429 SI opval = tmp_address;
6430 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6431 written |= (1 << 7);
6432 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6433 }
6434}
6435}
6436}
6437
6438 abuf->written = written;
6439 return vpc;
6440#undef FLD
6441}
6442
6443/* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6444
6445static SEM_PC
6446SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6447{
6448#define FLD(f) abuf->fields.sfmt_cldsbu.f
6449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6450 int UNUSED written = 0;
6451 IADDR UNUSED pc = abuf->addr;
6452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6453
6454if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6455{
6456 SI tmp_address;
6457 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6458 {
6459 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6460 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6461 written |= (1 << 8);
6462 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6463 }
6464if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6465 {
6466 SI opval = tmp_address;
6467 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6468 written |= (1 << 7);
6469 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6470 }
6471}
6472}
6473}
6474
6475 abuf->written = written;
6476 return vpc;
6477#undef FLD
6478}
6479
6480/* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6481
6482static SEM_PC
6483SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6484{
6485#define FLD(f) abuf->fields.sfmt_cldsbu.f
6486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6487 int UNUSED written = 0;
6488 IADDR UNUSED pc = abuf->addr;
6489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6490
6491if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6492{
6493 SI tmp_address;
6494 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6495 {
6496 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6497 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6498 written |= (1 << 8);
6499 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6500 }
6501if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6502 {
6503 SI opval = tmp_address;
6504 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6505 written |= (1 << 7);
6506 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6507 }
6508}
6509}
6510}
6511
6512 abuf->written = written;
6513 return vpc;
6514#undef FLD
6515}
6516
6517/* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6518
6519static SEM_PC
6520SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6521{
6522#define FLD(f) abuf->fields.sfmt_cldsbu.f
6523 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6524 int UNUSED written = 0;
6525 IADDR UNUSED pc = abuf->addr;
6526 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6527
6528if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6529{
6530 SI tmp_address;
6531 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6532 {
6533 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6534 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6535 written |= (1 << 8);
6536 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6537 }
6538if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6539 {
6540 SI opval = tmp_address;
6541 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6542 written |= (1 << 7);
6543 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6544 }
6545}
6546}
6547}
6548
6549 abuf->written = written;
6550 return vpc;
6551#undef FLD
6552}
6553
6554/* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6555
6556static SEM_PC
6557SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6558{
6559#define FLD(f) abuf->fields.sfmt_cldsbu.f
6560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6561 int UNUSED written = 0;
6562 IADDR UNUSED pc = abuf->addr;
6563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6564
6565if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6566{
6567 SI tmp_address;
6568 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6569 {
6570 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6571 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6572 written |= (1 << 8);
6573 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6574 }
6575if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6576 {
6577 SI opval = tmp_address;
6578 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6579 written |= (1 << 7);
6580 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6581 }
6582}
6583}
6584}
6585
6586 abuf->written = written;
6587 return vpc;
6588#undef FLD
6589}
6590
6591/* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6592
6593static SEM_PC
6594SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6595{
6596#define FLD(f) abuf->fields.sfmt_cldbfu.f
6597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6598 int UNUSED written = 0;
6599 IADDR UNUSED pc = abuf->addr;
6600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6601
6602if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6603{
6604 SI tmp_address;
6605 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6606 {
6607 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6608 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6609 written |= (1 << 5);
6610 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6611 }
6612 {
6613 SI opval = tmp_address;
6614 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6615 written |= (1 << 6);
6616 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6617 }
6618}
6619}
6620
6621 abuf->written = written;
6622 return vpc;
6623#undef FLD
6624}
6625
6626/* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6627
6628static SEM_PC
6629SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6630{
6631#define FLD(f) abuf->fields.sfmt_cldbfu.f
6632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6633 int UNUSED written = 0;
6634 IADDR UNUSED pc = abuf->addr;
6635 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6636
6637if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6638{
6639 SI tmp_address;
6640 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6641 {
6642 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6643 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6644 written |= (1 << 5);
6645 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6646 }
6647 {
6648 SI opval = tmp_address;
6649 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6650 written |= (1 << 6);
6651 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6652 }
6653}
6654}
6655
6656 abuf->written = written;
6657 return vpc;
6658#undef FLD
6659}
6660
6661/* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6662
6663static SEM_PC
6664SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6665{
6666#define FLD(f) abuf->fields.sfmt_cldbfu.f
6667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6668 int UNUSED written = 0;
6669 IADDR UNUSED pc = abuf->addr;
6670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6671
6672if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6673{
6674 SI tmp_address;
6675 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6676 {
6677 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6678 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6679 written |= (1 << 5);
6680 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6681 }
6682 {
6683 SI opval = tmp_address;
6684 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6685 written |= (1 << 6);
6686 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6687 }
6688}
6689}
6690
6691 abuf->written = written;
6692 return vpc;
6693#undef FLD
6694}
6695
6696/* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6697
6698static SEM_PC
6699SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6700{
6701#define FLD(f) abuf->fields.sfmt_clddu.f
6702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6703 int UNUSED written = 0;
6704 IADDR UNUSED pc = abuf->addr;
6705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6706
6707if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6708{
6709 SI tmp_address;
6710if (NESI (FLD (f_GRk), 0)) {
6711{
6712 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6713 {
6714 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6715 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6716 written |= (1 << 7);
6717 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6718 }
6719}
6720}
6721if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6722 {
6723 SI opval = tmp_address;
6724 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6725 written |= (1 << 8);
6726 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6727 }
6728}
6729}
6730}
6731
6732 abuf->written = written;
6733 return vpc;
6734#undef FLD
6735}
6736
6737/* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6738
6739static SEM_PC
6740SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6741{
6742#define FLD(f) abuf->fields.sfmt_clddfu.f
6743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6744 int UNUSED written = 0;
6745 IADDR UNUSED pc = abuf->addr;
6746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6747
6748if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6749{
6750 SI tmp_address;
6751{
6752 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6753 {
6754 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6755 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6756 written |= (1 << 5);
6757 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6758 }
6759}
6760 {
6761 SI opval = tmp_address;
6762 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6763 written |= (1 << 6);
6764 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6765 }
6766}
6767}
6768
6769 abuf->written = written;
6770 return vpc;
6771#undef FLD
6772}
6773
6774/* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6775
6776static SEM_PC
6777SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6778{
6779#define FLD(f) abuf->fields.sfmt_cstdu.f
6780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6781 int UNUSED written = 0;
6782 IADDR UNUSED pc = abuf->addr;
6783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6784
6785if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6786{
6787 SI tmp_address;
6788{
6789 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6790frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6791}
6792if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6793 {
6794 SI opval = tmp_address;
6795 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6796 written |= (1 << 7);
6797 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6798 }
6799}
6800}
6801}
6802
6803 abuf->written = written;
6804 return vpc;
6805#undef FLD
6806}
6807
6808/* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6809
6810static SEM_PC
6811SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6812{
6813#define FLD(f) abuf->fields.sfmt_cswap.f
6814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6815 int UNUSED written = 0;
6816 IADDR UNUSED pc = abuf->addr;
6817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6818
6819if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6820frvbf_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)));
6821}
6822
6823 return vpc;
6824#undef FLD
6825}
6826
6827/* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6828
6829static SEM_PC
6830SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6831{
6832#define FLD(f) abuf->fields.sfmt_cswap.f
6833 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6834 int UNUSED written = 0;
6835 IADDR UNUSED pc = abuf->addr;
6836 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6837
6838if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6839frvbf_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)));
6840}
6841
6842 return vpc;
6843#undef FLD
6844}
6845
6846/* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6847
6848static SEM_PC
6849SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6850{
6851#define FLD(f) abuf->fields.sfmt_cswap.f
6852 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6853 int UNUSED written = 0;
6854 IADDR UNUSED pc = abuf->addr;
6855 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6856
6857if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6858frvbf_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)));
6859}
6860
6861 return vpc;
6862#undef FLD
6863}
6864
6865/* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6866
6867static SEM_PC
6868SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6869{
6870#define FLD(f) abuf->fields.sfmt_cstbfu.f
6871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6872 int UNUSED written = 0;
6873 IADDR UNUSED pc = abuf->addr;
6874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6875
6876if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6877frvbf_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)));
6878}
6879
6880 return vpc;
6881#undef FLD
6882}
6883
6884/* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6885
6886static SEM_PC
6887SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6888{
6889#define FLD(f) abuf->fields.sfmt_cstbfu.f
6890 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6891 int UNUSED written = 0;
6892 IADDR UNUSED pc = abuf->addr;
6893 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6894
6895if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6896frvbf_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)));
6897}
6898
6899 return vpc;
6900#undef FLD
6901}
6902
6903/* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6904
6905static SEM_PC
6906SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6907{
6908#define FLD(f) abuf->fields.sfmt_cstbfu.f
6909 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6910 int UNUSED written = 0;
6911 IADDR UNUSED pc = abuf->addr;
6912 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6913
6914if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6915frvbf_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)));
6916}
6917
6918 return vpc;
6919#undef FLD
6920}
6921
29a79ca0 6922/* cstd: cstd$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
6923
6924static SEM_PC
6925SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6926{
6927#define FLD(f) abuf->fields.sfmt_cstdu.f
6928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6929 int UNUSED written = 0;
6930 IADDR UNUSED pc = abuf->addr;
6931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6932
6933if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6934{
6935 SI tmp_address;
6936{
6937 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6938frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6939}
6940}
6941}
6942
6943 return vpc;
6944#undef FLD
6945}
6946
29a79ca0 6947/* cstdf: cstdf$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
6948
6949static SEM_PC
6950SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6951{
6952#define FLD(f) abuf->fields.sfmt_cstdfu.f
6953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6954 int UNUSED written = 0;
6955 IADDR UNUSED pc = abuf->addr;
6956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6957
6958if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6959{
6960 SI tmp_address;
6961{
6962 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6963frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6964}
6965}
6966}
6967
6968 return vpc;
6969#undef FLD
6970}
6971
6972/* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6973
6974static SEM_PC
6975SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6976{
6977#define FLD(f) abuf->fields.sfmt_cswap.f
6978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6979 int UNUSED written = 0;
6980 IADDR UNUSED pc = abuf->addr;
6981 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6982
6983if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6984{
6985 SI tmp_address;
6986{
6987 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6988frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6989}
6990}
6991}
6992
6993 return vpc;
6994#undef FLD
6995}
6996
6997/* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6998
6999static SEM_PC
7000SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7001{
7002#define FLD(f) abuf->fields.sfmt_cstbu.f
7003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7004 int UNUSED written = 0;
7005 IADDR UNUSED pc = abuf->addr;
7006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7007
7008if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7009{
7010 SI tmp_address;
7011 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7012frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7013 {
7014 SI opval = tmp_address;
7015 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7016 written |= (1 << 6);
7017 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7018 }
7019}
7020}
7021
7022 abuf->written = written;
7023 return vpc;
7024#undef FLD
7025}
7026
7027/* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7028
7029static SEM_PC
7030SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7031{
7032#define FLD(f) abuf->fields.sfmt_cstbu.f
7033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7034 int UNUSED written = 0;
7035 IADDR UNUSED pc = abuf->addr;
7036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7037
7038if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7039{
7040 SI tmp_address;
7041 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7042frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7043 {
7044 SI opval = tmp_address;
7045 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7046 written |= (1 << 6);
7047 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7048 }
7049}
7050}
7051
7052 abuf->written = written;
7053 return vpc;
7054#undef FLD
7055}
7056
7057/* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7058
7059static SEM_PC
7060SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7061{
7062#define FLD(f) abuf->fields.sfmt_cstbu.f
7063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7064 int UNUSED written = 0;
7065 IADDR UNUSED pc = abuf->addr;
7066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7067
7068if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7069{
7070 SI tmp_address;
7071 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7072frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7073 {
7074 SI opval = tmp_address;
7075 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7076 written |= (1 << 6);
7077 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7078 }
7079}
7080}
7081
7082 abuf->written = written;
7083 return vpc;
7084#undef FLD
7085}
7086
7087/* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7088
7089static SEM_PC
7090SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7091{
7092#define FLD(f) abuf->fields.sfmt_cstbfu.f
7093 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7094 int UNUSED written = 0;
7095 IADDR UNUSED pc = abuf->addr;
7096 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7097
7098if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7099{
7100 SI tmp_address;
7101 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7102frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7103 {
7104 SI opval = tmp_address;
7105 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7106 written |= (1 << 6);
7107 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7108 }
7109}
7110}
7111
7112 abuf->written = written;
7113 return vpc;
7114#undef FLD
7115}
7116
7117/* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7118
7119static SEM_PC
7120SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7121{
7122#define FLD(f) abuf->fields.sfmt_cstbfu.f
7123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7124 int UNUSED written = 0;
7125 IADDR UNUSED pc = abuf->addr;
7126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7127
7128if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7129{
7130 SI tmp_address;
7131 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7132frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7133 {
7134 SI opval = tmp_address;
7135 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7136 written |= (1 << 6);
7137 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7138 }
7139}
7140}
7141
7142 abuf->written = written;
7143 return vpc;
7144#undef FLD
7145}
7146
7147/* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7148
7149static SEM_PC
7150SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7151{
7152#define FLD(f) abuf->fields.sfmt_cstbfu.f
7153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7154 int UNUSED written = 0;
7155 IADDR UNUSED pc = abuf->addr;
7156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7157
7158if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7159{
7160 SI tmp_address;
7161 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7162frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7163 {
7164 SI opval = tmp_address;
7165 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7166 written |= (1 << 6);
7167 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7168 }
7169}
7170}
7171
7172 abuf->written = written;
7173 return vpc;
7174#undef FLD
7175}
7176
29a79ca0 7177/* cstdu: cstdu$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
7178
7179static SEM_PC
7180SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7181{
7182#define FLD(f) abuf->fields.sfmt_cstdu.f
7183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7184 int UNUSED written = 0;
7185 IADDR UNUSED pc = abuf->addr;
7186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7187
7188if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7189{
7190 SI tmp_address;
7191{
7192 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7193frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7194}
7195 {
7196 SI opval = tmp_address;
7197 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7198 written |= (1 << 6);
7199 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7200 }
7201}
7202}
7203
7204 abuf->written = written;
7205 return vpc;
7206#undef FLD
7207}
7208
29a79ca0 7209/* cstdfu: cstdfu$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
7210
7211static SEM_PC
7212SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7213{
7214#define FLD(f) abuf->fields.sfmt_cstdfu.f
7215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7216 int UNUSED written = 0;
7217 IADDR UNUSED pc = abuf->addr;
7218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7219
7220if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7221{
7222 SI tmp_address;
7223{
7224 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7225frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7226}
7227 {
7228 SI opval = tmp_address;
7229 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7230 written |= (1 << 6);
7231 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7232 }
7233}
7234}
7235
7236 abuf->written = written;
7237 return vpc;
7238#undef FLD
7239}
7240
7241/* stbi: stbi$pack $GRk,@($GRi,$d12) */
7242
7243static SEM_PC
7244SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7245{
7246#define FLD(f) abuf->fields.sfmt_swapi.f
7247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7248 int UNUSED written = 0;
7249 IADDR UNUSED pc = abuf->addr;
7250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7251
7252frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7253
7254 return vpc;
7255#undef FLD
7256}
7257
7258/* sthi: sthi$pack $GRk,@($GRi,$d12) */
7259
7260static SEM_PC
7261SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7262{
7263#define FLD(f) abuf->fields.sfmt_swapi.f
7264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7265 int UNUSED written = 0;
7266 IADDR UNUSED pc = abuf->addr;
7267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7268
7269frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7270
7271 return vpc;
7272#undef FLD
7273}
7274
7275/* sti: sti$pack $GRk,@($GRi,$d12) */
7276
7277static SEM_PC
7278SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7279{
7280#define FLD(f) abuf->fields.sfmt_swapi.f
7281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7282 int UNUSED written = 0;
7283 IADDR UNUSED pc = abuf->addr;
7284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7285
7286frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7287
7288 return vpc;
7289#undef FLD
7290}
7291
7292/* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7293
7294static SEM_PC
7295SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7296{
7297#define FLD(f) abuf->fields.sfmt_stbfi.f
7298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7299 int UNUSED written = 0;
7300 IADDR UNUSED pc = abuf->addr;
7301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7302
7303frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7304
7305 return vpc;
7306#undef FLD
7307}
7308
7309/* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7310
7311static SEM_PC
7312SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7313{
7314#define FLD(f) abuf->fields.sfmt_stbfi.f
7315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7316 int UNUSED written = 0;
7317 IADDR UNUSED pc = abuf->addr;
7318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7319
7320frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7321
7322 return vpc;
7323#undef FLD
7324}
7325
7326/* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7327
7328static SEM_PC
7329SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7330{
7331#define FLD(f) abuf->fields.sfmt_stbfi.f
7332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7333 int UNUSED written = 0;
7334 IADDR UNUSED pc = abuf->addr;
7335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7336
7337frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7338
7339 return vpc;
7340#undef FLD
7341}
7342
29a79ca0 7343/* stdi: stdi$pack $GRdoublek,@($GRi,$d12) */
b34f6357
DB
7344
7345static SEM_PC
7346SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7347{
7348#define FLD(f) abuf->fields.sfmt_stdi.f
7349 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7350 int UNUSED written = 0;
7351 IADDR UNUSED pc = abuf->addr;
7352 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7353
7354{
7355 SI tmp_address;
7356{
7357 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7358frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7359}
7360}
7361
7362 return vpc;
7363#undef FLD
7364}
7365
29a79ca0 7366/* stdfi: stdfi$pack $FRdoublek,@($GRi,$d12) */
b34f6357
DB
7367
7368static SEM_PC
7369SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7370{
7371#define FLD(f) abuf->fields.sfmt_stdfi.f
7372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7373 int UNUSED written = 0;
7374 IADDR UNUSED pc = abuf->addr;
7375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7376
7377{
7378 SI tmp_address;
7379{
7380 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7381frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7382}
7383}
7384
7385 return vpc;
7386#undef FLD
7387}
7388
7389/* stqi: stqi$pack $GRk,@($GRi,$d12) */
7390
7391static SEM_PC
7392SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7393{
7394#define FLD(f) abuf->fields.sfmt_stdi.f
7395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7396 int UNUSED written = 0;
7397 IADDR UNUSED pc = abuf->addr;
7398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7399
7400{
7401 SI tmp_address;
7402{
7403 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7404frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7405}
7406}
7407
7408 return vpc;
7409#undef FLD
7410}
7411
7412/* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7413
7414static SEM_PC
7415SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7416{
7417#define FLD(f) abuf->fields.sfmt_stdfi.f
7418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7419 int UNUSED written = 0;
7420 IADDR UNUSED pc = abuf->addr;
7421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7422
7423{
7424 SI tmp_address;
7425{
7426 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7427frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7428}
7429}
7430
7431 return vpc;
7432#undef FLD
7433}
7434
7435/* swap: swap$pack @($GRi,$GRj),$GRk */
7436
7437static SEM_PC
7438SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7439{
7440#define FLD(f) abuf->fields.sfmt_cswap.f
7441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7442 int UNUSED written = 0;
7443 IADDR UNUSED pc = abuf->addr;
7444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7445
7446{
7447 SI tmp_tmp;
7448 SI tmp_address;
7449 tmp_tmp = GET_H_GR (FLD (f_GRk));
7450 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
e930b1f5 7451frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7452 {
7453 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7454 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7455 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7456 }
7457frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7458}
7459
7460 return vpc;
7461#undef FLD
7462}
7463
7464/* swapi: swapi$pack @($GRi,$d12),$GRk */
7465
7466static SEM_PC
7467SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7468{
7469#define FLD(f) abuf->fields.sfmt_swapi.f
7470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7471 int UNUSED written = 0;
7472 IADDR UNUSED pc = abuf->addr;
7473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7474
7475{
7476 SI tmp_tmp;
7477 SI tmp_address;
7478 tmp_tmp = GET_H_GR (FLD (f_GRk));
7479 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
e930b1f5 7480frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7481 {
7482 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7483 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7484 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7485 }
7486frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7487}
7488
7489 return vpc;
7490#undef FLD
7491}
7492
7493/* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7494
7495static SEM_PC
7496SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7497{
7498#define FLD(f) abuf->fields.sfmt_cswap.f
7499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7500 int UNUSED written = 0;
7501 IADDR UNUSED pc = abuf->addr;
7502 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7503
7504if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7505{
7506 SI tmp_tmp;
7507 SI tmp_address;
7508 tmp_tmp = GET_H_GR (FLD (f_GRk));
7509 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
e930b1f5 7510frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7511 {
7512 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7513 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7514 written |= (1 << 6);
7515 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7516 }
7517frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7518}
7519}
7520
7521 abuf->written = written;
7522 return vpc;
7523#undef FLD
7524}
7525
7526/* movgf: movgf$pack $GRj,$FRintk */
7527
7528static SEM_PC
7529SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7530{
7531#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7533 int UNUSED written = 0;
7534 IADDR UNUSED pc = abuf->addr;
7535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7536
7537 {
7538 SI opval = GET_H_GR (FLD (f_GRj));
7539 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7540 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7541 }
7542
7543 return vpc;
7544#undef FLD
7545}
7546
7547/* movfg: movfg$pack $FRintk,$GRj */
7548
7549static SEM_PC
7550SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7551{
7552#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7554 int UNUSED written = 0;
7555 IADDR UNUSED pc = abuf->addr;
7556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7557
7558 {
7559 SI opval = GET_H_FR_INT (FLD (f_FRk));
7560 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7561 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7562 }
7563
7564 return vpc;
7565#undef FLD
7566}
7567
7568/* movgfd: movgfd$pack $GRj,$FRintk */
7569
7570static SEM_PC
7571SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7572{
7573#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7574 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7575 int UNUSED written = 0;
7576 IADDR UNUSED pc = abuf->addr;
7577 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7578
7579if (EQSI (FLD (f_GRj), 0)) {
7580{
7581 {
7582 SI opval = 0;
7583 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7584 written |= (1 << 4);
7585 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7586 }
7587 {
7588 USI opval = 0;
b29791a8 7589 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7590 written |= (1 << 5);
7591 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7592 }
7593}
7594} else {
7595{
7596 {
7597 SI opval = GET_H_GR (FLD (f_GRj));
7598 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7599 written |= (1 << 4);
7600 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7601 }
7602 {
b29791a8
DE
7603 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7604 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7605 written |= (1 << 5);
7606 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7607 }
7608}
7609}
7610
7611 abuf->written = written;
7612 return vpc;
7613#undef FLD
7614}
7615
7616/* movfgd: movfgd$pack $FRintk,$GRj */
7617
7618static SEM_PC
7619SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7620{
7621#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7623 int UNUSED written = 0;
7624 IADDR UNUSED pc = abuf->addr;
7625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7626
7627if (NESI (FLD (f_GRj), 0)) {
7628{
7629 {
7630 SI opval = GET_H_FR_INT (FLD (f_FRk));
7631 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7632 written |= (1 << 4);
7633 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7634 }
7635 {
b29791a8
DE
7636 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7637 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
7638 written |= (1 << 5);
7639 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7640 }
7641}
7642}
7643
7644 abuf->written = written;
7645 return vpc;
7646#undef FLD
7647}
7648
7649/* movgfq: movgfq$pack $GRj,$FRintk */
7650
7651static SEM_PC
7652SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7653{
7654#define FLD(f) abuf->fields.sfmt_movgfq.f
7655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7656 int UNUSED written = 0;
7657 IADDR UNUSED pc = abuf->addr;
7658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7659
7660if (EQSI (FLD (f_GRj), 0)) {
7661{
7662 {
7663 SI opval = 0;
7664 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7665 written |= (1 << 6);
7666 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7667 }
7668 {
7669 USI opval = 0;
b29791a8 7670 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7671 written |= (1 << 7);
7672 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7673 }
7674 {
7675 USI opval = 0;
b29791a8 7676 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
7677 written |= (1 << 8);
7678 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7679 }
7680 {
7681 USI opval = 0;
b29791a8 7682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
7683 written |= (1 << 9);
7684 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7685 }
7686}
7687} else {
7688{
7689 {
7690 SI opval = GET_H_GR (FLD (f_GRj));
7691 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7692 written |= (1 << 6);
7693 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7694 }
7695 {
b29791a8
DE
7696 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7697 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7698 written |= (1 << 7);
7699 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7700 }
7701 {
b29791a8
DE
7702 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 2));
7703 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
7704 written |= (1 << 8);
7705 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7706 }
7707 {
b29791a8
DE
7708 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 3));
7709 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
7710 written |= (1 << 9);
7711 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7712 }
7713}
7714}
7715
7716 abuf->written = written;
7717 return vpc;
7718#undef FLD
7719}
7720
7721/* movfgq: movfgq$pack $FRintk,$GRj */
7722
7723static SEM_PC
7724SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7725{
7726#define FLD(f) abuf->fields.sfmt_movfgq.f
7727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7728 int UNUSED written = 0;
7729 IADDR UNUSED pc = abuf->addr;
7730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7731
7732if (NESI (FLD (f_GRj), 0)) {
7733{
7734 {
7735 SI opval = GET_H_FR_INT (FLD (f_FRk));
7736 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7737 written |= (1 << 6);
7738 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7739 }
7740 {
b29791a8
DE
7741 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7742 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
7743 written |= (1 << 7);
7744 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7745 }
7746 {
b29791a8
DE
7747 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 2));
7748 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 2), opval);
b34f6357
DB
7749 written |= (1 << 8);
7750 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7751 }
7752 {
b29791a8
DE
7753 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 3));
7754 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 3), opval);
b34f6357
DB
7755 written |= (1 << 9);
7756 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7757 }
7758}
7759}
7760
7761 abuf->written = written;
7762 return vpc;
7763#undef FLD
7764}
7765
7766/* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7767
7768static SEM_PC
7769SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7770{
7771#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7773 int UNUSED written = 0;
7774 IADDR UNUSED pc = abuf->addr;
7775 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7776
7777if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7778 {
7779 SI opval = GET_H_GR (FLD (f_GRj));
7780 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7781 written |= (1 << 3);
7782 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7783 }
7784}
7785
7786 abuf->written = written;
7787 return vpc;
7788#undef FLD
7789}
7790
7791/* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7792
7793static SEM_PC
7794SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7795{
7796#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7797 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7798 int UNUSED written = 0;
7799 IADDR UNUSED pc = abuf->addr;
7800 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7801
7802if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7803 {
7804 SI opval = GET_H_FR_INT (FLD (f_FRk));
7805 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7806 written |= (1 << 3);
7807 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7808 }
7809}
7810
7811 abuf->written = written;
7812 return vpc;
7813#undef FLD
7814}
7815
7816/* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7817
7818static SEM_PC
7819SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7820{
7821#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7823 int UNUSED written = 0;
7824 IADDR UNUSED pc = abuf->addr;
7825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7826
7827if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7828if (EQSI (FLD (f_GRj), 0)) {
7829{
7830 {
7831 SI opval = 0;
7832 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7833 written |= (1 << 6);
7834 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7835 }
7836 {
7837 USI opval = 0;
b29791a8 7838 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7839 written |= (1 << 7);
7840 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7841 }
7842}
7843} else {
7844{
7845 {
7846 SI opval = GET_H_GR (FLD (f_GRj));
7847 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7848 written |= (1 << 6);
7849 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7850 }
7851 {
b29791a8
DE
7852 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7853 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7854 written |= (1 << 7);
7855 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7856 }
7857}
7858}
7859}
7860
7861 abuf->written = written;
7862 return vpc;
7863#undef FLD
7864}
7865
7866/* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7867
7868static SEM_PC
7869SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7870{
7871#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7873 int UNUSED written = 0;
7874 IADDR UNUSED pc = abuf->addr;
7875 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7876
7877if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7878{
7879 {
7880 SI opval = GET_H_FR_INT (FLD (f_FRk));
7881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7882 written |= (1 << 6);
7883 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7884 }
7885 {
b29791a8
DE
7886 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7887 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
7888 written |= (1 << 7);
7889 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7890 }
7891}
7892}
7893
7894 abuf->written = written;
7895 return vpc;
7896#undef FLD
7897}
7898
7899/* movgs: movgs$pack $GRj,$spr */
7900
7901static SEM_PC
7902SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7903{
7904#define FLD(f) abuf->fields.sfmt_movgs.f
7905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7906 int UNUSED written = 0;
7907 IADDR UNUSED pc = abuf->addr;
7908 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7909
7910 {
7911 USI opval = GET_H_GR (FLD (f_GRj));
7912 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
7913 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
7914 }
7915
7916 return vpc;
7917#undef FLD
7918}
7919
7920/* movsg: movsg$pack $spr,$GRj */
7921
7922static SEM_PC
7923SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7924{
7925#define FLD(f) abuf->fields.sfmt_movsg.f
7926 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7927 int UNUSED written = 0;
7928 IADDR UNUSED pc = abuf->addr;
7929 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7930
7931 {
7932 SI opval = GET_H_SPR (FLD (f_spr));
7933 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7934 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7935 }
7936
7937 return vpc;
7938#undef FLD
7939}
7940
7941/* bra: bra$pack $hint_taken$label16 */
7942
7943static SEM_PC
7944SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7945{
7946#define FLD(f) abuf->fields.sfmt_fbne.f
7947 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7948 int UNUSED written = 0;
7949 IADDR UNUSED pc = abuf->addr;
7950 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7951
7952{
7953frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7954 {
7955 USI opval = FLD (i_label16);
7956 sim_queue_pc_write (current_cpu, opval);
7957 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7958 }
7959}
7960
7961 return vpc;
7962#undef FLD
7963}
7964
7965/* bno: bno$pack$hint_not_taken */
7966
7967static SEM_PC
7968SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7969{
7970#define FLD(f) abuf->fields.sfmt_fbne.f
7971 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7972 int UNUSED written = 0;
7973 IADDR UNUSED pc = abuf->addr;
7974 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7975
7976frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7977
7978 return vpc;
7979#undef FLD
7980}
7981
7982/* beq: beq$pack $ICCi_2,$hint,$label16 */
7983
7984static SEM_PC
7985SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7986{
7987#define FLD(f) abuf->fields.sfmt_beq.f
7988 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7989 int UNUSED written = 0;
7990 IADDR UNUSED pc = abuf->addr;
7991 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7992
7993{
7994frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7995if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
7996 {
7997 USI opval = FLD (i_label16);
7998 sim_queue_pc_write (current_cpu, opval);
7999 written |= (1 << 3);
8000 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8001 }
8002}
8003}
8004
8005 abuf->written = written;
8006 return vpc;
8007#undef FLD
8008}
8009
8010/* bne: bne$pack $ICCi_2,$hint,$label16 */
8011
8012static SEM_PC
8013SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8014{
8015#define FLD(f) abuf->fields.sfmt_beq.f
8016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8017 int UNUSED written = 0;
8018 IADDR UNUSED pc = abuf->addr;
8019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8020
8021{
8022frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8023if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8024 {
8025 USI opval = FLD (i_label16);
8026 sim_queue_pc_write (current_cpu, opval);
8027 written |= (1 << 3);
8028 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8029 }
8030}
8031}
8032
8033 abuf->written = written;
8034 return vpc;
8035#undef FLD
8036}
8037
8038/* ble: ble$pack $ICCi_2,$hint,$label16 */
8039
8040static SEM_PC
8041SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8042{
8043#define FLD(f) abuf->fields.sfmt_beq.f
8044 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8045 int UNUSED written = 0;
8046 IADDR UNUSED pc = abuf->addr;
8047 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8048
8049{
8050frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8051if (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))))) {
8052 {
8053 USI opval = FLD (i_label16);
8054 sim_queue_pc_write (current_cpu, opval);
8055 written |= (1 << 3);
8056 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8057 }
8058}
8059}
8060
8061 abuf->written = written;
8062 return vpc;
8063#undef FLD
8064}
8065
8066/* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8067
8068static SEM_PC
8069SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8070{
8071#define FLD(f) abuf->fields.sfmt_beq.f
8072 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8073 int UNUSED written = 0;
8074 IADDR UNUSED pc = abuf->addr;
8075 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8076
8077{
8078frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8079if (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)))))) {
8080 {
8081 USI opval = FLD (i_label16);
8082 sim_queue_pc_write (current_cpu, opval);
8083 written |= (1 << 3);
8084 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8085 }
8086}
8087}
8088
8089 abuf->written = written;
8090 return vpc;
8091#undef FLD
8092}
8093
8094/* blt: blt$pack $ICCi_2,$hint,$label16 */
8095
8096static SEM_PC
8097SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8098{
8099#define FLD(f) abuf->fields.sfmt_beq.f
8100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8101 int UNUSED written = 0;
8102 IADDR UNUSED pc = abuf->addr;
8103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8104
8105{
8106frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8107if (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)))) {
8108 {
8109 USI opval = FLD (i_label16);
8110 sim_queue_pc_write (current_cpu, opval);
8111 written |= (1 << 3);
8112 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8113 }
8114}
8115}
8116
8117 abuf->written = written;
8118 return vpc;
8119#undef FLD
8120}
8121
8122/* bge: bge$pack $ICCi_2,$hint,$label16 */
8123
8124static SEM_PC
8125SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8126{
8127#define FLD(f) abuf->fields.sfmt_beq.f
8128 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8129 int UNUSED written = 0;
8130 IADDR UNUSED pc = abuf->addr;
8131 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8132
8133{
8134frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8135if (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))))) {
8136 {
8137 USI opval = FLD (i_label16);
8138 sim_queue_pc_write (current_cpu, opval);
8139 written |= (1 << 3);
8140 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8141 }
8142}
8143}
8144
8145 abuf->written = written;
8146 return vpc;
8147#undef FLD
8148}
8149
8150/* bls: bls$pack $ICCi_2,$hint,$label16 */
8151
8152static SEM_PC
8153SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8154{
8155#define FLD(f) abuf->fields.sfmt_beq.f
8156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8157 int UNUSED written = 0;
8158 IADDR UNUSED pc = abuf->addr;
8159 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8160
8161{
8162frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8163if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8164 {
8165 USI opval = FLD (i_label16);
8166 sim_queue_pc_write (current_cpu, opval);
8167 written |= (1 << 3);
8168 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8169 }
8170}
8171}
8172
8173 abuf->written = written;
8174 return vpc;
8175#undef FLD
8176}
8177
8178/* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8179
8180static SEM_PC
8181SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8182{
8183#define FLD(f) abuf->fields.sfmt_beq.f
8184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8185 int UNUSED written = 0;
8186 IADDR UNUSED pc = abuf->addr;
8187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8188
8189{
8190frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8191if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
8192 {
8193 USI opval = FLD (i_label16);
8194 sim_queue_pc_write (current_cpu, opval);
8195 written |= (1 << 3);
8196 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8197 }
8198}
8199}
8200
8201 abuf->written = written;
8202 return vpc;
8203#undef FLD
8204}
8205
8206/* bc: bc$pack $ICCi_2,$hint,$label16 */
8207
8208static SEM_PC
8209SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8210{
8211#define FLD(f) abuf->fields.sfmt_beq.f
8212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8213 int UNUSED written = 0;
8214 IADDR UNUSED pc = abuf->addr;
8215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8216
8217{
8218frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8219if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8220 {
8221 USI opval = FLD (i_label16);
8222 sim_queue_pc_write (current_cpu, opval);
8223 written |= (1 << 3);
8224 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8225 }
8226}
8227}
8228
8229 abuf->written = written;
8230 return vpc;
8231#undef FLD
8232}
8233
8234/* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8235
8236static SEM_PC
8237SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8238{
8239#define FLD(f) abuf->fields.sfmt_beq.f
8240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8241 int UNUSED written = 0;
8242 IADDR UNUSED pc = abuf->addr;
8243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8244
8245{
8246frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8247if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8248 {
8249 USI opval = FLD (i_label16);
8250 sim_queue_pc_write (current_cpu, opval);
8251 written |= (1 << 3);
8252 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8253 }
8254}
8255}
8256
8257 abuf->written = written;
8258 return vpc;
8259#undef FLD
8260}
8261
8262/* bn: bn$pack $ICCi_2,$hint,$label16 */
8263
8264static SEM_PC
8265SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8266{
8267#define FLD(f) abuf->fields.sfmt_beq.f
8268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8269 int UNUSED written = 0;
8270 IADDR UNUSED pc = abuf->addr;
8271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8272
8273{
8274frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8275if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8276 {
8277 USI opval = FLD (i_label16);
8278 sim_queue_pc_write (current_cpu, opval);
8279 written |= (1 << 3);
8280 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8281 }
8282}
8283}
8284
8285 abuf->written = written;
8286 return vpc;
8287#undef FLD
8288}
8289
8290/* bp: bp$pack $ICCi_2,$hint,$label16 */
8291
8292static SEM_PC
8293SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8294{
8295#define FLD(f) abuf->fields.sfmt_beq.f
8296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8297 int UNUSED written = 0;
8298 IADDR UNUSED pc = abuf->addr;
8299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8300
8301{
8302frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8303if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8304 {
8305 USI opval = FLD (i_label16);
8306 sim_queue_pc_write (current_cpu, opval);
8307 written |= (1 << 3);
8308 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8309 }
8310}
8311}
8312
8313 abuf->written = written;
8314 return vpc;
8315#undef FLD
8316}
8317
8318/* bv: bv$pack $ICCi_2,$hint,$label16 */
8319
8320static SEM_PC
8321SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8322{
8323#define FLD(f) abuf->fields.sfmt_beq.f
8324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8325 int UNUSED written = 0;
8326 IADDR UNUSED pc = abuf->addr;
8327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8328
8329{
8330frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8331if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8332 {
8333 USI opval = FLD (i_label16);
8334 sim_queue_pc_write (current_cpu, opval);
8335 written |= (1 << 3);
8336 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8337 }
8338}
8339}
8340
8341 abuf->written = written;
8342 return vpc;
8343#undef FLD
8344}
8345
8346/* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8347
8348static SEM_PC
8349SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8350{
8351#define FLD(f) abuf->fields.sfmt_beq.f
8352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8353 int UNUSED written = 0;
8354 IADDR UNUSED pc = abuf->addr;
8355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8356
8357{
8358frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8359if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8360 {
8361 USI opval = FLD (i_label16);
8362 sim_queue_pc_write (current_cpu, opval);
8363 written |= (1 << 3);
8364 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8365 }
8366}
8367}
8368
8369 abuf->written = written;
8370 return vpc;
8371#undef FLD
8372}
8373
8374/* fbra: fbra$pack $hint_taken$label16 */
8375
8376static SEM_PC
8377SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8378{
8379#define FLD(f) abuf->fields.sfmt_fbne.f
8380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8381 int UNUSED written = 0;
8382 IADDR UNUSED pc = abuf->addr;
8383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8384
8385{
8386frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8387 {
8388 USI opval = FLD (i_label16);
8389 sim_queue_pc_write (current_cpu, opval);
8390 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8391 }
8392}
8393
8394 return vpc;
8395#undef FLD
8396}
8397
8398/* fbno: fbno$pack$hint_not_taken */
8399
8400static SEM_PC
8401SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8402{
8403#define FLD(f) abuf->fields.sfmt_fbne.f
8404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8405 int UNUSED written = 0;
8406 IADDR UNUSED pc = abuf->addr;
8407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8408
8409frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8410
8411 return vpc;
8412#undef FLD
8413}
8414
8415/* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8416
8417static SEM_PC
8418SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8419{
8420#define FLD(f) abuf->fields.sfmt_fbne.f
8421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8422 int UNUSED written = 0;
8423 IADDR UNUSED pc = abuf->addr;
8424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8425
8426{
8427frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8428if (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))))) {
8429 {
8430 USI opval = FLD (i_label16);
8431 sim_queue_pc_write (current_cpu, opval);
8432 written |= (1 << 3);
8433 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8434 }
8435}
8436}
8437
8438 abuf->written = written;
8439 return vpc;
8440#undef FLD
8441}
8442
8443/* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8444
8445static SEM_PC
8446SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8447{
8448#define FLD(f) abuf->fields.sfmt_fbne.f
8449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8450 int UNUSED written = 0;
8451 IADDR UNUSED pc = abuf->addr;
8452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8453
8454{
8455frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8456if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8457 {
8458 USI opval = FLD (i_label16);
8459 sim_queue_pc_write (current_cpu, opval);
8460 written |= (1 << 3);
8461 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8462 }
8463}
8464}
8465
8466 abuf->written = written;
8467 return vpc;
8468#undef FLD
8469}
8470
8471/* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8472
8473static SEM_PC
8474SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8475{
8476#define FLD(f) abuf->fields.sfmt_fbne.f
8477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8478 int UNUSED written = 0;
8479 IADDR UNUSED pc = abuf->addr;
8480 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8481
8482{
8483frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8484if (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)))) {
8485 {
8486 USI opval = FLD (i_label16);
8487 sim_queue_pc_write (current_cpu, opval);
8488 written |= (1 << 3);
8489 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8490 }
8491}
8492}
8493
8494 abuf->written = written;
8495 return vpc;
8496#undef FLD
8497}
8498
8499/* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8500
8501static SEM_PC
8502SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8503{
8504#define FLD(f) abuf->fields.sfmt_fbne.f
8505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8506 int UNUSED written = 0;
8507 IADDR UNUSED pc = abuf->addr;
8508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8509
8510{
8511frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8512if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8513 {
8514 USI opval = FLD (i_label16);
8515 sim_queue_pc_write (current_cpu, opval);
8516 written |= (1 << 3);
8517 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8518 }
8519}
8520}
8521
8522 abuf->written = written;
8523 return vpc;
8524#undef FLD
8525}
8526
8527/* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8528
8529static SEM_PC
8530SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8531{
8532#define FLD(f) abuf->fields.sfmt_fbne.f
8533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8534 int UNUSED written = 0;
8535 IADDR UNUSED pc = abuf->addr;
8536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8537
8538{
8539frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8540if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8541 {
8542 USI opval = FLD (i_label16);
8543 sim_queue_pc_write (current_cpu, opval);
8544 written |= (1 << 3);
8545 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8546 }
8547}
8548}
8549
8550 abuf->written = written;
8551 return vpc;
8552#undef FLD
8553}
8554
8555/* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8556
8557static SEM_PC
8558SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8559{
8560#define FLD(f) abuf->fields.sfmt_fbne.f
8561 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8562 int UNUSED written = 0;
8563 IADDR UNUSED pc = abuf->addr;
8564 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8565
8566{
8567frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8568if (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)))) {
8569 {
8570 USI opval = FLD (i_label16);
8571 sim_queue_pc_write (current_cpu, opval);
8572 written |= (1 << 3);
8573 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8574 }
8575}
8576}
8577
8578 abuf->written = written;
8579 return vpc;
8580#undef FLD
8581}
8582
8583/* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8584
8585static SEM_PC
8586SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8587{
8588#define FLD(f) abuf->fields.sfmt_fbne.f
8589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8590 int UNUSED written = 0;
8591 IADDR UNUSED pc = abuf->addr;
8592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8593
8594{
8595frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8596if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8597 {
8598 USI opval = FLD (i_label16);
8599 sim_queue_pc_write (current_cpu, opval);
8600 written |= (1 << 3);
8601 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8602 }
8603}
8604}
8605
8606 abuf->written = written;
8607 return vpc;
8608#undef FLD
8609}
8610
8611/* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8612
8613static SEM_PC
8614SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8615{
8616#define FLD(f) abuf->fields.sfmt_fbne.f
8617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8618 int UNUSED written = 0;
8619 IADDR UNUSED pc = abuf->addr;
8620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8621
8622{
8623frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8624if (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))))) {
8625 {
8626 USI opval = FLD (i_label16);
8627 sim_queue_pc_write (current_cpu, opval);
8628 written |= (1 << 3);
8629 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8630 }
8631}
8632}
8633
8634 abuf->written = written;
8635 return vpc;
8636#undef FLD
8637}
8638
8639/* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8640
8641static SEM_PC
8642SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8643{
8644#define FLD(f) abuf->fields.sfmt_fbne.f
8645 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8646 int UNUSED written = 0;
8647 IADDR UNUSED pc = abuf->addr;
8648 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8649
8650{
8651frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8652if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8653 {
8654 USI opval = FLD (i_label16);
8655 sim_queue_pc_write (current_cpu, opval);
8656 written |= (1 << 3);
8657 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8658 }
8659}
8660}
8661
8662 abuf->written = written;
8663 return vpc;
8664#undef FLD
8665}
8666
8667/* fble: fble$pack $FCCi_2,$hint,$label16 */
8668
8669static SEM_PC
8670SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8671{
8672#define FLD(f) abuf->fields.sfmt_fbne.f
8673 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8674 int UNUSED written = 0;
8675 IADDR UNUSED pc = abuf->addr;
8676 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8677
8678{
8679frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8680if (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)))) {
8681 {
8682 USI opval = FLD (i_label16);
8683 sim_queue_pc_write (current_cpu, opval);
8684 written |= (1 << 3);
8685 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8686 }
8687}
8688}
8689
8690 abuf->written = written;
8691 return vpc;
8692#undef FLD
8693}
8694
8695/* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8696
8697static SEM_PC
8698SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8699{
8700#define FLD(f) abuf->fields.sfmt_fbne.f
8701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8702 int UNUSED written = 0;
8703 IADDR UNUSED pc = abuf->addr;
8704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8705
8706{
8707frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8708if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8709 {
8710 USI opval = FLD (i_label16);
8711 sim_queue_pc_write (current_cpu, opval);
8712 written |= (1 << 3);
8713 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8714 }
8715}
8716}
8717
8718 abuf->written = written;
8719 return vpc;
8720#undef FLD
8721}
8722
8723/* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8724
8725static SEM_PC
8726SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8727{
8728#define FLD(f) abuf->fields.sfmt_fbne.f
8729 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8730 int UNUSED written = 0;
8731 IADDR UNUSED pc = abuf->addr;
8732 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8733
8734{
8735frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8736if (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))))) {
8737 {
8738 USI opval = FLD (i_label16);
8739 sim_queue_pc_write (current_cpu, opval);
8740 written |= (1 << 3);
8741 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8742 }
8743}
8744}
8745
8746 abuf->written = written;
8747 return vpc;
8748#undef FLD
8749}
8750
8751/* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8752
8753static SEM_PC
8754SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8755{
8756#define FLD(f) abuf->fields.sfmt_fbne.f
8757 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8758 int UNUSED written = 0;
8759 IADDR UNUSED pc = abuf->addr;
8760 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8761
8762{
8763frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8764if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8765 {
8766 USI opval = FLD (i_label16);
8767 sim_queue_pc_write (current_cpu, opval);
8768 written |= (1 << 3);
8769 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8770 }
8771}
8772}
8773
8774 abuf->written = written;
8775 return vpc;
8776#undef FLD
8777}
8778
8779/* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8780
8781static SEM_PC
8782SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8783{
8784#define FLD(f) abuf->fields.sfmt_fbne.f
8785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8786 int UNUSED written = 0;
8787 IADDR UNUSED pc = abuf->addr;
8788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8789
8790{
8791frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8792if (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))))) {
8793 {
8794 USI opval = FLD (i_label16);
8795 sim_queue_pc_write (current_cpu, opval);
8796 written |= (1 << 3);
8797 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8798 }
8799}
8800}
8801
8802 abuf->written = written;
8803 return vpc;
8804#undef FLD
8805}
8806
8807/* bctrlr: bctrlr$pack $ccond,$hint */
8808
8809static SEM_PC
8810SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8811{
8812#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8814 int UNUSED written = 0;
8815 IADDR UNUSED pc = abuf->addr;
8816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8817
8818{
8819frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8820{
8821 SI tmp_tmp;
8822 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8823 {
8824 USI opval = tmp_tmp;
8825 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8826 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8827 }
8828if (EQSI (FLD (f_ccond), 0)) {
8829if (NESI (tmp_tmp, 0)) {
8830 {
8831 USI opval = GET_H_SPR (((UINT) 272));
8832 sim_queue_pc_write (current_cpu, opval);
8833 written |= (1 << 5);
8834 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8835 }
8836}
8837} else {
8838if (EQSI (tmp_tmp, 0)) {
8839 {
8840 USI opval = GET_H_SPR (((UINT) 272));
8841 sim_queue_pc_write (current_cpu, opval);
8842 written |= (1 << 5);
8843 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8844 }
8845}
8846}
8847}
8848}
8849
8850 abuf->written = written;
8851 return vpc;
8852#undef FLD
8853}
8854
8855/* bralr: bralr$pack$hint_taken */
8856
8857static SEM_PC
8858SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8859{
8860#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8862 int UNUSED written = 0;
8863 IADDR UNUSED pc = abuf->addr;
8864 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8865
8866{
8867frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8868 {
8869 USI opval = GET_H_SPR (((UINT) 272));
8870 sim_queue_pc_write (current_cpu, opval);
8871 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8872 }
8873}
8874
8875 return vpc;
8876#undef FLD
8877}
8878
8879/* bnolr: bnolr$pack$hint_not_taken */
8880
8881static SEM_PC
8882SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8883{
8884#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8886 int UNUSED written = 0;
8887 IADDR UNUSED pc = abuf->addr;
8888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8889
8890frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8891
8892 return vpc;
8893#undef FLD
8894}
8895
8896/* beqlr: beqlr$pack $ICCi_2,$hint */
8897
8898static SEM_PC
8899SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8900{
8901#define FLD(f) abuf->fields.sfmt_bceqlr.f
8902 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8903 int UNUSED written = 0;
8904 IADDR UNUSED pc = abuf->addr;
8905 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8906
8907{
8908frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8909if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8910 {
8911 USI opval = GET_H_SPR (((UINT) 272));
8912 sim_queue_pc_write (current_cpu, opval);
8913 written |= (1 << 3);
8914 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8915 }
8916}
8917}
8918
8919 abuf->written = written;
8920 return vpc;
8921#undef FLD
8922}
8923
8924/* bnelr: bnelr$pack $ICCi_2,$hint */
8925
8926static SEM_PC
8927SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8928{
8929#define FLD(f) abuf->fields.sfmt_bceqlr.f
8930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8931 int UNUSED written = 0;
8932 IADDR UNUSED pc = abuf->addr;
8933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8934
8935{
8936frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8937if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8938 {
8939 USI opval = GET_H_SPR (((UINT) 272));
8940 sim_queue_pc_write (current_cpu, opval);
8941 written |= (1 << 3);
8942 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8943 }
8944}
8945}
8946
8947 abuf->written = written;
8948 return vpc;
8949#undef FLD
8950}
8951
8952/* blelr: blelr$pack $ICCi_2,$hint */
8953
8954static SEM_PC
8955SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8956{
8957#define FLD(f) abuf->fields.sfmt_bceqlr.f
8958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8959 int UNUSED written = 0;
8960 IADDR UNUSED pc = abuf->addr;
8961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8962
8963{
8964frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8965if (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))))) {
8966 {
8967 USI opval = GET_H_SPR (((UINT) 272));
8968 sim_queue_pc_write (current_cpu, opval);
8969 written |= (1 << 3);
8970 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8971 }
8972}
8973}
8974
8975 abuf->written = written;
8976 return vpc;
8977#undef FLD
8978}
8979
8980/* bgtlr: bgtlr$pack $ICCi_2,$hint */
8981
8982static SEM_PC
8983SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8984{
8985#define FLD(f) abuf->fields.sfmt_bceqlr.f
8986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8987 int UNUSED written = 0;
8988 IADDR UNUSED pc = abuf->addr;
8989 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8990
8991{
8992frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8993if (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)))))) {
8994 {
8995 USI opval = GET_H_SPR (((UINT) 272));
8996 sim_queue_pc_write (current_cpu, opval);
8997 written |= (1 << 3);
8998 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8999 }
9000}
9001}
9002
9003 abuf->written = written;
9004 return vpc;
9005#undef FLD
9006}
9007
9008/* bltlr: bltlr$pack $ICCi_2,$hint */
9009
9010static SEM_PC
9011SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9012{
9013#define FLD(f) abuf->fields.sfmt_bceqlr.f
9014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9015 int UNUSED written = 0;
9016 IADDR UNUSED pc = abuf->addr;
9017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9018
9019{
9020frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9021if (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)))) {
9022 {
9023 USI opval = GET_H_SPR (((UINT) 272));
9024 sim_queue_pc_write (current_cpu, opval);
9025 written |= (1 << 3);
9026 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9027 }
9028}
9029}
9030
9031 abuf->written = written;
9032 return vpc;
9033#undef FLD
9034}
9035
9036/* bgelr: bgelr$pack $ICCi_2,$hint */
9037
9038static SEM_PC
9039SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9040{
9041#define FLD(f) abuf->fields.sfmt_bceqlr.f
9042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9043 int UNUSED written = 0;
9044 IADDR UNUSED pc = abuf->addr;
9045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9046
9047{
9048frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9049if (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))))) {
9050 {
9051 USI opval = GET_H_SPR (((UINT) 272));
9052 sim_queue_pc_write (current_cpu, opval);
9053 written |= (1 << 3);
9054 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9055 }
9056}
9057}
9058
9059 abuf->written = written;
9060 return vpc;
9061#undef FLD
9062}
9063
9064/* blslr: blslr$pack $ICCi_2,$hint */
9065
9066static SEM_PC
9067SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9068{
9069#define FLD(f) abuf->fields.sfmt_bceqlr.f
9070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9071 int UNUSED written = 0;
9072 IADDR UNUSED pc = abuf->addr;
9073 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9074
9075{
9076frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9077if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9078 {
9079 USI opval = GET_H_SPR (((UINT) 272));
9080 sim_queue_pc_write (current_cpu, opval);
9081 written |= (1 << 3);
9082 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9083 }
9084}
9085}
9086
9087 abuf->written = written;
9088 return vpc;
9089#undef FLD
9090}
9091
9092/* bhilr: bhilr$pack $ICCi_2,$hint */
9093
9094static SEM_PC
9095SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9096{
9097#define FLD(f) abuf->fields.sfmt_bceqlr.f
9098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9099 int UNUSED written = 0;
9100 IADDR UNUSED pc = abuf->addr;
9101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9102
9103{
9104frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9105if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
9106 {
9107 USI opval = GET_H_SPR (((UINT) 272));
9108 sim_queue_pc_write (current_cpu, opval);
9109 written |= (1 << 3);
9110 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9111 }
9112}
9113}
9114
9115 abuf->written = written;
9116 return vpc;
9117#undef FLD
9118}
9119
9120/* bclr: bclr$pack $ICCi_2,$hint */
9121
9122static SEM_PC
9123SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9124{
9125#define FLD(f) abuf->fields.sfmt_bceqlr.f
9126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9127 int UNUSED written = 0;
9128 IADDR UNUSED pc = abuf->addr;
9129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9130
9131{
9132frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9133if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9134 {
9135 USI opval = GET_H_SPR (((UINT) 272));
9136 sim_queue_pc_write (current_cpu, opval);
9137 written |= (1 << 3);
9138 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9139 }
9140}
9141}
9142
9143 abuf->written = written;
9144 return vpc;
9145#undef FLD
9146}
9147
9148/* bnclr: bnclr$pack $ICCi_2,$hint */
9149
9150static SEM_PC
9151SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9152{
9153#define FLD(f) abuf->fields.sfmt_bceqlr.f
9154 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9155 int UNUSED written = 0;
9156 IADDR UNUSED pc = abuf->addr;
9157 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9158
9159{
9160frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9161if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9162 {
9163 USI opval = GET_H_SPR (((UINT) 272));
9164 sim_queue_pc_write (current_cpu, opval);
9165 written |= (1 << 3);
9166 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9167 }
9168}
9169}
9170
9171 abuf->written = written;
9172 return vpc;
9173#undef FLD
9174}
9175
9176/* bnlr: bnlr$pack $ICCi_2,$hint */
9177
9178static SEM_PC
9179SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9180{
9181#define FLD(f) abuf->fields.sfmt_bceqlr.f
9182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9183 int UNUSED written = 0;
9184 IADDR UNUSED pc = abuf->addr;
9185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9186
9187{
9188frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9189if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9190 {
9191 USI opval = GET_H_SPR (((UINT) 272));
9192 sim_queue_pc_write (current_cpu, opval);
9193 written |= (1 << 3);
9194 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9195 }
9196}
9197}
9198
9199 abuf->written = written;
9200 return vpc;
9201#undef FLD
9202}
9203
9204/* bplr: bplr$pack $ICCi_2,$hint */
9205
9206static SEM_PC
9207SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9208{
9209#define FLD(f) abuf->fields.sfmt_bceqlr.f
9210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9211 int UNUSED written = 0;
9212 IADDR UNUSED pc = abuf->addr;
9213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9214
9215{
9216frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9217if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9218 {
9219 USI opval = GET_H_SPR (((UINT) 272));
9220 sim_queue_pc_write (current_cpu, opval);
9221 written |= (1 << 3);
9222 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9223 }
9224}
9225}
9226
9227 abuf->written = written;
9228 return vpc;
9229#undef FLD
9230}
9231
9232/* bvlr: bvlr$pack $ICCi_2,$hint */
9233
9234static SEM_PC
9235SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9236{
9237#define FLD(f) abuf->fields.sfmt_bceqlr.f
9238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9239 int UNUSED written = 0;
9240 IADDR UNUSED pc = abuf->addr;
9241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9242
9243{
9244frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9245if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9246 {
9247 USI opval = GET_H_SPR (((UINT) 272));
9248 sim_queue_pc_write (current_cpu, opval);
9249 written |= (1 << 3);
9250 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9251 }
9252}
9253}
9254
9255 abuf->written = written;
9256 return vpc;
9257#undef FLD
9258}
9259
9260/* bnvlr: bnvlr$pack $ICCi_2,$hint */
9261
9262static SEM_PC
9263SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9264{
9265#define FLD(f) abuf->fields.sfmt_bceqlr.f
9266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9267 int UNUSED written = 0;
9268 IADDR UNUSED pc = abuf->addr;
9269 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9270
9271{
9272frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9273if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9274 {
9275 USI opval = GET_H_SPR (((UINT) 272));
9276 sim_queue_pc_write (current_cpu, opval);
9277 written |= (1 << 3);
9278 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9279 }
9280}
9281}
9282
9283 abuf->written = written;
9284 return vpc;
9285#undef FLD
9286}
9287
9288/* fbralr: fbralr$pack$hint_taken */
9289
9290static SEM_PC
9291SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9292{
9293#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9295 int UNUSED written = 0;
9296 IADDR UNUSED pc = abuf->addr;
9297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9298
9299{
9300frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9301 {
9302 USI opval = GET_H_SPR (((UINT) 272));
9303 sim_queue_pc_write (current_cpu, opval);
9304 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9305 }
9306}
9307
9308 return vpc;
9309#undef FLD
9310}
9311
9312/* fbnolr: fbnolr$pack$hint_not_taken */
9313
9314static SEM_PC
9315SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9316{
9317#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9319 int UNUSED written = 0;
9320 IADDR UNUSED pc = abuf->addr;
9321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9322
9323frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9324
9325 return vpc;
9326#undef FLD
9327}
9328
9329/* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9330
9331static SEM_PC
9332SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9333{
9334#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9336 int UNUSED written = 0;
9337 IADDR UNUSED pc = abuf->addr;
9338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9339
9340{
9341frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9342if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9343 {
9344 USI opval = GET_H_SPR (((UINT) 272));
9345 sim_queue_pc_write (current_cpu, opval);
9346 written |= (1 << 3);
9347 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9348 }
9349}
9350}
9351
9352 abuf->written = written;
9353 return vpc;
9354#undef FLD
9355}
9356
9357/* fbnelr: fbnelr$pack $FCCi_2,$hint */
9358
9359static SEM_PC
9360SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9361{
9362#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9364 int UNUSED written = 0;
9365 IADDR UNUSED pc = abuf->addr;
9366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9367
9368{
9369frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9370if (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))))) {
9371 {
9372 USI opval = GET_H_SPR (((UINT) 272));
9373 sim_queue_pc_write (current_cpu, opval);
9374 written |= (1 << 3);
9375 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9376 }
9377}
9378}
9379
9380 abuf->written = written;
9381 return vpc;
9382#undef FLD
9383}
9384
9385/* fblglr: fblglr$pack $FCCi_2,$hint */
9386
9387static SEM_PC
9388SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9389{
9390#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9392 int UNUSED written = 0;
9393 IADDR UNUSED pc = abuf->addr;
9394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9395
9396{
9397frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9398if (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)))) {
9399 {
9400 USI opval = GET_H_SPR (((UINT) 272));
9401 sim_queue_pc_write (current_cpu, opval);
9402 written |= (1 << 3);
9403 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9404 }
9405}
9406}
9407
9408 abuf->written = written;
9409 return vpc;
9410#undef FLD
9411}
9412
9413/* fbuelr: fbuelr$pack $FCCi_2,$hint */
9414
9415static SEM_PC
9416SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9417{
9418#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9420 int UNUSED written = 0;
9421 IADDR UNUSED pc = abuf->addr;
9422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9423
9424{
9425frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9426if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9427 {
9428 USI opval = GET_H_SPR (((UINT) 272));
9429 sim_queue_pc_write (current_cpu, opval);
9430 written |= (1 << 3);
9431 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9432 }
9433}
9434}
9435
9436 abuf->written = written;
9437 return vpc;
9438#undef FLD
9439}
9440
9441/* fbullr: fbullr$pack $FCCi_2,$hint */
9442
9443static SEM_PC
9444SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9445{
9446#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9448 int UNUSED written = 0;
9449 IADDR UNUSED pc = abuf->addr;
9450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9451
9452{
9453frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9454if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9455 {
9456 USI opval = GET_H_SPR (((UINT) 272));
9457 sim_queue_pc_write (current_cpu, opval);
9458 written |= (1 << 3);
9459 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9460 }
9461}
9462}
9463
9464 abuf->written = written;
9465 return vpc;
9466#undef FLD
9467}
9468
9469/* fbgelr: fbgelr$pack $FCCi_2,$hint */
9470
9471static SEM_PC
9472SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9473{
9474#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9475 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9476 int UNUSED written = 0;
9477 IADDR UNUSED pc = abuf->addr;
9478 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9479
9480{
9481frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9482if (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)))) {
9483 {
9484 USI opval = GET_H_SPR (((UINT) 272));
9485 sim_queue_pc_write (current_cpu, opval);
9486 written |= (1 << 3);
9487 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9488 }
9489}
9490}
9491
9492 abuf->written = written;
9493 return vpc;
9494#undef FLD
9495}
9496
9497/* fbltlr: fbltlr$pack $FCCi_2,$hint */
9498
9499static SEM_PC
9500SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9501{
9502#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9504 int UNUSED written = 0;
9505 IADDR UNUSED pc = abuf->addr;
9506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9507
9508{
9509frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9510if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9511 {
9512 USI opval = GET_H_SPR (((UINT) 272));
9513 sim_queue_pc_write (current_cpu, opval);
9514 written |= (1 << 3);
9515 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9516 }
9517}
9518}
9519
9520 abuf->written = written;
9521 return vpc;
9522#undef FLD
9523}
9524
9525/* fbugelr: fbugelr$pack $FCCi_2,$hint */
9526
9527static SEM_PC
9528SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9529{
9530#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9531 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9532 int UNUSED written = 0;
9533 IADDR UNUSED pc = abuf->addr;
9534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9535
9536{
9537frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9538if (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))))) {
9539 {
9540 USI opval = GET_H_SPR (((UINT) 272));
9541 sim_queue_pc_write (current_cpu, opval);
9542 written |= (1 << 3);
9543 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9544 }
9545}
9546}
9547
9548 abuf->written = written;
9549 return vpc;
9550#undef FLD
9551}
9552
9553/* fbuglr: fbuglr$pack $FCCi_2,$hint */
9554
9555static SEM_PC
9556SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9557{
9558#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9560 int UNUSED written = 0;
9561 IADDR UNUSED pc = abuf->addr;
9562 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9563
9564{
9565frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9566if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9567 {
9568 USI opval = GET_H_SPR (((UINT) 272));
9569 sim_queue_pc_write (current_cpu, opval);
9570 written |= (1 << 3);
9571 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9572 }
9573}
9574}
9575
9576 abuf->written = written;
9577 return vpc;
9578#undef FLD
9579}
9580
9581/* fblelr: fblelr$pack $FCCi_2,$hint */
9582
9583static SEM_PC
9584SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9585{
9586#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9588 int UNUSED written = 0;
9589 IADDR UNUSED pc = abuf->addr;
9590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9591
9592{
9593frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9594if (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)))) {
9595 {
9596 USI opval = GET_H_SPR (((UINT) 272));
9597 sim_queue_pc_write (current_cpu, opval);
9598 written |= (1 << 3);
9599 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9600 }
9601}
9602}
9603
9604 abuf->written = written;
9605 return vpc;
9606#undef FLD
9607}
9608
9609/* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9610
9611static SEM_PC
9612SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9613{
9614#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9616 int UNUSED written = 0;
9617 IADDR UNUSED pc = abuf->addr;
9618 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9619
9620{
9621frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9622if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9623 {
9624 USI opval = GET_H_SPR (((UINT) 272));
9625 sim_queue_pc_write (current_cpu, opval);
9626 written |= (1 << 3);
9627 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9628 }
9629}
9630}
9631
9632 abuf->written = written;
9633 return vpc;
9634#undef FLD
9635}
9636
9637/* fbulelr: fbulelr$pack $FCCi_2,$hint */
9638
9639static SEM_PC
9640SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9641{
9642#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9644 int UNUSED written = 0;
9645 IADDR UNUSED pc = abuf->addr;
9646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9647
9648{
9649frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9650if (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))))) {
9651 {
9652 USI opval = GET_H_SPR (((UINT) 272));
9653 sim_queue_pc_write (current_cpu, opval);
9654 written |= (1 << 3);
9655 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9656 }
9657}
9658}
9659
9660 abuf->written = written;
9661 return vpc;
9662#undef FLD
9663}
9664
9665/* fbulr: fbulr$pack $FCCi_2,$hint */
9666
9667static SEM_PC
9668SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9669{
9670#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9671 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9672 int UNUSED written = 0;
9673 IADDR UNUSED pc = abuf->addr;
9674 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9675
9676{
9677frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9678if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9679 {
9680 USI opval = GET_H_SPR (((UINT) 272));
9681 sim_queue_pc_write (current_cpu, opval);
9682 written |= (1 << 3);
9683 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9684 }
9685}
9686}
9687
9688 abuf->written = written;
9689 return vpc;
9690#undef FLD
9691}
9692
9693/* fbolr: fbolr$pack $FCCi_2,$hint */
9694
9695static SEM_PC
9696SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9697{
9698#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9700 int UNUSED written = 0;
9701 IADDR UNUSED pc = abuf->addr;
9702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9703
9704{
9705frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9706if (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))))) {
9707 {
9708 USI opval = GET_H_SPR (((UINT) 272));
9709 sim_queue_pc_write (current_cpu, opval);
9710 written |= (1 << 3);
9711 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9712 }
9713}
9714}
9715
9716 abuf->written = written;
9717 return vpc;
9718#undef FLD
9719}
9720
9721/* bcralr: bcralr$pack $ccond$hint_taken */
9722
9723static SEM_PC
9724SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9725{
9726#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9728 int UNUSED written = 0;
9729 IADDR UNUSED pc = abuf->addr;
9730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9731
9732{
9733frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9734{
9735 SI tmp_tmp;
9736 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9737 {
9738 USI opval = tmp_tmp;
9739 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9740 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9741 }
9742if (EQSI (FLD (f_ccond), 0)) {
9743if (NESI (tmp_tmp, 0)) {
9744 {
9745 USI opval = GET_H_SPR (((UINT) 272));
9746 sim_queue_pc_write (current_cpu, opval);
9747 written |= (1 << 5);
9748 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9749 }
9750}
9751} else {
9752if (EQSI (tmp_tmp, 0)) {
9753 {
9754 USI opval = GET_H_SPR (((UINT) 272));
9755 sim_queue_pc_write (current_cpu, opval);
9756 written |= (1 << 5);
9757 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9758 }
9759}
9760}
9761}
9762}
9763
9764 abuf->written = written;
9765 return vpc;
9766#undef FLD
9767}
9768
9769/* bcnolr: bcnolr$pack$hint_not_taken */
9770
9771static SEM_PC
9772SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9773{
9774#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9776 int UNUSED written = 0;
9777 IADDR UNUSED pc = abuf->addr;
9778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9779
9780{
9781frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9782{
9783 SI tmp_tmp;
9784 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9785 {
9786 USI opval = tmp_tmp;
9787 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9788 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9789 }
9790((void) 0); /*nop*/
9791}
9792}
9793
9794 return vpc;
9795#undef FLD
9796}
9797
9798/* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9799
9800static SEM_PC
9801SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9802{
9803#define FLD(f) abuf->fields.sfmt_bceqlr.f
9804 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9805 int UNUSED written = 0;
9806 IADDR UNUSED pc = abuf->addr;
9807 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9808
9809{
9810frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9811{
9812 SI tmp_tmp;
9813 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9814 {
9815 USI opval = tmp_tmp;
9816 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9817 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9818 }
9819if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9820if (EQSI (FLD (f_ccond), 0)) {
9821if (NESI (tmp_tmp, 0)) {
9822 {
9823 USI opval = GET_H_SPR (((UINT) 272));
9824 sim_queue_pc_write (current_cpu, opval);
9825 written |= (1 << 6);
9826 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9827 }
9828}
9829} else {
9830if (EQSI (tmp_tmp, 0)) {
9831 {
9832 USI opval = GET_H_SPR (((UINT) 272));
9833 sim_queue_pc_write (current_cpu, opval);
9834 written |= (1 << 6);
9835 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9836 }
9837}
9838}
9839}
9840}
9841}
9842
9843 abuf->written = written;
9844 return vpc;
9845#undef FLD
9846}
9847
9848/* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9849
9850static SEM_PC
9851SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9852{
9853#define FLD(f) abuf->fields.sfmt_bceqlr.f
9854 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9855 int UNUSED written = 0;
9856 IADDR UNUSED pc = abuf->addr;
9857 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9858
9859{
9860frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9861{
9862 SI tmp_tmp;
9863 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9864 {
9865 USI opval = tmp_tmp;
9866 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9867 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9868 }
9869if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9870if (EQSI (FLD (f_ccond), 0)) {
9871if (NESI (tmp_tmp, 0)) {
9872 {
9873 USI opval = GET_H_SPR (((UINT) 272));
9874 sim_queue_pc_write (current_cpu, opval);
9875 written |= (1 << 6);
9876 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9877 }
9878}
9879} else {
9880if (EQSI (tmp_tmp, 0)) {
9881 {
9882 USI opval = GET_H_SPR (((UINT) 272));
9883 sim_queue_pc_write (current_cpu, opval);
9884 written |= (1 << 6);
9885 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9886 }
9887}
9888}
9889}
9890}
9891}
9892
9893 abuf->written = written;
9894 return vpc;
9895#undef FLD
9896}
9897
9898/* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9899
9900static SEM_PC
9901SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9902{
9903#define FLD(f) abuf->fields.sfmt_bceqlr.f
9904 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9905 int UNUSED written = 0;
9906 IADDR UNUSED pc = abuf->addr;
9907 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9908
9909{
9910frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9911{
9912 SI tmp_tmp;
9913 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9914 {
9915 USI opval = tmp_tmp;
9916 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9917 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9918 }
9919if (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))))) {
9920if (EQSI (FLD (f_ccond), 0)) {
9921if (NESI (tmp_tmp, 0)) {
9922 {
9923 USI opval = GET_H_SPR (((UINT) 272));
9924 sim_queue_pc_write (current_cpu, opval);
9925 written |= (1 << 6);
9926 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9927 }
9928}
9929} else {
9930if (EQSI (tmp_tmp, 0)) {
9931 {
9932 USI opval = GET_H_SPR (((UINT) 272));
9933 sim_queue_pc_write (current_cpu, opval);
9934 written |= (1 << 6);
9935 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9936 }
9937}
9938}
9939}
9940}
9941}
9942
9943 abuf->written = written;
9944 return vpc;
9945#undef FLD
9946}
9947
9948/* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
9949
9950static SEM_PC
9951SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9952{
9953#define FLD(f) abuf->fields.sfmt_bceqlr.f
9954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9955 int UNUSED written = 0;
9956 IADDR UNUSED pc = abuf->addr;
9957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9958
9959{
9960frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9961{
9962 SI tmp_tmp;
9963 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9964 {
9965 USI opval = tmp_tmp;
9966 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9967 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9968 }
9969if (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)))))) {
9970if (EQSI (FLD (f_ccond), 0)) {
9971if (NESI (tmp_tmp, 0)) {
9972 {
9973 USI opval = GET_H_SPR (((UINT) 272));
9974 sim_queue_pc_write (current_cpu, opval);
9975 written |= (1 << 6);
9976 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9977 }
9978}
9979} else {
9980if (EQSI (tmp_tmp, 0)) {
9981 {
9982 USI opval = GET_H_SPR (((UINT) 272));
9983 sim_queue_pc_write (current_cpu, opval);
9984 written |= (1 << 6);
9985 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9986 }
9987}
9988}
9989}
9990}
9991}
9992
9993 abuf->written = written;
9994 return vpc;
9995#undef FLD
9996}
9997
9998/* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
9999
10000static SEM_PC
10001SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10002{
10003#define FLD(f) abuf->fields.sfmt_bceqlr.f
10004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10005 int UNUSED written = 0;
10006 IADDR UNUSED pc = abuf->addr;
10007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10008
10009{
10010frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10011{
10012 SI tmp_tmp;
10013 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10014 {
10015 USI opval = tmp_tmp;
10016 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10017 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10018 }
10019if (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)))) {
10020if (EQSI (FLD (f_ccond), 0)) {
10021if (NESI (tmp_tmp, 0)) {
10022 {
10023 USI opval = GET_H_SPR (((UINT) 272));
10024 sim_queue_pc_write (current_cpu, opval);
10025 written |= (1 << 6);
10026 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10027 }
10028}
10029} else {
10030if (EQSI (tmp_tmp, 0)) {
10031 {
10032 USI opval = GET_H_SPR (((UINT) 272));
10033 sim_queue_pc_write (current_cpu, opval);
10034 written |= (1 << 6);
10035 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10036 }
10037}
10038}
10039}
10040}
10041}
10042
10043 abuf->written = written;
10044 return vpc;
10045#undef FLD
10046}
10047
10048/* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10049
10050static SEM_PC
10051SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10052{
10053#define FLD(f) abuf->fields.sfmt_bceqlr.f
10054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10055 int UNUSED written = 0;
10056 IADDR UNUSED pc = abuf->addr;
10057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10058
10059{
10060frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10061{
10062 SI tmp_tmp;
10063 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10064 {
10065 USI opval = tmp_tmp;
10066 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10067 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10068 }
10069if (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))))) {
10070if (EQSI (FLD (f_ccond), 0)) {
10071if (NESI (tmp_tmp, 0)) {
10072 {
10073 USI opval = GET_H_SPR (((UINT) 272));
10074 sim_queue_pc_write (current_cpu, opval);
10075 written |= (1 << 6);
10076 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10077 }
10078}
10079} else {
10080if (EQSI (tmp_tmp, 0)) {
10081 {
10082 USI opval = GET_H_SPR (((UINT) 272));
10083 sim_queue_pc_write (current_cpu, opval);
10084 written |= (1 << 6);
10085 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10086 }
10087}
10088}
10089}
10090}
10091}
10092
10093 abuf->written = written;
10094 return vpc;
10095#undef FLD
10096}
10097
10098/* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10099
10100static SEM_PC
10101SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10102{
10103#define FLD(f) abuf->fields.sfmt_bceqlr.f
10104 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10105 int UNUSED written = 0;
10106 IADDR UNUSED pc = abuf->addr;
10107 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10108
10109{
10110frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10111{
10112 SI tmp_tmp;
10113 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10114 {
10115 USI opval = tmp_tmp;
10116 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10117 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10118 }
10119if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10120if (EQSI (FLD (f_ccond), 0)) {
10121if (NESI (tmp_tmp, 0)) {
10122 {
10123 USI opval = GET_H_SPR (((UINT) 272));
10124 sim_queue_pc_write (current_cpu, opval);
10125 written |= (1 << 6);
10126 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10127 }
10128}
10129} else {
10130if (EQSI (tmp_tmp, 0)) {
10131 {
10132 USI opval = GET_H_SPR (((UINT) 272));
10133 sim_queue_pc_write (current_cpu, opval);
10134 written |= (1 << 6);
10135 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10136 }
10137}
10138}
10139}
10140}
10141}
10142
10143 abuf->written = written;
10144 return vpc;
10145#undef FLD
10146}
10147
10148/* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10149
10150static SEM_PC
10151SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10152{
10153#define FLD(f) abuf->fields.sfmt_bceqlr.f
10154 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10155 int UNUSED written = 0;
10156 IADDR UNUSED pc = abuf->addr;
10157 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10158
10159{
10160frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10161{
10162 SI tmp_tmp;
10163 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10164 {
10165 USI opval = tmp_tmp;
10166 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10167 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10168 }
10169if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
10170if (EQSI (FLD (f_ccond), 0)) {
10171if (NESI (tmp_tmp, 0)) {
10172 {
10173 USI opval = GET_H_SPR (((UINT) 272));
10174 sim_queue_pc_write (current_cpu, opval);
10175 written |= (1 << 6);
10176 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10177 }
10178}
10179} else {
10180if (EQSI (tmp_tmp, 0)) {
10181 {
10182 USI opval = GET_H_SPR (((UINT) 272));
10183 sim_queue_pc_write (current_cpu, opval);
10184 written |= (1 << 6);
10185 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10186 }
10187}
10188}
10189}
10190}
10191}
10192
10193 abuf->written = written;
10194 return vpc;
10195#undef FLD
10196}
10197
10198/* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10199
10200static SEM_PC
10201SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10202{
10203#define FLD(f) abuf->fields.sfmt_bceqlr.f
10204 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10205 int UNUSED written = 0;
10206 IADDR UNUSED pc = abuf->addr;
10207 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10208
10209{
10210frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10211{
10212 SI tmp_tmp;
10213 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10214 {
10215 USI opval = tmp_tmp;
10216 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10217 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10218 }
10219if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10220if (EQSI (FLD (f_ccond), 0)) {
10221if (NESI (tmp_tmp, 0)) {
10222 {
10223 USI opval = GET_H_SPR (((UINT) 272));
10224 sim_queue_pc_write (current_cpu, opval);
10225 written |= (1 << 6);
10226 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10227 }
10228}
10229} else {
10230if (EQSI (tmp_tmp, 0)) {
10231 {
10232 USI opval = GET_H_SPR (((UINT) 272));
10233 sim_queue_pc_write (current_cpu, opval);
10234 written |= (1 << 6);
10235 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10236 }
10237}
10238}
10239}
10240}
10241}
10242
10243 abuf->written = written;
10244 return vpc;
10245#undef FLD
10246}
10247
10248/* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10249
10250static SEM_PC
10251SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10252{
10253#define FLD(f) abuf->fields.sfmt_bceqlr.f
10254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10255 int UNUSED written = 0;
10256 IADDR UNUSED pc = abuf->addr;
10257 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10258
10259{
10260frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10261{
10262 SI tmp_tmp;
10263 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10264 {
10265 USI opval = tmp_tmp;
10266 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10267 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10268 }
10269if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10270if (EQSI (FLD (f_ccond), 0)) {
10271if (NESI (tmp_tmp, 0)) {
10272 {
10273 USI opval = GET_H_SPR (((UINT) 272));
10274 sim_queue_pc_write (current_cpu, opval);
10275 written |= (1 << 6);
10276 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10277 }
10278}
10279} else {
10280if (EQSI (tmp_tmp, 0)) {
10281 {
10282 USI opval = GET_H_SPR (((UINT) 272));
10283 sim_queue_pc_write (current_cpu, opval);
10284 written |= (1 << 6);
10285 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10286 }
10287}
10288}
10289}
10290}
10291}
10292
10293 abuf->written = written;
10294 return vpc;
10295#undef FLD
10296}
10297
10298/* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10299
10300static SEM_PC
10301SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10302{
10303#define FLD(f) abuf->fields.sfmt_bceqlr.f
10304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10305 int UNUSED written = 0;
10306 IADDR UNUSED pc = abuf->addr;
10307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10308
10309{
10310frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10311{
10312 SI tmp_tmp;
10313 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10314 {
10315 USI opval = tmp_tmp;
10316 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10317 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10318 }
10319if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10320if (EQSI (FLD (f_ccond), 0)) {
10321if (NESI (tmp_tmp, 0)) {
10322 {
10323 USI opval = GET_H_SPR (((UINT) 272));
10324 sim_queue_pc_write (current_cpu, opval);
10325 written |= (1 << 6);
10326 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10327 }
10328}
10329} else {
10330if (EQSI (tmp_tmp, 0)) {
10331 {
10332 USI opval = GET_H_SPR (((UINT) 272));
10333 sim_queue_pc_write (current_cpu, opval);
10334 written |= (1 << 6);
10335 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10336 }
10337}
10338}
10339}
10340}
10341}
10342
10343 abuf->written = written;
10344 return vpc;
10345#undef FLD
10346}
10347
10348/* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10349
10350static SEM_PC
10351SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10352{
10353#define FLD(f) abuf->fields.sfmt_bceqlr.f
10354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10355 int UNUSED written = 0;
10356 IADDR UNUSED pc = abuf->addr;
10357 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10358
10359{
10360frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10361{
10362 SI tmp_tmp;
10363 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10364 {
10365 USI opval = tmp_tmp;
10366 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10367 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10368 }
10369if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10370if (EQSI (FLD (f_ccond), 0)) {
10371if (NESI (tmp_tmp, 0)) {
10372 {
10373 USI opval = GET_H_SPR (((UINT) 272));
10374 sim_queue_pc_write (current_cpu, opval);
10375 written |= (1 << 6);
10376 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10377 }
10378}
10379} else {
10380if (EQSI (tmp_tmp, 0)) {
10381 {
10382 USI opval = GET_H_SPR (((UINT) 272));
10383 sim_queue_pc_write (current_cpu, opval);
10384 written |= (1 << 6);
10385 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10386 }
10387}
10388}
10389}
10390}
10391}
10392
10393 abuf->written = written;
10394 return vpc;
10395#undef FLD
10396}
10397
10398/* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10399
10400static SEM_PC
10401SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10402{
10403#define FLD(f) abuf->fields.sfmt_bceqlr.f
10404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10405 int UNUSED written = 0;
10406 IADDR UNUSED pc = abuf->addr;
10407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10408
10409{
10410frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10411{
10412 SI tmp_tmp;
10413 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10414 {
10415 USI opval = tmp_tmp;
10416 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10417 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10418 }
10419if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10420if (EQSI (FLD (f_ccond), 0)) {
10421if (NESI (tmp_tmp, 0)) {
10422 {
10423 USI opval = GET_H_SPR (((UINT) 272));
10424 sim_queue_pc_write (current_cpu, opval);
10425 written |= (1 << 6);
10426 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10427 }
10428}
10429} else {
10430if (EQSI (tmp_tmp, 0)) {
10431 {
10432 USI opval = GET_H_SPR (((UINT) 272));
10433 sim_queue_pc_write (current_cpu, opval);
10434 written |= (1 << 6);
10435 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10436 }
10437}
10438}
10439}
10440}
10441}
10442
10443 abuf->written = written;
10444 return vpc;
10445#undef FLD
10446}
10447
10448/* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10449
10450static SEM_PC
10451SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10452{
10453#define FLD(f) abuf->fields.sfmt_bceqlr.f
10454 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10455 int UNUSED written = 0;
10456 IADDR UNUSED pc = abuf->addr;
10457 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10458
10459{
10460frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10461{
10462 SI tmp_tmp;
10463 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10464 {
10465 USI opval = tmp_tmp;
10466 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10467 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10468 }
10469if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10470if (EQSI (FLD (f_ccond), 0)) {
10471if (NESI (tmp_tmp, 0)) {
10472 {
10473 USI opval = GET_H_SPR (((UINT) 272));
10474 sim_queue_pc_write (current_cpu, opval);
10475 written |= (1 << 6);
10476 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10477 }
10478}
10479} else {
10480if (EQSI (tmp_tmp, 0)) {
10481 {
10482 USI opval = GET_H_SPR (((UINT) 272));
10483 sim_queue_pc_write (current_cpu, opval);
10484 written |= (1 << 6);
10485 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10486 }
10487}
10488}
10489}
10490}
10491}
10492
10493 abuf->written = written;
10494 return vpc;
10495#undef FLD
10496}
10497
10498/* fcbralr: fcbralr$pack $ccond$hint_taken */
10499
10500static SEM_PC
10501SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10502{
10503#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10505 int UNUSED written = 0;
10506 IADDR UNUSED pc = abuf->addr;
10507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10508
10509{
10510frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10511{
10512 SI tmp_tmp;
10513 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10514 {
10515 USI opval = tmp_tmp;
10516 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10517 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10518 }
10519if (EQSI (FLD (f_ccond), 0)) {
10520if (NESI (tmp_tmp, 0)) {
10521 {
10522 USI opval = GET_H_SPR (((UINT) 272));
10523 sim_queue_pc_write (current_cpu, opval);
10524 written |= (1 << 5);
10525 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10526 }
10527}
10528} else {
10529if (EQSI (tmp_tmp, 0)) {
10530 {
10531 USI opval = GET_H_SPR (((UINT) 272));
10532 sim_queue_pc_write (current_cpu, opval);
10533 written |= (1 << 5);
10534 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10535 }
10536}
10537}
10538}
10539}
10540
10541 abuf->written = written;
10542 return vpc;
10543#undef FLD
10544}
10545
10546/* fcbnolr: fcbnolr$pack$hint_not_taken */
10547
10548static SEM_PC
10549SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10550{
10551#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10553 int UNUSED written = 0;
10554 IADDR UNUSED pc = abuf->addr;
10555 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10556
10557{
10558frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10559{
10560 SI tmp_tmp;
10561 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10562 {
10563 USI opval = tmp_tmp;
10564 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10565 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10566 }
10567((void) 0); /*nop*/
10568}
10569}
10570
10571 return vpc;
10572#undef FLD
10573}
10574
10575/* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10576
10577static SEM_PC
10578SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10579{
10580#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10582 int UNUSED written = 0;
10583 IADDR UNUSED pc = abuf->addr;
10584 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10585
10586{
10587frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10588{
10589 SI tmp_tmp;
10590 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10591 {
10592 USI opval = tmp_tmp;
10593 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10594 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10595 }
10596if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10597if (EQSI (FLD (f_ccond), 0)) {
10598if (NESI (tmp_tmp, 0)) {
10599 {
10600 USI opval = GET_H_SPR (((UINT) 272));
10601 sim_queue_pc_write (current_cpu, opval);
10602 written |= (1 << 6);
10603 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10604 }
10605}
10606} else {
10607if (EQSI (tmp_tmp, 0)) {
10608 {
10609 USI opval = GET_H_SPR (((UINT) 272));
10610 sim_queue_pc_write (current_cpu, opval);
10611 written |= (1 << 6);
10612 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10613 }
10614}
10615}
10616}
10617}
10618}
10619
10620 abuf->written = written;
10621 return vpc;
10622#undef FLD
10623}
10624
10625/* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10626
10627static SEM_PC
10628SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10629{
10630#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10632 int UNUSED written = 0;
10633 IADDR UNUSED pc = abuf->addr;
10634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10635
10636{
10637frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10638{
10639 SI tmp_tmp;
10640 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10641 {
10642 USI opval = tmp_tmp;
10643 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10644 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10645 }
10646if (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))))) {
10647if (EQSI (FLD (f_ccond), 0)) {
10648if (NESI (tmp_tmp, 0)) {
10649 {
10650 USI opval = GET_H_SPR (((UINT) 272));
10651 sim_queue_pc_write (current_cpu, opval);
10652 written |= (1 << 6);
10653 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10654 }
10655}
10656} else {
10657if (EQSI (tmp_tmp, 0)) {
10658 {
10659 USI opval = GET_H_SPR (((UINT) 272));
10660 sim_queue_pc_write (current_cpu, opval);
10661 written |= (1 << 6);
10662 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10663 }
10664}
10665}
10666}
10667}
10668}
10669
10670 abuf->written = written;
10671 return vpc;
10672#undef FLD
10673}
10674
10675/* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10676
10677static SEM_PC
10678SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10679{
10680#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10682 int UNUSED written = 0;
10683 IADDR UNUSED pc = abuf->addr;
10684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10685
10686{
10687frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10688{
10689 SI tmp_tmp;
10690 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10691 {
10692 USI opval = tmp_tmp;
10693 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10694 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10695 }
10696if (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)))) {
10697if (EQSI (FLD (f_ccond), 0)) {
10698if (NESI (tmp_tmp, 0)) {
10699 {
10700 USI opval = GET_H_SPR (((UINT) 272));
10701 sim_queue_pc_write (current_cpu, opval);
10702 written |= (1 << 6);
10703 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10704 }
10705}
10706} else {
10707if (EQSI (tmp_tmp, 0)) {
10708 {
10709 USI opval = GET_H_SPR (((UINT) 272));
10710 sim_queue_pc_write (current_cpu, opval);
10711 written |= (1 << 6);
10712 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10713 }
10714}
10715}
10716}
10717}
10718}
10719
10720 abuf->written = written;
10721 return vpc;
10722#undef FLD
10723}
10724
10725/* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10726
10727static SEM_PC
10728SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10729{
10730#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10732 int UNUSED written = 0;
10733 IADDR UNUSED pc = abuf->addr;
10734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10735
10736{
10737frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10738{
10739 SI tmp_tmp;
10740 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10741 {
10742 USI opval = tmp_tmp;
10743 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10744 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10745 }
10746if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10747if (EQSI (FLD (f_ccond), 0)) {
10748if (NESI (tmp_tmp, 0)) {
10749 {
10750 USI opval = GET_H_SPR (((UINT) 272));
10751 sim_queue_pc_write (current_cpu, opval);
10752 written |= (1 << 6);
10753 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10754 }
10755}
10756} else {
10757if (EQSI (tmp_tmp, 0)) {
10758 {
10759 USI opval = GET_H_SPR (((UINT) 272));
10760 sim_queue_pc_write (current_cpu, opval);
10761 written |= (1 << 6);
10762 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10763 }
10764}
10765}
10766}
10767}
10768}
10769
10770 abuf->written = written;
10771 return vpc;
10772#undef FLD
10773}
10774
10775/* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10776
10777static SEM_PC
10778SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10779{
10780#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10782 int UNUSED written = 0;
10783 IADDR UNUSED pc = abuf->addr;
10784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10785
10786{
10787frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10788{
10789 SI tmp_tmp;
10790 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10791 {
10792 USI opval = tmp_tmp;
10793 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10794 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10795 }
10796if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10797if (EQSI (FLD (f_ccond), 0)) {
10798if (NESI (tmp_tmp, 0)) {
10799 {
10800 USI opval = GET_H_SPR (((UINT) 272));
10801 sim_queue_pc_write (current_cpu, opval);
10802 written |= (1 << 6);
10803 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10804 }
10805}
10806} else {
10807if (EQSI (tmp_tmp, 0)) {
10808 {
10809 USI opval = GET_H_SPR (((UINT) 272));
10810 sim_queue_pc_write (current_cpu, opval);
10811 written |= (1 << 6);
10812 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10813 }
10814}
10815}
10816}
10817}
10818}
10819
10820 abuf->written = written;
10821 return vpc;
10822#undef FLD
10823}
10824
10825/* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10826
10827static SEM_PC
10828SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10829{
10830#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10831 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10832 int UNUSED written = 0;
10833 IADDR UNUSED pc = abuf->addr;
10834 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10835
10836{
10837frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10838{
10839 SI tmp_tmp;
10840 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10841 {
10842 USI opval = tmp_tmp;
10843 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10844 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10845 }
10846if (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)))) {
10847if (EQSI (FLD (f_ccond), 0)) {
10848if (NESI (tmp_tmp, 0)) {
10849 {
10850 USI opval = GET_H_SPR (((UINT) 272));
10851 sim_queue_pc_write (current_cpu, opval);
10852 written |= (1 << 6);
10853 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10854 }
10855}
10856} else {
10857if (EQSI (tmp_tmp, 0)) {
10858 {
10859 USI opval = GET_H_SPR (((UINT) 272));
10860 sim_queue_pc_write (current_cpu, opval);
10861 written |= (1 << 6);
10862 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10863 }
10864}
10865}
10866}
10867}
10868}
10869
10870 abuf->written = written;
10871 return vpc;
10872#undef FLD
10873}
10874
10875/* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10876
10877static SEM_PC
10878SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10879{
10880#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10882 int UNUSED written = 0;
10883 IADDR UNUSED pc = abuf->addr;
10884 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10885
10886{
10887frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10888{
10889 SI tmp_tmp;
10890 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10891 {
10892 USI opval = tmp_tmp;
10893 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10894 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10895 }
10896if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10897if (EQSI (FLD (f_ccond), 0)) {
10898if (NESI (tmp_tmp, 0)) {
10899 {
10900 USI opval = GET_H_SPR (((UINT) 272));
10901 sim_queue_pc_write (current_cpu, opval);
10902 written |= (1 << 6);
10903 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10904 }
10905}
10906} else {
10907if (EQSI (tmp_tmp, 0)) {
10908 {
10909 USI opval = GET_H_SPR (((UINT) 272));
10910 sim_queue_pc_write (current_cpu, opval);
10911 written |= (1 << 6);
10912 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10913 }
10914}
10915}
10916}
10917}
10918}
10919
10920 abuf->written = written;
10921 return vpc;
10922#undef FLD
10923}
10924
10925/* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
10926
10927static SEM_PC
10928SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10929{
10930#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10932 int UNUSED written = 0;
10933 IADDR UNUSED pc = abuf->addr;
10934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10935
10936{
10937frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10938{
10939 SI tmp_tmp;
10940 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10941 {
10942 USI opval = tmp_tmp;
10943 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10944 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10945 }
10946if (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))))) {
10947if (EQSI (FLD (f_ccond), 0)) {
10948if (NESI (tmp_tmp, 0)) {
10949 {
10950 USI opval = GET_H_SPR (((UINT) 272));
10951 sim_queue_pc_write (current_cpu, opval);
10952 written |= (1 << 6);
10953 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10954 }
10955}
10956} else {
10957if (EQSI (tmp_tmp, 0)) {
10958 {
10959 USI opval = GET_H_SPR (((UINT) 272));
10960 sim_queue_pc_write (current_cpu, opval);
10961 written |= (1 << 6);
10962 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10963 }
10964}
10965}
10966}
10967}
10968}
10969
10970 abuf->written = written;
10971 return vpc;
10972#undef FLD
10973}
10974
10975/* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
10976
10977static SEM_PC
10978SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10979{
10980#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10982 int UNUSED written = 0;
10983 IADDR UNUSED pc = abuf->addr;
10984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10985
10986{
10987frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10988{
10989 SI tmp_tmp;
10990 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10991 {
10992 USI opval = tmp_tmp;
10993 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10994 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10995 }
10996if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10997if (EQSI (FLD (f_ccond), 0)) {
10998if (NESI (tmp_tmp, 0)) {
10999 {
11000 USI opval = GET_H_SPR (((UINT) 272));
11001 sim_queue_pc_write (current_cpu, opval);
11002 written |= (1 << 6);
11003 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11004 }
11005}
11006} else {
11007if (EQSI (tmp_tmp, 0)) {
11008 {
11009 USI opval = GET_H_SPR (((UINT) 272));
11010 sim_queue_pc_write (current_cpu, opval);
11011 written |= (1 << 6);
11012 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11013 }
11014}
11015}
11016}
11017}
11018}
11019
11020 abuf->written = written;
11021 return vpc;
11022#undef FLD
11023}
11024
11025/* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11026
11027static SEM_PC
11028SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11029{
11030#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11032 int UNUSED written = 0;
11033 IADDR UNUSED pc = abuf->addr;
11034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11035
11036{
11037frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11038{
11039 SI tmp_tmp;
11040 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11041 {
11042 USI opval = tmp_tmp;
11043 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11044 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11045 }
11046if (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)))) {
11047if (EQSI (FLD (f_ccond), 0)) {
11048if (NESI (tmp_tmp, 0)) {
11049 {
11050 USI opval = GET_H_SPR (((UINT) 272));
11051 sim_queue_pc_write (current_cpu, opval);
11052 written |= (1 << 6);
11053 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11054 }
11055}
11056} else {
11057if (EQSI (tmp_tmp, 0)) {
11058 {
11059 USI opval = GET_H_SPR (((UINT) 272));
11060 sim_queue_pc_write (current_cpu, opval);
11061 written |= (1 << 6);
11062 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11063 }
11064}
11065}
11066}
11067}
11068}
11069
11070 abuf->written = written;
11071 return vpc;
11072#undef FLD
11073}
11074
11075/* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11076
11077static SEM_PC
11078SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11079{
11080#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11081 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11082 int UNUSED written = 0;
11083 IADDR UNUSED pc = abuf->addr;
11084 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11085
11086{
11087frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11088{
11089 SI tmp_tmp;
11090 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11091 {
11092 USI opval = tmp_tmp;
11093 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11094 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11095 }
11096if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11097if (EQSI (FLD (f_ccond), 0)) {
11098if (NESI (tmp_tmp, 0)) {
11099 {
11100 USI opval = GET_H_SPR (((UINT) 272));
11101 sim_queue_pc_write (current_cpu, opval);
11102 written |= (1 << 6);
11103 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11104 }
11105}
11106} else {
11107if (EQSI (tmp_tmp, 0)) {
11108 {
11109 USI opval = GET_H_SPR (((UINT) 272));
11110 sim_queue_pc_write (current_cpu, opval);
11111 written |= (1 << 6);
11112 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11113 }
11114}
11115}
11116}
11117}
11118}
11119
11120 abuf->written = written;
11121 return vpc;
11122#undef FLD
11123}
11124
11125/* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11126
11127static SEM_PC
11128SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11129{
11130#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11132 int UNUSED written = 0;
11133 IADDR UNUSED pc = abuf->addr;
11134 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11135
11136{
11137frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11138{
11139 SI tmp_tmp;
11140 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11141 {
11142 USI opval = tmp_tmp;
11143 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11144 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11145 }
11146if (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))))) {
11147if (EQSI (FLD (f_ccond), 0)) {
11148if (NESI (tmp_tmp, 0)) {
11149 {
11150 USI opval = GET_H_SPR (((UINT) 272));
11151 sim_queue_pc_write (current_cpu, opval);
11152 written |= (1 << 6);
11153 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11154 }
11155}
11156} else {
11157if (EQSI (tmp_tmp, 0)) {
11158 {
11159 USI opval = GET_H_SPR (((UINT) 272));
11160 sim_queue_pc_write (current_cpu, opval);
11161 written |= (1 << 6);
11162 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11163 }
11164}
11165}
11166}
11167}
11168}
11169
11170 abuf->written = written;
11171 return vpc;
11172#undef FLD
11173}
11174
11175/* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11176
11177static SEM_PC
11178SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11179{
11180#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11182 int UNUSED written = 0;
11183 IADDR UNUSED pc = abuf->addr;
11184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11185
11186{
11187frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11188{
11189 SI tmp_tmp;
11190 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11191 {
11192 USI opval = tmp_tmp;
11193 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11194 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11195 }
11196if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11197if (EQSI (FLD (f_ccond), 0)) {
11198if (NESI (tmp_tmp, 0)) {
11199 {
11200 USI opval = GET_H_SPR (((UINT) 272));
11201 sim_queue_pc_write (current_cpu, opval);
11202 written |= (1 << 6);
11203 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11204 }
11205}
11206} else {
11207if (EQSI (tmp_tmp, 0)) {
11208 {
11209 USI opval = GET_H_SPR (((UINT) 272));
11210 sim_queue_pc_write (current_cpu, opval);
11211 written |= (1 << 6);
11212 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11213 }
11214}
11215}
11216}
11217}
11218}
11219
11220 abuf->written = written;
11221 return vpc;
11222#undef FLD
11223}
11224
11225/* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11226
11227static SEM_PC
11228SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11229{
11230#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11232 int UNUSED written = 0;
11233 IADDR UNUSED pc = abuf->addr;
11234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11235
11236{
11237frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11238{
11239 SI tmp_tmp;
11240 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11241 {
11242 USI opval = tmp_tmp;
11243 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11244 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11245 }
11246if (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))))) {
11247if (EQSI (FLD (f_ccond), 0)) {
11248if (NESI (tmp_tmp, 0)) {
11249 {
11250 USI opval = GET_H_SPR (((UINT) 272));
11251 sim_queue_pc_write (current_cpu, opval);
11252 written |= (1 << 6);
11253 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11254 }
11255}
11256} else {
11257if (EQSI (tmp_tmp, 0)) {
11258 {
11259 USI opval = GET_H_SPR (((UINT) 272));
11260 sim_queue_pc_write (current_cpu, opval);
11261 written |= (1 << 6);
11262 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11263 }
11264}
11265}
11266}
11267}
11268}
11269
11270 abuf->written = written;
11271 return vpc;
11272#undef FLD
11273}
11274
11275/* jmpl: jmpl$pack @($GRi,$GRj) */
11276
11277static SEM_PC
11278SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11279{
11280#define FLD(f) abuf->fields.sfmt_cjmpl.f
11281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11282 int UNUSED written = 0;
11283 IADDR UNUSED pc = abuf->addr;
11284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11285
11286{
11287if (EQSI (FLD (f_LI), 1)) {
11288frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11289}
11290 {
11291 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11292 sim_queue_pc_write (current_cpu, opval);
11293 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11294 }
11295frvbf_model_branch (current_cpu, pc, 2);
11296}
11297
11298 return vpc;
11299#undef FLD
11300}
11301
79e59fe6 11302/* calll: calll$pack $callann($GRi,$GRj) */
b34f6357
DB
11303
11304static SEM_PC
11305SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11306{
11307#define FLD(f) abuf->fields.sfmt_cjmpl.f
11308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11309 int UNUSED written = 0;
11310 IADDR UNUSED pc = abuf->addr;
11311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11312
11313{
11314if (EQSI (FLD (f_LI), 1)) {
11315frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11316}
11317 {
11318 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11319 sim_queue_pc_write (current_cpu, opval);
11320 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11321 }
11322frvbf_model_branch (current_cpu, pc, 2);
11323}
11324
11325 return vpc;
11326#undef FLD
11327}
11328
11329/* jmpil: jmpil$pack @($GRi,$s12) */
11330
11331static SEM_PC
11332SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11333{
11334#define FLD(f) abuf->fields.sfmt_jmpil.f
11335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11336 int UNUSED written = 0;
11337 IADDR UNUSED pc = abuf->addr;
11338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11339
11340{
11341if (EQSI (FLD (f_LI), 1)) {
11342frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11343}
11344 {
11345 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11346 sim_queue_pc_write (current_cpu, opval);
11347 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11348 }
11349frvbf_model_branch (current_cpu, pc, 2);
11350}
11351
11352 return vpc;
11353#undef FLD
11354}
11355
11356/* callil: callil$pack @($GRi,$s12) */
11357
11358static SEM_PC
11359SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11360{
11361#define FLD(f) abuf->fields.sfmt_jmpil.f
11362 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11363 int UNUSED written = 0;
11364 IADDR UNUSED pc = abuf->addr;
11365 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11366
11367{
11368if (EQSI (FLD (f_LI), 1)) {
11369frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11370}
11371 {
11372 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11373 sim_queue_pc_write (current_cpu, opval);
11374 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11375 }
11376frvbf_model_branch (current_cpu, pc, 2);
11377}
11378
11379 return vpc;
11380#undef FLD
11381}
11382
11383/* call: call$pack $label24 */
11384
11385static SEM_PC
11386SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11387{
11388#define FLD(f) abuf->fields.sfmt_call.f
11389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11390 int UNUSED written = 0;
11391 IADDR UNUSED pc = abuf->addr;
11392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11393
11394{
11395frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11396 {
11397 USI opval = FLD (i_label24);
11398 sim_queue_pc_write (current_cpu, opval);
11399 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11400 }
11401frvbf_model_branch (current_cpu, pc, 2);
11402}
11403
11404 return vpc;
11405#undef FLD
11406}
11407
11408/* rett: rett$pack $debug */
11409
11410static SEM_PC
11411SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11412{
11413#define FLD(f) abuf->fields.sfmt_rett.f
11414 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11415 int UNUSED written = 0;
11416 IADDR UNUSED pc = abuf->addr;
11417 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11418
11419{
11420 {
11421 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11422 sim_queue_pc_write (current_cpu, opval);
11423 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11424 }
11425frvbf_model_branch (current_cpu, pc, 2);
11426}
11427
11428 return vpc;
11429#undef FLD
11430}
11431
11432/* rei: rei$pack $eir */
11433
11434static SEM_PC
11435SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11436{
2310652a 11437#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
11438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11439 int UNUSED written = 0;
11440 IADDR UNUSED pc = abuf->addr;
11441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11442
11443((void) 0); /*nop*/
11444
11445 return vpc;
11446#undef FLD
11447}
11448
11449/* tra: tra$pack $GRi,$GRj */
11450
11451static SEM_PC
11452SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11453{
11454#define FLD(f) abuf->fields.sfmt_ftne.f
11455 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11456 int UNUSED written = 0;
11457 IADDR UNUSED pc = abuf->addr;
11458 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11459
11460{
11461; /*clobber*/
11462; /*clobber*/
11463; /*clobber*/
11464; /*clobber*/
11465if (NEBI (CPU (h_psr_esr), 0)) {
11466{
11467; /*clobber*/
11468; /*clobber*/
11469; /*clobber*/
11470; /*clobber*/
11471}
11472}
11473frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11474}
11475
11476 abuf->written = written;
11477 return vpc;
11478#undef FLD
11479}
11480
11481/* tno: tno$pack */
11482
11483static SEM_PC
11484SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11485{
2310652a 11486#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
11487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11488 int UNUSED written = 0;
11489 IADDR UNUSED pc = abuf->addr;
11490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11491
11492((void) 0); /*nop*/
11493
11494 return vpc;
11495#undef FLD
11496}
11497
11498/* teq: teq$pack $ICCi_2,$GRi,$GRj */
11499
11500static SEM_PC
11501SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11502{
11503#define FLD(f) abuf->fields.sfmt_teq.f
11504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11505 int UNUSED written = 0;
11506 IADDR UNUSED pc = abuf->addr;
11507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11508
11509if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11510{
11511; /*clobber*/
11512; /*clobber*/
11513; /*clobber*/
11514; /*clobber*/
11515if (NEBI (CPU (h_psr_esr), 0)) {
11516{
11517; /*clobber*/
11518; /*clobber*/
11519; /*clobber*/
11520; /*clobber*/
11521}
11522}
11523frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11524}
11525}
11526
11527 abuf->written = written;
11528 return vpc;
11529#undef FLD
11530}
11531
11532/* tne: tne$pack $ICCi_2,$GRi,$GRj */
11533
11534static SEM_PC
11535SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11536{
11537#define FLD(f) abuf->fields.sfmt_teq.f
11538 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11539 int UNUSED written = 0;
11540 IADDR UNUSED pc = abuf->addr;
11541 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11542
11543if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11544{
11545; /*clobber*/
11546; /*clobber*/
11547; /*clobber*/
11548; /*clobber*/
11549if (NEBI (CPU (h_psr_esr), 0)) {
11550{
11551; /*clobber*/
11552; /*clobber*/
11553; /*clobber*/
11554; /*clobber*/
11555}
11556}
11557frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11558}
11559}
11560
11561 abuf->written = written;
11562 return vpc;
11563#undef FLD
11564}
11565
11566/* tle: tle$pack $ICCi_2,$GRi,$GRj */
11567
11568static SEM_PC
11569SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11570{
11571#define FLD(f) abuf->fields.sfmt_teq.f
11572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11573 int UNUSED written = 0;
11574 IADDR UNUSED pc = abuf->addr;
11575 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11576
11577if (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))))) {
11578{
11579; /*clobber*/
11580; /*clobber*/
11581; /*clobber*/
11582; /*clobber*/
11583if (NEBI (CPU (h_psr_esr), 0)) {
11584{
11585; /*clobber*/
11586; /*clobber*/
11587; /*clobber*/
11588; /*clobber*/
11589}
11590}
11591frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11592}
11593}
11594
11595 abuf->written = written;
11596 return vpc;
11597#undef FLD
11598}
11599
11600/* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11601
11602static SEM_PC
11603SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11604{
11605#define FLD(f) abuf->fields.sfmt_teq.f
11606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11607 int UNUSED written = 0;
11608 IADDR UNUSED pc = abuf->addr;
11609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11610
11611if (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)))))) {
11612{
11613; /*clobber*/
11614; /*clobber*/
11615; /*clobber*/
11616; /*clobber*/
11617if (NEBI (CPU (h_psr_esr), 0)) {
11618{
11619; /*clobber*/
11620; /*clobber*/
11621; /*clobber*/
11622; /*clobber*/
11623}
11624}
11625frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11626}
11627}
11628
11629 abuf->written = written;
11630 return vpc;
11631#undef FLD
11632}
11633
11634/* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11635
11636static SEM_PC
11637SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11638{
11639#define FLD(f) abuf->fields.sfmt_teq.f
11640 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11641 int UNUSED written = 0;
11642 IADDR UNUSED pc = abuf->addr;
11643 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11644
11645if (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)))) {
11646{
11647; /*clobber*/
11648; /*clobber*/
11649; /*clobber*/
11650; /*clobber*/
11651if (NEBI (CPU (h_psr_esr), 0)) {
11652{
11653; /*clobber*/
11654; /*clobber*/
11655; /*clobber*/
11656; /*clobber*/
11657}
11658}
11659frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11660}
11661}
11662
11663 abuf->written = written;
11664 return vpc;
11665#undef FLD
11666}
11667
11668/* tge: tge$pack $ICCi_2,$GRi,$GRj */
11669
11670static SEM_PC
11671SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11672{
11673#define FLD(f) abuf->fields.sfmt_teq.f
11674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11675 int UNUSED written = 0;
11676 IADDR UNUSED pc = abuf->addr;
11677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11678
11679if (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))))) {
11680{
11681; /*clobber*/
11682; /*clobber*/
11683; /*clobber*/
11684; /*clobber*/
11685if (NEBI (CPU (h_psr_esr), 0)) {
11686{
11687; /*clobber*/
11688; /*clobber*/
11689; /*clobber*/
11690; /*clobber*/
11691}
11692}
11693frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11694}
11695}
11696
11697 abuf->written = written;
11698 return vpc;
11699#undef FLD
11700}
11701
11702/* tls: tls$pack $ICCi_2,$GRi,$GRj */
11703
11704static SEM_PC
11705SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11706{
11707#define FLD(f) abuf->fields.sfmt_teq.f
11708 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11709 int UNUSED written = 0;
11710 IADDR UNUSED pc = abuf->addr;
11711 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11712
11713if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11714{
11715; /*clobber*/
11716; /*clobber*/
11717; /*clobber*/
11718; /*clobber*/
11719if (NEBI (CPU (h_psr_esr), 0)) {
11720{
11721; /*clobber*/
11722; /*clobber*/
11723; /*clobber*/
11724; /*clobber*/
11725}
11726}
11727frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11728}
11729}
11730
11731 abuf->written = written;
11732 return vpc;
11733#undef FLD
11734}
11735
11736/* thi: thi$pack $ICCi_2,$GRi,$GRj */
11737
11738static SEM_PC
11739SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11740{
11741#define FLD(f) abuf->fields.sfmt_teq.f
11742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11743 int UNUSED written = 0;
11744 IADDR UNUSED pc = abuf->addr;
11745 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11746
11747if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
11748{
11749; /*clobber*/
11750; /*clobber*/
11751; /*clobber*/
11752; /*clobber*/
11753if (NEBI (CPU (h_psr_esr), 0)) {
11754{
11755; /*clobber*/
11756; /*clobber*/
11757; /*clobber*/
11758; /*clobber*/
11759}
11760}
11761frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11762}
11763}
11764
11765 abuf->written = written;
11766 return vpc;
11767#undef FLD
11768}
11769
11770/* tc: tc$pack $ICCi_2,$GRi,$GRj */
11771
11772static SEM_PC
11773SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11774{
11775#define FLD(f) abuf->fields.sfmt_teq.f
11776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11777 int UNUSED written = 0;
11778 IADDR UNUSED pc = abuf->addr;
11779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11780
11781if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11782{
11783; /*clobber*/
11784; /*clobber*/
11785; /*clobber*/
11786; /*clobber*/
11787if (NEBI (CPU (h_psr_esr), 0)) {
11788{
11789; /*clobber*/
11790; /*clobber*/
11791; /*clobber*/
11792; /*clobber*/
11793}
11794}
11795frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11796}
11797}
11798
11799 abuf->written = written;
11800 return vpc;
11801#undef FLD
11802}
11803
11804/* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11805
11806static SEM_PC
11807SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11808{
11809#define FLD(f) abuf->fields.sfmt_teq.f
11810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11811 int UNUSED written = 0;
11812 IADDR UNUSED pc = abuf->addr;
11813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11814
11815if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11816{
11817; /*clobber*/
11818; /*clobber*/
11819; /*clobber*/
11820; /*clobber*/
11821if (NEBI (CPU (h_psr_esr), 0)) {
11822{
11823; /*clobber*/
11824; /*clobber*/
11825; /*clobber*/
11826; /*clobber*/
11827}
11828}
11829frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11830}
11831}
11832
11833 abuf->written = written;
11834 return vpc;
11835#undef FLD
11836}
11837
11838/* tn: tn$pack $ICCi_2,$GRi,$GRj */
11839
11840static SEM_PC
11841SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11842{
11843#define FLD(f) abuf->fields.sfmt_teq.f
11844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11845 int UNUSED written = 0;
11846 IADDR UNUSED pc = abuf->addr;
11847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11848
11849if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11850{
11851; /*clobber*/
11852; /*clobber*/
11853; /*clobber*/
11854; /*clobber*/
11855if (NEBI (CPU (h_psr_esr), 0)) {
11856{
11857; /*clobber*/
11858; /*clobber*/
11859; /*clobber*/
11860; /*clobber*/
11861}
11862}
11863frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11864}
11865}
11866
11867 abuf->written = written;
11868 return vpc;
11869#undef FLD
11870}
11871
11872/* tp: tp$pack $ICCi_2,$GRi,$GRj */
11873
11874static SEM_PC
11875SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11876{
11877#define FLD(f) abuf->fields.sfmt_teq.f
11878 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11879 int UNUSED written = 0;
11880 IADDR UNUSED pc = abuf->addr;
11881 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11882
11883if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11884{
11885; /*clobber*/
11886; /*clobber*/
11887; /*clobber*/
11888; /*clobber*/
11889if (NEBI (CPU (h_psr_esr), 0)) {
11890{
11891; /*clobber*/
11892; /*clobber*/
11893; /*clobber*/
11894; /*clobber*/
11895}
11896}
11897frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11898}
11899}
11900
11901 abuf->written = written;
11902 return vpc;
11903#undef FLD
11904}
11905
11906/* tv: tv$pack $ICCi_2,$GRi,$GRj */
11907
11908static SEM_PC
11909SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11910{
11911#define FLD(f) abuf->fields.sfmt_teq.f
11912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11913 int UNUSED written = 0;
11914 IADDR UNUSED pc = abuf->addr;
11915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11916
11917if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
11918{
11919; /*clobber*/
11920; /*clobber*/
11921; /*clobber*/
11922; /*clobber*/
11923if (NEBI (CPU (h_psr_esr), 0)) {
11924{
11925; /*clobber*/
11926; /*clobber*/
11927; /*clobber*/
11928; /*clobber*/
11929}
11930}
11931frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11932}
11933}
11934
11935 abuf->written = written;
11936 return vpc;
11937#undef FLD
11938}
11939
11940/* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
11941
11942static SEM_PC
11943SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11944{
11945#define FLD(f) abuf->fields.sfmt_teq.f
11946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11947 int UNUSED written = 0;
11948 IADDR UNUSED pc = abuf->addr;
11949 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11950
11951if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11952{
11953; /*clobber*/
11954; /*clobber*/
11955; /*clobber*/
11956; /*clobber*/
11957if (NEBI (CPU (h_psr_esr), 0)) {
11958{
11959; /*clobber*/
11960; /*clobber*/
11961; /*clobber*/
11962; /*clobber*/
11963}
11964}
11965frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11966}
11967}
11968
11969 abuf->written = written;
11970 return vpc;
11971#undef FLD
11972}
11973
11974/* ftra: ftra$pack $GRi,$GRj */
11975
11976static SEM_PC
11977SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11978{
11979#define FLD(f) abuf->fields.sfmt_ftne.f
11980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11981 int UNUSED written = 0;
11982 IADDR UNUSED pc = abuf->addr;
11983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11984
11985{
11986; /*clobber*/
11987; /*clobber*/
11988; /*clobber*/
11989; /*clobber*/
11990if (NEBI (CPU (h_psr_esr), 0)) {
11991{
11992; /*clobber*/
11993; /*clobber*/
11994; /*clobber*/
11995; /*clobber*/
11996}
11997}
11998frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11999}
12000
12001 abuf->written = written;
12002 return vpc;
12003#undef FLD
12004}
12005
12006/* ftno: ftno$pack */
12007
12008static SEM_PC
12009SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12010{
2310652a 12011#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
12012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12013 int UNUSED written = 0;
12014 IADDR UNUSED pc = abuf->addr;
12015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12016
12017((void) 0); /*nop*/
12018
12019 return vpc;
12020#undef FLD
12021}
12022
12023/* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12024
12025static SEM_PC
12026SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12027{
12028#define FLD(f) abuf->fields.sfmt_ftne.f
12029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12030 int UNUSED written = 0;
12031 IADDR UNUSED pc = abuf->addr;
12032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12033
12034if (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))))) {
12035{
12036; /*clobber*/
12037; /*clobber*/
12038; /*clobber*/
12039; /*clobber*/
12040if (NEBI (CPU (h_psr_esr), 0)) {
12041{
12042; /*clobber*/
12043; /*clobber*/
12044; /*clobber*/
12045; /*clobber*/
12046}
12047}
12048frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12049}
12050}
12051
12052 abuf->written = written;
12053 return vpc;
12054#undef FLD
12055}
12056
12057/* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12058
12059static SEM_PC
12060SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12061{
12062#define FLD(f) abuf->fields.sfmt_ftne.f
12063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12064 int UNUSED written = 0;
12065 IADDR UNUSED pc = abuf->addr;
12066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12067
12068if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12069{
12070; /*clobber*/
12071; /*clobber*/
12072; /*clobber*/
12073; /*clobber*/
12074if (NEBI (CPU (h_psr_esr), 0)) {
12075{
12076; /*clobber*/
12077; /*clobber*/
12078; /*clobber*/
12079; /*clobber*/
12080}
12081}
12082frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12083}
12084}
12085
12086 abuf->written = written;
12087 return vpc;
12088#undef FLD
12089}
12090
12091/* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12092
12093static SEM_PC
12094SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12095{
12096#define FLD(f) abuf->fields.sfmt_ftne.f
12097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12098 int UNUSED written = 0;
12099 IADDR UNUSED pc = abuf->addr;
12100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12101
12102if (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)))) {
12103{
12104; /*clobber*/
12105; /*clobber*/
12106; /*clobber*/
12107; /*clobber*/
12108if (NEBI (CPU (h_psr_esr), 0)) {
12109{
12110; /*clobber*/
12111; /*clobber*/
12112; /*clobber*/
12113; /*clobber*/
12114}
12115}
12116frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12117}
12118}
12119
12120 abuf->written = written;
12121 return vpc;
12122#undef FLD
12123}
12124
12125/* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12126
12127static SEM_PC
12128SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12129{
12130#define FLD(f) abuf->fields.sfmt_ftne.f
12131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12132 int UNUSED written = 0;
12133 IADDR UNUSED pc = abuf->addr;
12134 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12135
12136if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12137{
12138; /*clobber*/
12139; /*clobber*/
12140; /*clobber*/
12141; /*clobber*/
12142if (NEBI (CPU (h_psr_esr), 0)) {
12143{
12144; /*clobber*/
12145; /*clobber*/
12146; /*clobber*/
12147; /*clobber*/
12148}
12149}
12150frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12151}
12152}
12153
12154 abuf->written = written;
12155 return vpc;
12156#undef FLD
12157}
12158
12159/* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12160
12161static SEM_PC
12162SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12163{
12164#define FLD(f) abuf->fields.sfmt_ftne.f
12165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12166 int UNUSED written = 0;
12167 IADDR UNUSED pc = abuf->addr;
12168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12169
12170if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12171{
12172; /*clobber*/
12173; /*clobber*/
12174; /*clobber*/
12175; /*clobber*/
12176if (NEBI (CPU (h_psr_esr), 0)) {
12177{
12178; /*clobber*/
12179; /*clobber*/
12180; /*clobber*/
12181; /*clobber*/
12182}
12183}
12184frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12185}
12186}
12187
12188 abuf->written = written;
12189 return vpc;
12190#undef FLD
12191}
12192
12193/* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12194
12195static SEM_PC
12196SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12197{
12198#define FLD(f) abuf->fields.sfmt_ftne.f
12199 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12200 int UNUSED written = 0;
12201 IADDR UNUSED pc = abuf->addr;
12202 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12203
12204if (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)))) {
12205{
12206; /*clobber*/
12207; /*clobber*/
12208; /*clobber*/
12209; /*clobber*/
12210if (NEBI (CPU (h_psr_esr), 0)) {
12211{
12212; /*clobber*/
12213; /*clobber*/
12214; /*clobber*/
12215; /*clobber*/
12216}
12217}
12218frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12219}
12220}
12221
12222 abuf->written = written;
12223 return vpc;
12224#undef FLD
12225}
12226
12227/* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12228
12229static SEM_PC
12230SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12231{
12232#define FLD(f) abuf->fields.sfmt_ftne.f
12233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12234 int UNUSED written = 0;
12235 IADDR UNUSED pc = abuf->addr;
12236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12237
12238if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12239{
12240; /*clobber*/
12241; /*clobber*/
12242; /*clobber*/
12243; /*clobber*/
12244if (NEBI (CPU (h_psr_esr), 0)) {
12245{
12246; /*clobber*/
12247; /*clobber*/
12248; /*clobber*/
12249; /*clobber*/
12250}
12251}
12252frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12253}
12254}
12255
12256 abuf->written = written;
12257 return vpc;
12258#undef FLD
12259}
12260
12261/* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12262
12263static SEM_PC
12264SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12265{
12266#define FLD(f) abuf->fields.sfmt_ftne.f
12267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12268 int UNUSED written = 0;
12269 IADDR UNUSED pc = abuf->addr;
12270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12271
12272if (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))))) {
12273{
12274; /*clobber*/
12275; /*clobber*/
12276; /*clobber*/
12277; /*clobber*/
12278if (NEBI (CPU (h_psr_esr), 0)) {
12279{
12280; /*clobber*/
12281; /*clobber*/
12282; /*clobber*/
12283; /*clobber*/
12284}
12285}
12286frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12287}
12288}
12289
12290 abuf->written = written;
12291 return vpc;
12292#undef FLD
12293}
12294
12295/* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12296
12297static SEM_PC
12298SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12299{
12300#define FLD(f) abuf->fields.sfmt_ftne.f
12301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12302 int UNUSED written = 0;
12303 IADDR UNUSED pc = abuf->addr;
12304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12305
12306if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12307{
12308; /*clobber*/
12309; /*clobber*/
12310; /*clobber*/
12311; /*clobber*/
12312if (NEBI (CPU (h_psr_esr), 0)) {
12313{
12314; /*clobber*/
12315; /*clobber*/
12316; /*clobber*/
12317; /*clobber*/
12318}
12319}
12320frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12321}
12322}
12323
12324 abuf->written = written;
12325 return vpc;
12326#undef FLD
12327}
12328
12329/* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12330
12331static SEM_PC
12332SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12333{
12334#define FLD(f) abuf->fields.sfmt_ftne.f
12335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12336 int UNUSED written = 0;
12337 IADDR UNUSED pc = abuf->addr;
12338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12339
12340if (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)))) {
12341{
12342; /*clobber*/
12343; /*clobber*/
12344; /*clobber*/
12345; /*clobber*/
12346if (NEBI (CPU (h_psr_esr), 0)) {
12347{
12348; /*clobber*/
12349; /*clobber*/
12350; /*clobber*/
12351; /*clobber*/
12352}
12353}
12354frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12355}
12356}
12357
12358 abuf->written = written;
12359 return vpc;
12360#undef FLD
12361}
12362
12363/* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12364
12365static SEM_PC
12366SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12367{
12368#define FLD(f) abuf->fields.sfmt_ftne.f
12369 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12370 int UNUSED written = 0;
12371 IADDR UNUSED pc = abuf->addr;
12372 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12373
12374if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12375{
12376; /*clobber*/
12377; /*clobber*/
12378; /*clobber*/
12379; /*clobber*/
12380if (NEBI (CPU (h_psr_esr), 0)) {
12381{
12382; /*clobber*/
12383; /*clobber*/
12384; /*clobber*/
12385; /*clobber*/
12386}
12387}
12388frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12389}
12390}
12391
12392 abuf->written = written;
12393 return vpc;
12394#undef FLD
12395}
12396
12397/* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12398
12399static SEM_PC
12400SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12401{
12402#define FLD(f) abuf->fields.sfmt_ftne.f
12403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12404 int UNUSED written = 0;
12405 IADDR UNUSED pc = abuf->addr;
12406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12407
12408if (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))))) {
12409{
12410; /*clobber*/
12411; /*clobber*/
12412; /*clobber*/
12413; /*clobber*/
12414if (NEBI (CPU (h_psr_esr), 0)) {
12415{
12416; /*clobber*/
12417; /*clobber*/
12418; /*clobber*/
12419; /*clobber*/
12420}
12421}
12422frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12423}
12424}
12425
12426 abuf->written = written;
12427 return vpc;
12428#undef FLD
12429}
12430
12431/* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12432
12433static SEM_PC
12434SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12435{
12436#define FLD(f) abuf->fields.sfmt_ftne.f
12437 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12438 int UNUSED written = 0;
12439 IADDR UNUSED pc = abuf->addr;
12440 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12441
12442if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12443{
12444; /*clobber*/
12445; /*clobber*/
12446; /*clobber*/
12447; /*clobber*/
12448if (NEBI (CPU (h_psr_esr), 0)) {
12449{
12450; /*clobber*/
12451; /*clobber*/
12452; /*clobber*/
12453; /*clobber*/
12454}
12455}
12456frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12457}
12458}
12459
12460 abuf->written = written;
12461 return vpc;
12462#undef FLD
12463}
12464
12465/* fto: fto$pack $FCCi_2,$GRi,$GRj */
12466
12467static SEM_PC
12468SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12469{
12470#define FLD(f) abuf->fields.sfmt_ftne.f
12471 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12472 int UNUSED written = 0;
12473 IADDR UNUSED pc = abuf->addr;
12474 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12475
12476if (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))))) {
12477{
12478; /*clobber*/
12479; /*clobber*/
12480; /*clobber*/
12481; /*clobber*/
12482if (NEBI (CPU (h_psr_esr), 0)) {
12483{
12484; /*clobber*/
12485; /*clobber*/
12486; /*clobber*/
12487; /*clobber*/
12488}
12489}
12490frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12491}
12492}
12493
12494 abuf->written = written;
12495 return vpc;
12496#undef FLD
12497}
12498
12499/* tira: tira$pack $GRi,$s12 */
12500
12501static SEM_PC
12502SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12503{
12504#define FLD(f) abuf->fields.sfmt_ftine.f
12505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12506 int UNUSED written = 0;
12507 IADDR UNUSED pc = abuf->addr;
12508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12509
12510{
12511; /*clobber*/
12512; /*clobber*/
12513; /*clobber*/
12514; /*clobber*/
12515if (NEBI (CPU (h_psr_esr), 0)) {
12516{
12517; /*clobber*/
12518; /*clobber*/
12519; /*clobber*/
12520; /*clobber*/
12521}
12522}
12523frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12524}
12525
12526 abuf->written = written;
12527 return vpc;
12528#undef FLD
12529}
12530
12531/* tino: tino$pack */
12532
12533static SEM_PC
12534SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12535{
2310652a 12536#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
12537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12538 int UNUSED written = 0;
12539 IADDR UNUSED pc = abuf->addr;
12540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12541
12542((void) 0); /*nop*/
12543
12544 return vpc;
12545#undef FLD
12546}
12547
12548/* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12549
12550static SEM_PC
12551SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12552{
12553#define FLD(f) abuf->fields.sfmt_tieq.f
12554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12555 int UNUSED written = 0;
12556 IADDR UNUSED pc = abuf->addr;
12557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12558
12559if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12560{
12561; /*clobber*/
12562; /*clobber*/
12563; /*clobber*/
12564; /*clobber*/
12565if (NEBI (CPU (h_psr_esr), 0)) {
12566{
12567; /*clobber*/
12568; /*clobber*/
12569; /*clobber*/
12570; /*clobber*/
12571}
12572}
12573frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12574}
12575}
12576
12577 abuf->written = written;
12578 return vpc;
12579#undef FLD
12580}
12581
12582/* tine: tine$pack $ICCi_2,$GRi,$s12 */
12583
12584static SEM_PC
12585SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12586{
12587#define FLD(f) abuf->fields.sfmt_tieq.f
12588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12589 int UNUSED written = 0;
12590 IADDR UNUSED pc = abuf->addr;
12591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12592
12593if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12594{
12595; /*clobber*/
12596; /*clobber*/
12597; /*clobber*/
12598; /*clobber*/
12599if (NEBI (CPU (h_psr_esr), 0)) {
12600{
12601; /*clobber*/
12602; /*clobber*/
12603; /*clobber*/
12604; /*clobber*/
12605}
12606}
12607frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12608}
12609}
12610
12611 abuf->written = written;
12612 return vpc;
12613#undef FLD
12614}
12615
12616/* tile: tile$pack $ICCi_2,$GRi,$s12 */
12617
12618static SEM_PC
12619SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12620{
12621#define FLD(f) abuf->fields.sfmt_tieq.f
12622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12623 int UNUSED written = 0;
12624 IADDR UNUSED pc = abuf->addr;
12625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12626
12627if (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))))) {
12628{
12629; /*clobber*/
12630; /*clobber*/
12631; /*clobber*/
12632; /*clobber*/
12633if (NEBI (CPU (h_psr_esr), 0)) {
12634{
12635; /*clobber*/
12636; /*clobber*/
12637; /*clobber*/
12638; /*clobber*/
12639}
12640}
12641frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12642}
12643}
12644
12645 abuf->written = written;
12646 return vpc;
12647#undef FLD
12648}
12649
12650/* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12651
12652static SEM_PC
12653SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12654{
12655#define FLD(f) abuf->fields.sfmt_tieq.f
12656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12657 int UNUSED written = 0;
12658 IADDR UNUSED pc = abuf->addr;
12659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12660
12661if (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)))))) {
12662{
12663; /*clobber*/
12664; /*clobber*/
12665; /*clobber*/
12666; /*clobber*/
12667if (NEBI (CPU (h_psr_esr), 0)) {
12668{
12669; /*clobber*/
12670; /*clobber*/
12671; /*clobber*/
12672; /*clobber*/
12673}
12674}
12675frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12676}
12677}
12678
12679 abuf->written = written;
12680 return vpc;
12681#undef FLD
12682}
12683
12684/* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12685
12686static SEM_PC
12687SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12688{
12689#define FLD(f) abuf->fields.sfmt_tieq.f
12690 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12691 int UNUSED written = 0;
12692 IADDR UNUSED pc = abuf->addr;
12693 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12694
12695if (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)))) {
12696{
12697; /*clobber*/
12698; /*clobber*/
12699; /*clobber*/
12700; /*clobber*/
12701if (NEBI (CPU (h_psr_esr), 0)) {
12702{
12703; /*clobber*/
12704; /*clobber*/
12705; /*clobber*/
12706; /*clobber*/
12707}
12708}
12709frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12710}
12711}
12712
12713 abuf->written = written;
12714 return vpc;
12715#undef FLD
12716}
12717
12718/* tige: tige$pack $ICCi_2,$GRi,$s12 */
12719
12720static SEM_PC
12721SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12722{
12723#define FLD(f) abuf->fields.sfmt_tieq.f
12724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12725 int UNUSED written = 0;
12726 IADDR UNUSED pc = abuf->addr;
12727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12728
12729if (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))))) {
12730{
12731; /*clobber*/
12732; /*clobber*/
12733; /*clobber*/
12734; /*clobber*/
12735if (NEBI (CPU (h_psr_esr), 0)) {
12736{
12737; /*clobber*/
12738; /*clobber*/
12739; /*clobber*/
12740; /*clobber*/
12741}
12742}
12743frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12744}
12745}
12746
12747 abuf->written = written;
12748 return vpc;
12749#undef FLD
12750}
12751
12752/* tils: tils$pack $ICCi_2,$GRi,$s12 */
12753
12754static SEM_PC
12755SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12756{
12757#define FLD(f) abuf->fields.sfmt_tieq.f
12758 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12759 int UNUSED written = 0;
12760 IADDR UNUSED pc = abuf->addr;
12761 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12762
12763if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12764{
12765; /*clobber*/
12766; /*clobber*/
12767; /*clobber*/
12768; /*clobber*/
12769if (NEBI (CPU (h_psr_esr), 0)) {
12770{
12771; /*clobber*/
12772; /*clobber*/
12773; /*clobber*/
12774; /*clobber*/
12775}
12776}
12777frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12778}
12779}
12780
12781 abuf->written = written;
12782 return vpc;
12783#undef FLD
12784}
12785
12786/* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12787
12788static SEM_PC
12789SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12790{
12791#define FLD(f) abuf->fields.sfmt_tieq.f
12792 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12793 int UNUSED written = 0;
12794 IADDR UNUSED pc = abuf->addr;
12795 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12796
12797if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
12798{
12799; /*clobber*/
12800; /*clobber*/
12801; /*clobber*/
12802; /*clobber*/
12803if (NEBI (CPU (h_psr_esr), 0)) {
12804{
12805; /*clobber*/
12806; /*clobber*/
12807; /*clobber*/
12808; /*clobber*/
12809}
12810}
12811frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12812}
12813}
12814
12815 abuf->written = written;
12816 return vpc;
12817#undef FLD
12818}
12819
12820/* tic: tic$pack $ICCi_2,$GRi,$s12 */
12821
12822static SEM_PC
12823SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12824{
12825#define FLD(f) abuf->fields.sfmt_tieq.f
12826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12827 int UNUSED written = 0;
12828 IADDR UNUSED pc = abuf->addr;
12829 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12830
12831if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12832{
12833; /*clobber*/
12834; /*clobber*/
12835; /*clobber*/
12836; /*clobber*/
12837if (NEBI (CPU (h_psr_esr), 0)) {
12838{
12839; /*clobber*/
12840; /*clobber*/
12841; /*clobber*/
12842; /*clobber*/
12843}
12844}
12845frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12846}
12847}
12848
12849 abuf->written = written;
12850 return vpc;
12851#undef FLD
12852}
12853
12854/* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12855
12856static SEM_PC
12857SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12858{
12859#define FLD(f) abuf->fields.sfmt_tieq.f
12860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12861 int UNUSED written = 0;
12862 IADDR UNUSED pc = abuf->addr;
12863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12864
12865if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12866{
12867; /*clobber*/
12868; /*clobber*/
12869; /*clobber*/
12870; /*clobber*/
12871if (NEBI (CPU (h_psr_esr), 0)) {
12872{
12873; /*clobber*/
12874; /*clobber*/
12875; /*clobber*/
12876; /*clobber*/
12877}
12878}
12879frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12880}
12881}
12882
12883 abuf->written = written;
12884 return vpc;
12885#undef FLD
12886}
12887
12888/* tin: tin$pack $ICCi_2,$GRi,$s12 */
12889
12890static SEM_PC
12891SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12892{
12893#define FLD(f) abuf->fields.sfmt_tieq.f
12894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12895 int UNUSED written = 0;
12896 IADDR UNUSED pc = abuf->addr;
12897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12898
12899if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12900{
12901; /*clobber*/
12902; /*clobber*/
12903; /*clobber*/
12904; /*clobber*/
12905if (NEBI (CPU (h_psr_esr), 0)) {
12906{
12907; /*clobber*/
12908; /*clobber*/
12909; /*clobber*/
12910; /*clobber*/
12911}
12912}
12913frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12914}
12915}
12916
12917 abuf->written = written;
12918 return vpc;
12919#undef FLD
12920}
12921
12922/* tip: tip$pack $ICCi_2,$GRi,$s12 */
12923
12924static SEM_PC
12925SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12926{
12927#define FLD(f) abuf->fields.sfmt_tieq.f
12928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12929 int UNUSED written = 0;
12930 IADDR UNUSED pc = abuf->addr;
12931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12932
12933if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12934{
12935; /*clobber*/
12936; /*clobber*/
12937; /*clobber*/
12938; /*clobber*/
12939if (NEBI (CPU (h_psr_esr), 0)) {
12940{
12941; /*clobber*/
12942; /*clobber*/
12943; /*clobber*/
12944; /*clobber*/
12945}
12946}
12947frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12948}
12949}
12950
12951 abuf->written = written;
12952 return vpc;
12953#undef FLD
12954}
12955
12956/* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
12957
12958static SEM_PC
12959SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12960{
12961#define FLD(f) abuf->fields.sfmt_tieq.f
12962 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12963 int UNUSED written = 0;
12964 IADDR UNUSED pc = abuf->addr;
12965 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12966
12967if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12968{
12969; /*clobber*/
12970; /*clobber*/
12971; /*clobber*/
12972; /*clobber*/
12973if (NEBI (CPU (h_psr_esr), 0)) {
12974{
12975; /*clobber*/
12976; /*clobber*/
12977; /*clobber*/
12978; /*clobber*/
12979}
12980}
12981frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12982}
12983}
12984
12985 abuf->written = written;
12986 return vpc;
12987#undef FLD
12988}
12989
12990/* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
12991
12992static SEM_PC
12993SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12994{
12995#define FLD(f) abuf->fields.sfmt_tieq.f
12996 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12997 int UNUSED written = 0;
12998 IADDR UNUSED pc = abuf->addr;
12999 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13000
13001if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13002{
13003; /*clobber*/
13004; /*clobber*/
13005; /*clobber*/
13006; /*clobber*/
13007if (NEBI (CPU (h_psr_esr), 0)) {
13008{
13009; /*clobber*/
13010; /*clobber*/
13011; /*clobber*/
13012; /*clobber*/
13013}
13014}
13015frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13016}
13017}
13018
13019 abuf->written = written;
13020 return vpc;
13021#undef FLD
13022}
13023
13024/* ftira: ftira$pack $GRi,$s12 */
13025
13026static SEM_PC
13027SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13028{
13029#define FLD(f) abuf->fields.sfmt_ftine.f
13030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13031 int UNUSED written = 0;
13032 IADDR UNUSED pc = abuf->addr;
13033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13034
13035{
13036; /*clobber*/
13037; /*clobber*/
13038; /*clobber*/
13039; /*clobber*/
13040if (NEBI (CPU (h_psr_esr), 0)) {
13041{
13042; /*clobber*/
13043; /*clobber*/
13044; /*clobber*/
13045; /*clobber*/
13046}
13047}
13048frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13049}
13050
13051 abuf->written = written;
13052 return vpc;
13053#undef FLD
13054}
13055
13056/* ftino: ftino$pack */
13057
13058static SEM_PC
13059SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13060{
2310652a 13061#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
13062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13063 int UNUSED written = 0;
13064 IADDR UNUSED pc = abuf->addr;
13065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13066
13067((void) 0); /*nop*/
13068
13069 return vpc;
13070#undef FLD
13071}
13072
13073/* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13074
13075static SEM_PC
13076SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13077{
13078#define FLD(f) abuf->fields.sfmt_ftine.f
13079 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13080 int UNUSED written = 0;
13081 IADDR UNUSED pc = abuf->addr;
13082 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13083
13084if (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))))) {
13085{
13086; /*clobber*/
13087; /*clobber*/
13088; /*clobber*/
13089; /*clobber*/
13090if (NEBI (CPU (h_psr_esr), 0)) {
13091{
13092; /*clobber*/
13093; /*clobber*/
13094; /*clobber*/
13095; /*clobber*/
13096}
13097}
13098frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13099}
13100}
13101
13102 abuf->written = written;
13103 return vpc;
13104#undef FLD
13105}
13106
13107/* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13108
13109static SEM_PC
13110SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13111{
13112#define FLD(f) abuf->fields.sfmt_ftine.f
13113 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13114 int UNUSED written = 0;
13115 IADDR UNUSED pc = abuf->addr;
13116 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13117
13118if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13119{
13120; /*clobber*/
13121; /*clobber*/
13122; /*clobber*/
13123; /*clobber*/
13124if (NEBI (CPU (h_psr_esr), 0)) {
13125{
13126; /*clobber*/
13127; /*clobber*/
13128; /*clobber*/
13129; /*clobber*/
13130}
13131}
13132frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13133}
13134}
13135
13136 abuf->written = written;
13137 return vpc;
13138#undef FLD
13139}
13140
13141/* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13142
13143static SEM_PC
13144SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13145{
13146#define FLD(f) abuf->fields.sfmt_ftine.f
13147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13148 int UNUSED written = 0;
13149 IADDR UNUSED pc = abuf->addr;
13150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13151
13152if (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)))) {
13153{
13154; /*clobber*/
13155; /*clobber*/
13156; /*clobber*/
13157; /*clobber*/
13158if (NEBI (CPU (h_psr_esr), 0)) {
13159{
13160; /*clobber*/
13161; /*clobber*/
13162; /*clobber*/
13163; /*clobber*/
13164}
13165}
13166frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13167}
13168}
13169
13170 abuf->written = written;
13171 return vpc;
13172#undef FLD
13173}
13174
13175/* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13176
13177static SEM_PC
13178SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13179{
13180#define FLD(f) abuf->fields.sfmt_ftine.f
13181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13182 int UNUSED written = 0;
13183 IADDR UNUSED pc = abuf->addr;
13184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13185
13186if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13187{
13188; /*clobber*/
13189; /*clobber*/
13190; /*clobber*/
13191; /*clobber*/
13192if (NEBI (CPU (h_psr_esr), 0)) {
13193{
13194; /*clobber*/
13195; /*clobber*/
13196; /*clobber*/
13197; /*clobber*/
13198}
13199}
13200frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13201}
13202}
13203
13204 abuf->written = written;
13205 return vpc;
13206#undef FLD
13207}
13208
13209/* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13210
13211static SEM_PC
13212SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13213{
13214#define FLD(f) abuf->fields.sfmt_ftine.f
13215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13216 int UNUSED written = 0;
13217 IADDR UNUSED pc = abuf->addr;
13218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13219
13220if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13221{
13222; /*clobber*/
13223; /*clobber*/
13224; /*clobber*/
13225; /*clobber*/
13226if (NEBI (CPU (h_psr_esr), 0)) {
13227{
13228; /*clobber*/
13229; /*clobber*/
13230; /*clobber*/
13231; /*clobber*/
13232}
13233}
13234frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13235}
13236}
13237
13238 abuf->written = written;
13239 return vpc;
13240#undef FLD
13241}
13242
13243/* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13244
13245static SEM_PC
13246SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13247{
13248#define FLD(f) abuf->fields.sfmt_ftine.f
13249 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13250 int UNUSED written = 0;
13251 IADDR UNUSED pc = abuf->addr;
13252 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13253
13254if (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)))) {
13255{
13256; /*clobber*/
13257; /*clobber*/
13258; /*clobber*/
13259; /*clobber*/
13260if (NEBI (CPU (h_psr_esr), 0)) {
13261{
13262; /*clobber*/
13263; /*clobber*/
13264; /*clobber*/
13265; /*clobber*/
13266}
13267}
13268frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13269}
13270}
13271
13272 abuf->written = written;
13273 return vpc;
13274#undef FLD
13275}
13276
13277/* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13278
13279static SEM_PC
13280SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13281{
13282#define FLD(f) abuf->fields.sfmt_ftine.f
13283 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13284 int UNUSED written = 0;
13285 IADDR UNUSED pc = abuf->addr;
13286 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13287
13288if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13289{
13290; /*clobber*/
13291; /*clobber*/
13292; /*clobber*/
13293; /*clobber*/
13294if (NEBI (CPU (h_psr_esr), 0)) {
13295{
13296; /*clobber*/
13297; /*clobber*/
13298; /*clobber*/
13299; /*clobber*/
13300}
13301}
13302frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13303}
13304}
13305
13306 abuf->written = written;
13307 return vpc;
13308#undef FLD
13309}
13310
13311/* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13312
13313static SEM_PC
13314SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13315{
13316#define FLD(f) abuf->fields.sfmt_ftine.f
13317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13318 int UNUSED written = 0;
13319 IADDR UNUSED pc = abuf->addr;
13320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13321
13322if (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))))) {
13323{
13324; /*clobber*/
13325; /*clobber*/
13326; /*clobber*/
13327; /*clobber*/
13328if (NEBI (CPU (h_psr_esr), 0)) {
13329{
13330; /*clobber*/
13331; /*clobber*/
13332; /*clobber*/
13333; /*clobber*/
13334}
13335}
13336frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13337}
13338}
13339
13340 abuf->written = written;
13341 return vpc;
13342#undef FLD
13343}
13344
13345/* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13346
13347static SEM_PC
13348SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13349{
13350#define FLD(f) abuf->fields.sfmt_ftine.f
13351 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13352 int UNUSED written = 0;
13353 IADDR UNUSED pc = abuf->addr;
13354 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13355
13356if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13357{
13358; /*clobber*/
13359; /*clobber*/
13360; /*clobber*/
13361; /*clobber*/
13362if (NEBI (CPU (h_psr_esr), 0)) {
13363{
13364; /*clobber*/
13365; /*clobber*/
13366; /*clobber*/
13367; /*clobber*/
13368}
13369}
13370frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13371}
13372}
13373
13374 abuf->written = written;
13375 return vpc;
13376#undef FLD
13377}
13378
13379/* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13380
13381static SEM_PC
13382SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13383{
13384#define FLD(f) abuf->fields.sfmt_ftine.f
13385 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13386 int UNUSED written = 0;
13387 IADDR UNUSED pc = abuf->addr;
13388 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13389
13390if (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)))) {
13391{
13392; /*clobber*/
13393; /*clobber*/
13394; /*clobber*/
13395; /*clobber*/
13396if (NEBI (CPU (h_psr_esr), 0)) {
13397{
13398; /*clobber*/
13399; /*clobber*/
13400; /*clobber*/
13401; /*clobber*/
13402}
13403}
13404frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13405}
13406}
13407
13408 abuf->written = written;
13409 return vpc;
13410#undef FLD
13411}
13412
13413/* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13414
13415static SEM_PC
13416SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13417{
13418#define FLD(f) abuf->fields.sfmt_ftine.f
13419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13420 int UNUSED written = 0;
13421 IADDR UNUSED pc = abuf->addr;
13422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13423
13424if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13425{
13426; /*clobber*/
13427; /*clobber*/
13428; /*clobber*/
13429; /*clobber*/
13430if (NEBI (CPU (h_psr_esr), 0)) {
13431{
13432; /*clobber*/
13433; /*clobber*/
13434; /*clobber*/
13435; /*clobber*/
13436}
13437}
13438frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13439}
13440}
13441
13442 abuf->written = written;
13443 return vpc;
13444#undef FLD
13445}
13446
13447/* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13448
13449static SEM_PC
13450SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13451{
13452#define FLD(f) abuf->fields.sfmt_ftine.f
13453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13454 int UNUSED written = 0;
13455 IADDR UNUSED pc = abuf->addr;
13456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13457
13458if (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))))) {
13459{
13460; /*clobber*/
13461; /*clobber*/
13462; /*clobber*/
13463; /*clobber*/
13464if (NEBI (CPU (h_psr_esr), 0)) {
13465{
13466; /*clobber*/
13467; /*clobber*/
13468; /*clobber*/
13469; /*clobber*/
13470}
13471}
13472frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13473}
13474}
13475
13476 abuf->written = written;
13477 return vpc;
13478#undef FLD
13479}
13480
13481/* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13482
13483static SEM_PC
13484SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13485{
13486#define FLD(f) abuf->fields.sfmt_ftine.f
13487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13488 int UNUSED written = 0;
13489 IADDR UNUSED pc = abuf->addr;
13490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13491
13492if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13493{
13494; /*clobber*/
13495; /*clobber*/
13496; /*clobber*/
13497; /*clobber*/
13498if (NEBI (CPU (h_psr_esr), 0)) {
13499{
13500; /*clobber*/
13501; /*clobber*/
13502; /*clobber*/
13503; /*clobber*/
13504}
13505}
13506frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13507}
13508}
13509
13510 abuf->written = written;
13511 return vpc;
13512#undef FLD
13513}
13514
13515/* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13516
13517static SEM_PC
13518SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13519{
13520#define FLD(f) abuf->fields.sfmt_ftine.f
13521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13522 int UNUSED written = 0;
13523 IADDR UNUSED pc = abuf->addr;
13524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13525
13526if (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))))) {
13527{
13528; /*clobber*/
13529; /*clobber*/
13530; /*clobber*/
13531; /*clobber*/
13532if (NEBI (CPU (h_psr_esr), 0)) {
13533{
13534; /*clobber*/
13535; /*clobber*/
13536; /*clobber*/
13537; /*clobber*/
13538}
13539}
13540frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13541}
13542}
13543
13544 abuf->written = written;
13545 return vpc;
13546#undef FLD
13547}
13548
13549/* break: break$pack */
13550
13551static SEM_PC
13552SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13553{
13554#define FLD(f) abuf->fields.sfmt_break.f
13555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13556 int UNUSED written = 0;
13557 IADDR UNUSED pc = abuf->addr;
13558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13559
13560{
13561; /*clobber*/
13562; /*clobber*/
13563; /*clobber*/
13564; /*clobber*/
13565; /*clobber*/
13566; /*clobber*/
13567frv_break (current_cpu);
13568}
13569
13570 return vpc;
13571#undef FLD
13572}
13573
13574/* mtrap: mtrap$pack */
13575
13576static SEM_PC
13577SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13578{
2310652a 13579#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
13580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13581 int UNUSED written = 0;
13582 IADDR UNUSED pc = abuf->addr;
13583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13584
13585frv_mtrap (current_cpu);
13586
13587 return vpc;
13588#undef FLD
13589}
13590
13591/* andcr: andcr$pack $CRi,$CRj,$CRk */
13592
13593static SEM_PC
13594SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13595{
13596#define FLD(f) abuf->fields.sfmt_andcr.f
13597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13598 int UNUSED written = 0;
13599 IADDR UNUSED pc = abuf->addr;
13600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13601
13602 {
13603 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13604 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13605 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13606 }
13607
13608 return vpc;
13609#undef FLD
13610}
13611
13612/* orcr: orcr$pack $CRi,$CRj,$CRk */
13613
13614static SEM_PC
13615SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13616{
13617#define FLD(f) abuf->fields.sfmt_andcr.f
13618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13619 int UNUSED written = 0;
13620 IADDR UNUSED pc = abuf->addr;
13621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13622
13623 {
13624 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13625 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13626 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13627 }
13628
13629 return vpc;
13630#undef FLD
13631}
13632
13633/* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13634
13635static SEM_PC
13636SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13637{
13638#define FLD(f) abuf->fields.sfmt_andcr.f
13639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13640 int UNUSED written = 0;
13641 IADDR UNUSED pc = abuf->addr;
13642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13643
13644 {
13645 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13646 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13647 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13648 }
13649
13650 return vpc;
13651#undef FLD
13652}
13653
13654/* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13655
13656static SEM_PC
13657SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13658{
13659#define FLD(f) abuf->fields.sfmt_andcr.f
13660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13661 int UNUSED written = 0;
13662 IADDR UNUSED pc = abuf->addr;
13663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13664
13665 {
13666 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13667 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13668 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13669 }
13670
13671 return vpc;
13672#undef FLD
13673}
13674
13675/* norcr: norcr$pack $CRi,$CRj,$CRk */
13676
13677static SEM_PC
13678SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13679{
13680#define FLD(f) abuf->fields.sfmt_andcr.f
13681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13682 int UNUSED written = 0;
13683 IADDR UNUSED pc = abuf->addr;
13684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13685
13686 {
13687 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13688 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13689 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13690 }
13691
13692 return vpc;
13693#undef FLD
13694}
13695
13696/* andncr: andncr$pack $CRi,$CRj,$CRk */
13697
13698static SEM_PC
13699SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13700{
13701#define FLD(f) abuf->fields.sfmt_andcr.f
13702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13703 int UNUSED written = 0;
13704 IADDR UNUSED pc = abuf->addr;
13705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13706
13707 {
13708 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13709 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13710 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13711 }
13712
13713 return vpc;
13714#undef FLD
13715}
13716
13717/* orncr: orncr$pack $CRi,$CRj,$CRk */
13718
13719static SEM_PC
13720SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13721{
13722#define FLD(f) abuf->fields.sfmt_andcr.f
13723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13724 int UNUSED written = 0;
13725 IADDR UNUSED pc = abuf->addr;
13726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13727
13728 {
13729 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13730 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13731 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13732 }
13733
13734 return vpc;
13735#undef FLD
13736}
13737
13738/* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13739
13740static SEM_PC
13741SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13742{
13743#define FLD(f) abuf->fields.sfmt_andcr.f
13744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13745 int UNUSED written = 0;
13746 IADDR UNUSED pc = abuf->addr;
13747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13748
13749 {
13750 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13751 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13752 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13753 }
13754
13755 return vpc;
13756#undef FLD
13757}
13758
13759/* norncr: norncr$pack $CRi,$CRj,$CRk */
13760
13761static SEM_PC
13762SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13763{
13764#define FLD(f) abuf->fields.sfmt_andcr.f
13765 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13766 int UNUSED written = 0;
13767 IADDR UNUSED pc = abuf->addr;
13768 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13769
13770 {
13771 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13772 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13773 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13774 }
13775
13776 return vpc;
13777#undef FLD
13778}
13779
13780/* notcr: notcr$pack $CRj,$CRk */
13781
13782static SEM_PC
13783SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13784{
13785#define FLD(f) abuf->fields.sfmt_andcr.f
13786 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13787 int UNUSED written = 0;
13788 IADDR UNUSED pc = abuf->addr;
13789 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13790
13791 {
13792 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13793 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13794 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13795 }
13796
13797 return vpc;
13798#undef FLD
13799}
13800
13801/* ckra: ckra$pack $CRj_int */
13802
13803static SEM_PC
13804SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13805{
13806#define FLD(f) abuf->fields.sfmt_cckeq.f
13807 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13808 int UNUSED written = 0;
13809 IADDR UNUSED pc = abuf->addr;
13810 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13811
13812 {
13813 UQI opval = 3;
13814 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13815 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13816 }
13817
13818 return vpc;
13819#undef FLD
13820}
13821
13822/* ckno: ckno$pack $CRj_int */
13823
13824static SEM_PC
13825SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13826{
13827#define FLD(f) abuf->fields.sfmt_cckeq.f
13828 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13829 int UNUSED written = 0;
13830 IADDR UNUSED pc = abuf->addr;
13831 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13832
13833 {
13834 UQI opval = 2;
13835 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13836 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13837 }
13838
13839 return vpc;
13840#undef FLD
13841}
13842
13843/* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13844
13845static SEM_PC
13846SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13847{
13848#define FLD(f) abuf->fields.sfmt_cckeq.f
13849 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13850 int UNUSED written = 0;
13851 IADDR UNUSED pc = abuf->addr;
13852 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13853
13854if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13855 {
13856 UQI opval = 3;
13857 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13858 written |= (1 << 1);
13859 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13860 }
13861} else {
13862 {
13863 UQI opval = 2;
13864 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13865 written |= (1 << 1);
13866 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13867 }
13868}
13869
13870 abuf->written = written;
13871 return vpc;
13872#undef FLD
13873}
13874
13875/* ckne: ckne$pack $ICCi_3,$CRj_int */
13876
13877static SEM_PC
13878SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13879{
13880#define FLD(f) abuf->fields.sfmt_cckeq.f
13881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13882 int UNUSED written = 0;
13883 IADDR UNUSED pc = abuf->addr;
13884 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13885
13886if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13887 {
13888 UQI opval = 3;
13889 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13890 written |= (1 << 1);
13891 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13892 }
13893} else {
13894 {
13895 UQI opval = 2;
13896 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13897 written |= (1 << 1);
13898 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13899 }
13900}
13901
13902 abuf->written = written;
13903 return vpc;
13904#undef FLD
13905}
13906
13907/* ckle: ckle$pack $ICCi_3,$CRj_int */
13908
13909static SEM_PC
13910SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13911{
13912#define FLD(f) abuf->fields.sfmt_cckeq.f
13913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13914 int UNUSED written = 0;
13915 IADDR UNUSED pc = abuf->addr;
13916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13917
13918if (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))))) {
13919 {
13920 UQI opval = 3;
13921 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13922 written |= (1 << 1);
13923 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13924 }
13925} else {
13926 {
13927 UQI opval = 2;
13928 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13929 written |= (1 << 1);
13930 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13931 }
13932}
13933
13934 abuf->written = written;
13935 return vpc;
13936#undef FLD
13937}
13938
13939/* ckgt: ckgt$pack $ICCi_3,$CRj_int */
13940
13941static SEM_PC
13942SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13943{
13944#define FLD(f) abuf->fields.sfmt_cckeq.f
13945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13946 int UNUSED written = 0;
13947 IADDR UNUSED pc = abuf->addr;
13948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13949
13950if (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)))))) {
13951 {
13952 UQI opval = 3;
13953 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13954 written |= (1 << 1);
13955 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13956 }
13957} else {
13958 {
13959 UQI opval = 2;
13960 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13961 written |= (1 << 1);
13962 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13963 }
13964}
13965
13966 abuf->written = written;
13967 return vpc;
13968#undef FLD
13969}
13970
13971/* cklt: cklt$pack $ICCi_3,$CRj_int */
13972
13973static SEM_PC
13974SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13975{
13976#define FLD(f) abuf->fields.sfmt_cckeq.f
13977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13978 int UNUSED written = 0;
13979 IADDR UNUSED pc = abuf->addr;
13980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13981
13982if (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)))) {
13983 {
13984 UQI opval = 3;
13985 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13986 written |= (1 << 1);
13987 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13988 }
13989} else {
13990 {
13991 UQI opval = 2;
13992 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13993 written |= (1 << 1);
13994 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13995 }
13996}
13997
13998 abuf->written = written;
13999 return vpc;
14000#undef FLD
14001}
14002
14003/* ckge: ckge$pack $ICCi_3,$CRj_int */
14004
14005static SEM_PC
14006SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14007{
14008#define FLD(f) abuf->fields.sfmt_cckeq.f
14009 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14010 int UNUSED written = 0;
14011 IADDR UNUSED pc = abuf->addr;
14012 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14013
14014if (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))))) {
14015 {
14016 UQI opval = 3;
14017 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14018 written |= (1 << 1);
14019 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14020 }
14021} else {
14022 {
14023 UQI opval = 2;
14024 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14025 written |= (1 << 1);
14026 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14027 }
14028}
14029
14030 abuf->written = written;
14031 return vpc;
14032#undef FLD
14033}
14034
14035/* ckls: ckls$pack $ICCi_3,$CRj_int */
14036
14037static SEM_PC
14038SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14039{
14040#define FLD(f) abuf->fields.sfmt_cckeq.f
14041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14042 int UNUSED written = 0;
14043 IADDR UNUSED pc = abuf->addr;
14044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14045
14046if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14047 {
14048 UQI opval = 3;
14049 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14050 written |= (1 << 1);
14051 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14052 }
14053} else {
14054 {
14055 UQI opval = 2;
14056 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14057 written |= (1 << 1);
14058 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14059 }
14060}
14061
14062 abuf->written = written;
14063 return vpc;
14064#undef FLD
14065}
14066
14067/* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14068
14069static SEM_PC
14070SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14071{
14072#define FLD(f) abuf->fields.sfmt_cckeq.f
14073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14074 int UNUSED written = 0;
14075 IADDR UNUSED pc = abuf->addr;
14076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14077
14078if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
14079 {
14080 UQI opval = 3;
14081 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14082 written |= (1 << 1);
14083 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14084 }
14085} else {
14086 {
14087 UQI opval = 2;
14088 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14089 written |= (1 << 1);
14090 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14091 }
14092}
14093
14094 abuf->written = written;
14095 return vpc;
14096#undef FLD
14097}
14098
14099/* ckc: ckc$pack $ICCi_3,$CRj_int */
14100
14101static SEM_PC
14102SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14103{
14104#define FLD(f) abuf->fields.sfmt_cckeq.f
14105 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14106 int UNUSED written = 0;
14107 IADDR UNUSED pc = abuf->addr;
14108 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14109
14110if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14111 {
14112 UQI opval = 3;
14113 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14114 written |= (1 << 1);
14115 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14116 }
14117} else {
14118 {
14119 UQI opval = 2;
14120 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14121 written |= (1 << 1);
14122 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14123 }
14124}
14125
14126 abuf->written = written;
14127 return vpc;
14128#undef FLD
14129}
14130
14131/* cknc: cknc$pack $ICCi_3,$CRj_int */
14132
14133static SEM_PC
14134SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14135{
14136#define FLD(f) abuf->fields.sfmt_cckeq.f
14137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14138 int UNUSED written = 0;
14139 IADDR UNUSED pc = abuf->addr;
14140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14141
14142if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14143 {
14144 UQI opval = 3;
14145 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14146 written |= (1 << 1);
14147 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14148 }
14149} else {
14150 {
14151 UQI opval = 2;
14152 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14153 written |= (1 << 1);
14154 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14155 }
14156}
14157
14158 abuf->written = written;
14159 return vpc;
14160#undef FLD
14161}
14162
14163/* ckn: ckn$pack $ICCi_3,$CRj_int */
14164
14165static SEM_PC
14166SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14167{
14168#define FLD(f) abuf->fields.sfmt_cckeq.f
14169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14170 int UNUSED written = 0;
14171 IADDR UNUSED pc = abuf->addr;
14172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14173
14174if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14175 {
14176 UQI opval = 3;
14177 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14178 written |= (1 << 1);
14179 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14180 }
14181} else {
14182 {
14183 UQI opval = 2;
14184 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14185 written |= (1 << 1);
14186 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14187 }
14188}
14189
14190 abuf->written = written;
14191 return vpc;
14192#undef FLD
14193}
14194
14195/* ckp: ckp$pack $ICCi_3,$CRj_int */
14196
14197static SEM_PC
14198SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14199{
14200#define FLD(f) abuf->fields.sfmt_cckeq.f
14201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14202 int UNUSED written = 0;
14203 IADDR UNUSED pc = abuf->addr;
14204 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14205
14206if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14207 {
14208 UQI opval = 3;
14209 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14210 written |= (1 << 1);
14211 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14212 }
14213} else {
14214 {
14215 UQI opval = 2;
14216 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14217 written |= (1 << 1);
14218 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14219 }
14220}
14221
14222 abuf->written = written;
14223 return vpc;
14224#undef FLD
14225}
14226
14227/* ckv: ckv$pack $ICCi_3,$CRj_int */
14228
14229static SEM_PC
14230SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14231{
14232#define FLD(f) abuf->fields.sfmt_cckeq.f
14233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14234 int UNUSED written = 0;
14235 IADDR UNUSED pc = abuf->addr;
14236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14237
14238if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14239 {
14240 UQI opval = 3;
14241 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14242 written |= (1 << 1);
14243 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14244 }
14245} else {
14246 {
14247 UQI opval = 2;
14248 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14249 written |= (1 << 1);
14250 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14251 }
14252}
14253
14254 abuf->written = written;
14255 return vpc;
14256#undef FLD
14257}
14258
14259/* cknv: cknv$pack $ICCi_3,$CRj_int */
14260
14261static SEM_PC
14262SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14263{
14264#define FLD(f) abuf->fields.sfmt_cckeq.f
14265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14266 int UNUSED written = 0;
14267 IADDR UNUSED pc = abuf->addr;
14268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14269
14270if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14271 {
14272 UQI opval = 3;
14273 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14274 written |= (1 << 1);
14275 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14276 }
14277} else {
14278 {
14279 UQI opval = 2;
14280 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14281 written |= (1 << 1);
14282 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14283 }
14284}
14285
14286 abuf->written = written;
14287 return vpc;
14288#undef FLD
14289}
14290
14291/* fckra: fckra$pack $CRj_float */
14292
14293static SEM_PC
14294SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14295{
14296#define FLD(f) abuf->fields.sfmt_cfckne.f
14297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14298 int UNUSED written = 0;
14299 IADDR UNUSED pc = abuf->addr;
14300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14301
14302 {
14303 UQI opval = 3;
14304 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14305 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14306 }
14307
14308 return vpc;
14309#undef FLD
14310}
14311
14312/* fckno: fckno$pack $CRj_float */
14313
14314static SEM_PC
14315SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14316{
14317#define FLD(f) abuf->fields.sfmt_cfckne.f
14318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14319 int UNUSED written = 0;
14320 IADDR UNUSED pc = abuf->addr;
14321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14322
14323 {
14324 UQI opval = 2;
14325 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14326 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14327 }
14328
14329 return vpc;
14330#undef FLD
14331}
14332
14333/* fckne: fckne$pack $FCCi_3,$CRj_float */
14334
14335static SEM_PC
14336SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14337{
14338#define FLD(f) abuf->fields.sfmt_cfckne.f
14339 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14340 int UNUSED written = 0;
14341 IADDR UNUSED pc = abuf->addr;
14342 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14343
14344if (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))))) {
14345 {
14346 UQI opval = 3;
14347 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14348 written |= (1 << 1);
14349 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14350 }
14351} else {
14352 {
14353 UQI opval = 2;
14354 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14355 written |= (1 << 1);
14356 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14357 }
14358}
14359
14360 abuf->written = written;
14361 return vpc;
14362#undef FLD
14363}
14364
14365/* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14366
14367static SEM_PC
14368SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14369{
14370#define FLD(f) abuf->fields.sfmt_cfckne.f
14371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14372 int UNUSED written = 0;
14373 IADDR UNUSED pc = abuf->addr;
14374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14375
14376if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14377 {
14378 UQI opval = 3;
14379 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14380 written |= (1 << 1);
14381 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14382 }
14383} else {
14384 {
14385 UQI opval = 2;
14386 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14387 written |= (1 << 1);
14388 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14389 }
14390}
14391
14392 abuf->written = written;
14393 return vpc;
14394#undef FLD
14395}
14396
14397/* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14398
14399static SEM_PC
14400SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14401{
14402#define FLD(f) abuf->fields.sfmt_cfckne.f
14403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14404 int UNUSED written = 0;
14405 IADDR UNUSED pc = abuf->addr;
14406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14407
14408if (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)))) {
14409 {
14410 UQI opval = 3;
14411 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14412 written |= (1 << 1);
14413 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14414 }
14415} else {
14416 {
14417 UQI opval = 2;
14418 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14419 written |= (1 << 1);
14420 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14421 }
14422}
14423
14424 abuf->written = written;
14425 return vpc;
14426#undef FLD
14427}
14428
14429/* fckue: fckue$pack $FCCi_3,$CRj_float */
14430
14431static SEM_PC
14432SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14433{
14434#define FLD(f) abuf->fields.sfmt_cfckne.f
14435 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14436 int UNUSED written = 0;
14437 IADDR UNUSED pc = abuf->addr;
14438 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14439
14440if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14441 {
14442 UQI opval = 3;
14443 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14444 written |= (1 << 1);
14445 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14446 }
14447} else {
14448 {
14449 UQI opval = 2;
14450 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14451 written |= (1 << 1);
14452 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14453 }
14454}
14455
14456 abuf->written = written;
14457 return vpc;
14458#undef FLD
14459}
14460
14461/* fckul: fckul$pack $FCCi_3,$CRj_float */
14462
14463static SEM_PC
14464SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14465{
14466#define FLD(f) abuf->fields.sfmt_cfckne.f
14467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14468 int UNUSED written = 0;
14469 IADDR UNUSED pc = abuf->addr;
14470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14471
14472if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14473 {
14474 UQI opval = 3;
14475 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14476 written |= (1 << 1);
14477 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14478 }
14479} else {
14480 {
14481 UQI opval = 2;
14482 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14483 written |= (1 << 1);
14484 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14485 }
14486}
14487
14488 abuf->written = written;
14489 return vpc;
14490#undef FLD
14491}
14492
14493/* fckge: fckge$pack $FCCi_3,$CRj_float */
14494
14495static SEM_PC
14496SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14497{
14498#define FLD(f) abuf->fields.sfmt_cfckne.f
14499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14500 int UNUSED written = 0;
14501 IADDR UNUSED pc = abuf->addr;
14502 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14503
14504if (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)))) {
14505 {
14506 UQI opval = 3;
14507 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14508 written |= (1 << 1);
14509 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14510 }
14511} else {
14512 {
14513 UQI opval = 2;
14514 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14515 written |= (1 << 1);
14516 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14517 }
14518}
14519
14520 abuf->written = written;
14521 return vpc;
14522#undef FLD
14523}
14524
14525/* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14526
14527static SEM_PC
14528SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14529{
14530#define FLD(f) abuf->fields.sfmt_cfckne.f
14531 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14532 int UNUSED written = 0;
14533 IADDR UNUSED pc = abuf->addr;
14534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14535
14536if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14537 {
14538 UQI opval = 3;
14539 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14540 written |= (1 << 1);
14541 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14542 }
14543} else {
14544 {
14545 UQI opval = 2;
14546 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14547 written |= (1 << 1);
14548 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14549 }
14550}
14551
14552 abuf->written = written;
14553 return vpc;
14554#undef FLD
14555}
14556
14557/* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14558
14559static SEM_PC
14560SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14561{
14562#define FLD(f) abuf->fields.sfmt_cfckne.f
14563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14564 int UNUSED written = 0;
14565 IADDR UNUSED pc = abuf->addr;
14566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14567
14568if (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))))) {
14569 {
14570 UQI opval = 3;
14571 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14572 written |= (1 << 1);
14573 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14574 }
14575} else {
14576 {
14577 UQI opval = 2;
14578 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14579 written |= (1 << 1);
14580 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14581 }
14582}
14583
14584 abuf->written = written;
14585 return vpc;
14586#undef FLD
14587}
14588
14589/* fckug: fckug$pack $FCCi_3,$CRj_float */
14590
14591static SEM_PC
14592SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14593{
14594#define FLD(f) abuf->fields.sfmt_cfckne.f
14595 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14596 int UNUSED written = 0;
14597 IADDR UNUSED pc = abuf->addr;
14598 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14599
14600if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14601 {
14602 UQI opval = 3;
14603 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14604 written |= (1 << 1);
14605 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14606 }
14607} else {
14608 {
14609 UQI opval = 2;
14610 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14611 written |= (1 << 1);
14612 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14613 }
14614}
14615
14616 abuf->written = written;
14617 return vpc;
14618#undef FLD
14619}
14620
14621/* fckle: fckle$pack $FCCi_3,$CRj_float */
14622
14623static SEM_PC
14624SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14625{
14626#define FLD(f) abuf->fields.sfmt_cfckne.f
14627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14628 int UNUSED written = 0;
14629 IADDR UNUSED pc = abuf->addr;
14630 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14631
14632if (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)))) {
14633 {
14634 UQI opval = 3;
14635 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14636 written |= (1 << 1);
14637 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14638 }
14639} else {
14640 {
14641 UQI opval = 2;
14642 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14643 written |= (1 << 1);
14644 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14645 }
14646}
14647
14648 abuf->written = written;
14649 return vpc;
14650#undef FLD
14651}
14652
14653/* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14654
14655static SEM_PC
14656SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14657{
14658#define FLD(f) abuf->fields.sfmt_cfckne.f
14659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14660 int UNUSED written = 0;
14661 IADDR UNUSED pc = abuf->addr;
14662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14663
14664if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14665 {
14666 UQI opval = 3;
14667 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14668 written |= (1 << 1);
14669 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14670 }
14671} else {
14672 {
14673 UQI opval = 2;
14674 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14675 written |= (1 << 1);
14676 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14677 }
14678}
14679
14680 abuf->written = written;
14681 return vpc;
14682#undef FLD
14683}
14684
14685/* fckule: fckule$pack $FCCi_3,$CRj_float */
14686
14687static SEM_PC
14688SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14689{
14690#define FLD(f) abuf->fields.sfmt_cfckne.f
14691 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14692 int UNUSED written = 0;
14693 IADDR UNUSED pc = abuf->addr;
14694 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14695
14696if (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))))) {
14697 {
14698 UQI opval = 3;
14699 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14700 written |= (1 << 1);
14701 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14702 }
14703} else {
14704 {
14705 UQI opval = 2;
14706 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14707 written |= (1 << 1);
14708 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14709 }
14710}
14711
14712 abuf->written = written;
14713 return vpc;
14714#undef FLD
14715}
14716
14717/* fcku: fcku$pack $FCCi_3,$CRj_float */
14718
14719static SEM_PC
14720SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14721{
14722#define FLD(f) abuf->fields.sfmt_cfckne.f
14723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14724 int UNUSED written = 0;
14725 IADDR UNUSED pc = abuf->addr;
14726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14727
14728if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14729 {
14730 UQI opval = 3;
14731 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14732 written |= (1 << 1);
14733 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14734 }
14735} else {
14736 {
14737 UQI opval = 2;
14738 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14739 written |= (1 << 1);
14740 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14741 }
14742}
14743
14744 abuf->written = written;
14745 return vpc;
14746#undef FLD
14747}
14748
14749/* fcko: fcko$pack $FCCi_3,$CRj_float */
14750
14751static SEM_PC
14752SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14753{
14754#define FLD(f) abuf->fields.sfmt_cfckne.f
14755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14756 int UNUSED written = 0;
14757 IADDR UNUSED pc = abuf->addr;
14758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14759
14760if (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))))) {
14761 {
14762 UQI opval = 3;
14763 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14764 written |= (1 << 1);
14765 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14766 }
14767} else {
14768 {
14769 UQI opval = 2;
14770 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14771 written |= (1 << 1);
14772 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14773 }
14774}
14775
14776 abuf->written = written;
14777 return vpc;
14778#undef FLD
14779}
14780
14781/* cckra: cckra$pack $CRj_int,$CCi,$cond */
14782
14783static SEM_PC
14784SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14785{
14786#define FLD(f) abuf->fields.sfmt_cckeq.f
14787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14788 int UNUSED written = 0;
14789 IADDR UNUSED pc = abuf->addr;
14790 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14791
14792if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14793 {
14794 UQI opval = 3;
14795 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14796 written |= (1 << 2);
14797 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14798 }
14799} else {
14800 {
14801 UQI opval = 0;
14802 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14803 written |= (1 << 2);
14804 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14805 }
14806}
14807
14808 abuf->written = written;
14809 return vpc;
14810#undef FLD
14811}
14812
14813/* cckno: cckno$pack $CRj_int,$CCi,$cond */
14814
14815static SEM_PC
14816SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14817{
14818#define FLD(f) abuf->fields.sfmt_cckeq.f
14819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14820 int UNUSED written = 0;
14821 IADDR UNUSED pc = abuf->addr;
14822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14823
14824if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14825 {
14826 UQI opval = 2;
14827 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14828 written |= (1 << 2);
14829 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14830 }
14831} else {
14832 {
14833 UQI opval = 0;
14834 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14835 written |= (1 << 2);
14836 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14837 }
14838}
14839
14840 abuf->written = written;
14841 return vpc;
14842#undef FLD
14843}
14844
14845/* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14846
14847static SEM_PC
14848SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14849{
14850#define FLD(f) abuf->fields.sfmt_cckeq.f
14851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14852 int UNUSED written = 0;
14853 IADDR UNUSED pc = abuf->addr;
14854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14855
14856if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14857if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14858 {
14859 UQI opval = 3;
14860 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14861 written |= (1 << 3);
14862 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14863 }
14864} else {
14865 {
14866 UQI opval = 2;
14867 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14868 written |= (1 << 3);
14869 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14870 }
14871}
14872} else {
14873 {
14874 UQI opval = 0;
14875 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14876 written |= (1 << 3);
14877 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14878 }
14879}
14880
14881 abuf->written = written;
14882 return vpc;
14883#undef FLD
14884}
14885
14886/* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14887
14888static SEM_PC
14889SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14890{
14891#define FLD(f) abuf->fields.sfmt_cckeq.f
14892 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14893 int UNUSED written = 0;
14894 IADDR UNUSED pc = abuf->addr;
14895 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14896
14897if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14898if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14899 {
14900 UQI opval = 3;
14901 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14902 written |= (1 << 3);
14903 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14904 }
14905} else {
14906 {
14907 UQI opval = 2;
14908 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14909 written |= (1 << 3);
14910 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14911 }
14912}
14913} else {
14914 {
14915 UQI opval = 0;
14916 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14917 written |= (1 << 3);
14918 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14919 }
14920}
14921
14922 abuf->written = written;
14923 return vpc;
14924#undef FLD
14925}
14926
14927/* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
14928
14929static SEM_PC
14930SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14931{
14932#define FLD(f) abuf->fields.sfmt_cckeq.f
14933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14934 int UNUSED written = 0;
14935 IADDR UNUSED pc = abuf->addr;
14936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14937
14938if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14939if (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))))) {
14940 {
14941 UQI opval = 3;
14942 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14943 written |= (1 << 3);
14944 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14945 }
14946} else {
14947 {
14948 UQI opval = 2;
14949 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14950 written |= (1 << 3);
14951 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14952 }
14953}
14954} else {
14955 {
14956 UQI opval = 0;
14957 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14958 written |= (1 << 3);
14959 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14960 }
14961}
14962
14963 abuf->written = written;
14964 return vpc;
14965#undef FLD
14966}
14967
14968/* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
14969
14970static SEM_PC
14971SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14972{
14973#define FLD(f) abuf->fields.sfmt_cckeq.f
14974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14975 int UNUSED written = 0;
14976 IADDR UNUSED pc = abuf->addr;
14977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14978
14979if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14980if (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)))))) {
14981 {
14982 UQI opval = 3;
14983 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14984 written |= (1 << 3);
14985 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14986 }
14987} else {
14988 {
14989 UQI opval = 2;
14990 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14991 written |= (1 << 3);
14992 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14993 }
14994}
14995} else {
14996 {
14997 UQI opval = 0;
14998 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14999 written |= (1 << 3);
15000 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15001 }
15002}
15003
15004 abuf->written = written;
15005 return vpc;
15006#undef FLD
15007}
15008
15009/* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15010
15011static SEM_PC
15012SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15013{
15014#define FLD(f) abuf->fields.sfmt_cckeq.f
15015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15016 int UNUSED written = 0;
15017 IADDR UNUSED pc = abuf->addr;
15018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15019
15020if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15021if (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)))) {
15022 {
15023 UQI opval = 3;
15024 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15025 written |= (1 << 3);
15026 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15027 }
15028} else {
15029 {
15030 UQI opval = 2;
15031 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15032 written |= (1 << 3);
15033 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15034 }
15035}
15036} else {
15037 {
15038 UQI opval = 0;
15039 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15040 written |= (1 << 3);
15041 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15042 }
15043}
15044
15045 abuf->written = written;
15046 return vpc;
15047#undef FLD
15048}
15049
15050/* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15051
15052static SEM_PC
15053SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15054{
15055#define FLD(f) abuf->fields.sfmt_cckeq.f
15056 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15057 int UNUSED written = 0;
15058 IADDR UNUSED pc = abuf->addr;
15059 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15060
15061if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15062if (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))))) {
15063 {
15064 UQI opval = 3;
15065 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15066 written |= (1 << 3);
15067 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15068 }
15069} else {
15070 {
15071 UQI opval = 2;
15072 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15073 written |= (1 << 3);
15074 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15075 }
15076}
15077} else {
15078 {
15079 UQI opval = 0;
15080 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15081 written |= (1 << 3);
15082 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15083 }
15084}
15085
15086 abuf->written = written;
15087 return vpc;
15088#undef FLD
15089}
15090
15091/* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15092
15093static SEM_PC
15094SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15095{
15096#define FLD(f) abuf->fields.sfmt_cckeq.f
15097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15098 int UNUSED written = 0;
15099 IADDR UNUSED pc = abuf->addr;
15100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15101
15102if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15103if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15104 {
15105 UQI opval = 3;
15106 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15107 written |= (1 << 3);
15108 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15109 }
15110} else {
15111 {
15112 UQI opval = 2;
15113 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15114 written |= (1 << 3);
15115 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15116 }
15117}
15118} else {
15119 {
15120 UQI opval = 0;
15121 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15122 written |= (1 << 3);
15123 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15124 }
15125}
15126
15127 abuf->written = written;
15128 return vpc;
15129#undef FLD
15130}
15131
15132/* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15133
15134static SEM_PC
15135SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15136{
15137#define FLD(f) abuf->fields.sfmt_cckeq.f
15138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15139 int UNUSED written = 0;
15140 IADDR UNUSED pc = abuf->addr;
15141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15142
15143if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15144if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
15145 {
15146 UQI opval = 3;
15147 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15148 written |= (1 << 3);
15149 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15150 }
15151} else {
15152 {
15153 UQI opval = 2;
15154 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15155 written |= (1 << 3);
15156 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15157 }
15158}
15159} else {
15160 {
15161 UQI opval = 0;
15162 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15163 written |= (1 << 3);
15164 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15165 }
15166}
15167
15168 abuf->written = written;
15169 return vpc;
15170#undef FLD
15171}
15172
15173/* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15174
15175static SEM_PC
15176SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15177{
15178#define FLD(f) abuf->fields.sfmt_cckeq.f
15179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15180 int UNUSED written = 0;
15181 IADDR UNUSED pc = abuf->addr;
15182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15183
15184if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15185if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15186 {
15187 UQI opval = 3;
15188 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15189 written |= (1 << 3);
15190 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15191 }
15192} else {
15193 {
15194 UQI opval = 2;
15195 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15196 written |= (1 << 3);
15197 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15198 }
15199}
15200} else {
15201 {
15202 UQI opval = 0;
15203 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15204 written |= (1 << 3);
15205 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15206 }
15207}
15208
15209 abuf->written = written;
15210 return vpc;
15211#undef FLD
15212}
15213
15214/* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15215
15216static SEM_PC
15217SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15218{
15219#define FLD(f) abuf->fields.sfmt_cckeq.f
15220 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15221 int UNUSED written = 0;
15222 IADDR UNUSED pc = abuf->addr;
15223 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15224
15225if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15226if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15227 {
15228 UQI opval = 3;
15229 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15230 written |= (1 << 3);
15231 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15232 }
15233} else {
15234 {
15235 UQI opval = 2;
15236 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15237 written |= (1 << 3);
15238 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15239 }
15240}
15241} else {
15242 {
15243 UQI opval = 0;
15244 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15245 written |= (1 << 3);
15246 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15247 }
15248}
15249
15250 abuf->written = written;
15251 return vpc;
15252#undef FLD
15253}
15254
15255/* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15256
15257static SEM_PC
15258SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15259{
15260#define FLD(f) abuf->fields.sfmt_cckeq.f
15261 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15262 int UNUSED written = 0;
15263 IADDR UNUSED pc = abuf->addr;
15264 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15265
15266if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15267if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15268 {
15269 UQI opval = 3;
15270 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15271 written |= (1 << 3);
15272 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15273 }
15274} else {
15275 {
15276 UQI opval = 2;
15277 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15278 written |= (1 << 3);
15279 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15280 }
15281}
15282} else {
15283 {
15284 UQI opval = 0;
15285 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15286 written |= (1 << 3);
15287 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15288 }
15289}
15290
15291 abuf->written = written;
15292 return vpc;
15293#undef FLD
15294}
15295
15296/* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15297
15298static SEM_PC
15299SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15300{
15301#define FLD(f) abuf->fields.sfmt_cckeq.f
15302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15303 int UNUSED written = 0;
15304 IADDR UNUSED pc = abuf->addr;
15305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15306
15307if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15308if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15309 {
15310 UQI opval = 3;
15311 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15312 written |= (1 << 3);
15313 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15314 }
15315} else {
15316 {
15317 UQI opval = 2;
15318 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15319 written |= (1 << 3);
15320 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15321 }
15322}
15323} else {
15324 {
15325 UQI opval = 0;
15326 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15327 written |= (1 << 3);
15328 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15329 }
15330}
15331
15332 abuf->written = written;
15333 return vpc;
15334#undef FLD
15335}
15336
15337/* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15338
15339static SEM_PC
15340SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15341{
15342#define FLD(f) abuf->fields.sfmt_cckeq.f
15343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15344 int UNUSED written = 0;
15345 IADDR UNUSED pc = abuf->addr;
15346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15347
15348if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15349if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15350 {
15351 UQI opval = 3;
15352 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15353 written |= (1 << 3);
15354 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15355 }
15356} else {
15357 {
15358 UQI opval = 2;
15359 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15360 written |= (1 << 3);
15361 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15362 }
15363}
15364} else {
15365 {
15366 UQI opval = 0;
15367 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15368 written |= (1 << 3);
15369 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15370 }
15371}
15372
15373 abuf->written = written;
15374 return vpc;
15375#undef FLD
15376}
15377
15378/* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15379
15380static SEM_PC
15381SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15382{
15383#define FLD(f) abuf->fields.sfmt_cckeq.f
15384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15385 int UNUSED written = 0;
15386 IADDR UNUSED pc = abuf->addr;
15387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15388
15389if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15390if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15391 {
15392 UQI opval = 3;
15393 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15394 written |= (1 << 3);
15395 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15396 }
15397} else {
15398 {
15399 UQI opval = 2;
15400 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15401 written |= (1 << 3);
15402 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15403 }
15404}
15405} else {
15406 {
15407 UQI opval = 0;
15408 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15409 written |= (1 << 3);
15410 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15411 }
15412}
15413
15414 abuf->written = written;
15415 return vpc;
15416#undef FLD
15417}
15418
15419/* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15420
15421static SEM_PC
15422SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15423{
15424#define FLD(f) abuf->fields.sfmt_cfckne.f
15425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15426 int UNUSED written = 0;
15427 IADDR UNUSED pc = abuf->addr;
15428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15429
15430if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15431 {
15432 UQI opval = 3;
15433 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15434 written |= (1 << 2);
15435 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15436 }
15437} else {
15438 {
15439 UQI opval = 0;
15440 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15441 written |= (1 << 2);
15442 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15443 }
15444}
15445
15446 abuf->written = written;
15447 return vpc;
15448#undef FLD
15449}
15450
15451/* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15452
15453static SEM_PC
15454SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15455{
15456#define FLD(f) abuf->fields.sfmt_cfckne.f
15457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15458 int UNUSED written = 0;
15459 IADDR UNUSED pc = abuf->addr;
15460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15461
15462if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15463 {
15464 UQI opval = 2;
15465 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15466 written |= (1 << 2);
15467 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15468 }
15469} else {
15470 {
15471 UQI opval = 0;
15472 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15473 written |= (1 << 2);
15474 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15475 }
15476}
15477
15478 abuf->written = written;
15479 return vpc;
15480#undef FLD
15481}
15482
15483/* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15484
15485static SEM_PC
15486SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15487{
15488#define FLD(f) abuf->fields.sfmt_cfckne.f
15489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15490 int UNUSED written = 0;
15491 IADDR UNUSED pc = abuf->addr;
15492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15493
15494if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15495if (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))))) {
15496 {
15497 UQI opval = 3;
15498 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15499 written |= (1 << 3);
15500 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15501 }
15502} else {
15503 {
15504 UQI opval = 2;
15505 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15506 written |= (1 << 3);
15507 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15508 }
15509}
15510} else {
15511 {
15512 UQI opval = 0;
15513 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15514 written |= (1 << 3);
15515 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15516 }
15517}
15518
15519 abuf->written = written;
15520 return vpc;
15521#undef FLD
15522}
15523
15524/* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15525
15526static SEM_PC
15527SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15528{
15529#define FLD(f) abuf->fields.sfmt_cfckne.f
15530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15531 int UNUSED written = 0;
15532 IADDR UNUSED pc = abuf->addr;
15533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15534
15535if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15536if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15537 {
15538 UQI opval = 3;
15539 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15540 written |= (1 << 3);
15541 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15542 }
15543} else {
15544 {
15545 UQI opval = 2;
15546 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15547 written |= (1 << 3);
15548 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15549 }
15550}
15551} else {
15552 {
15553 UQI opval = 0;
15554 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15555 written |= (1 << 3);
15556 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15557 }
15558}
15559
15560 abuf->written = written;
15561 return vpc;
15562#undef FLD
15563}
15564
15565/* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15566
15567static SEM_PC
15568SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15569{
15570#define FLD(f) abuf->fields.sfmt_cfckne.f
15571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15572 int UNUSED written = 0;
15573 IADDR UNUSED pc = abuf->addr;
15574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15575
15576if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15577if (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)))) {
15578 {
15579 UQI opval = 3;
15580 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15581 written |= (1 << 3);
15582 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15583 }
15584} else {
15585 {
15586 UQI opval = 2;
15587 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15588 written |= (1 << 3);
15589 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15590 }
15591}
15592} else {
15593 {
15594 UQI opval = 0;
15595 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15596 written |= (1 << 3);
15597 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15598 }
15599}
15600
15601 abuf->written = written;
15602 return vpc;
15603#undef FLD
15604}
15605
15606/* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15607
15608static SEM_PC
15609SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15610{
15611#define FLD(f) abuf->fields.sfmt_cfckne.f
15612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15613 int UNUSED written = 0;
15614 IADDR UNUSED pc = abuf->addr;
15615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15616
15617if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15618if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15619 {
15620 UQI opval = 3;
15621 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15622 written |= (1 << 3);
15623 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15624 }
15625} else {
15626 {
15627 UQI opval = 2;
15628 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15629 written |= (1 << 3);
15630 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15631 }
15632}
15633} else {
15634 {
15635 UQI opval = 0;
15636 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15637 written |= (1 << 3);
15638 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15639 }
15640}
15641
15642 abuf->written = written;
15643 return vpc;
15644#undef FLD
15645}
15646
15647/* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15648
15649static SEM_PC
15650SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15651{
15652#define FLD(f) abuf->fields.sfmt_cfckne.f
15653 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15654 int UNUSED written = 0;
15655 IADDR UNUSED pc = abuf->addr;
15656 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15657
15658if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15659if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15660 {
15661 UQI opval = 3;
15662 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15663 written |= (1 << 3);
15664 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15665 }
15666} else {
15667 {
15668 UQI opval = 2;
15669 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15670 written |= (1 << 3);
15671 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15672 }
15673}
15674} else {
15675 {
15676 UQI opval = 0;
15677 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15678 written |= (1 << 3);
15679 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15680 }
15681}
15682
15683 abuf->written = written;
15684 return vpc;
15685#undef FLD
15686}
15687
15688/* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15689
15690static SEM_PC
15691SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15692{
15693#define FLD(f) abuf->fields.sfmt_cfckne.f
15694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15695 int UNUSED written = 0;
15696 IADDR UNUSED pc = abuf->addr;
15697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15698
15699if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15700if (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)))) {
15701 {
15702 UQI opval = 3;
15703 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15704 written |= (1 << 3);
15705 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15706 }
15707} else {
15708 {
15709 UQI opval = 2;
15710 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15711 written |= (1 << 3);
15712 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15713 }
15714}
15715} else {
15716 {
15717 UQI opval = 0;
15718 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15719 written |= (1 << 3);
15720 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15721 }
15722}
15723
15724 abuf->written = written;
15725 return vpc;
15726#undef FLD
15727}
15728
15729/* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15730
15731static SEM_PC
15732SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15733{
15734#define FLD(f) abuf->fields.sfmt_cfckne.f
15735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15736 int UNUSED written = 0;
15737 IADDR UNUSED pc = abuf->addr;
15738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15739
15740if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15741if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15742 {
15743 UQI opval = 3;
15744 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15745 written |= (1 << 3);
15746 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15747 }
15748} else {
15749 {
15750 UQI opval = 2;
15751 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15752 written |= (1 << 3);
15753 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15754 }
15755}
15756} else {
15757 {
15758 UQI opval = 0;
15759 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15760 written |= (1 << 3);
15761 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15762 }
15763}
15764
15765 abuf->written = written;
15766 return vpc;
15767#undef FLD
15768}
15769
15770/* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15771
15772static SEM_PC
15773SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15774{
15775#define FLD(f) abuf->fields.sfmt_cfckne.f
15776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15777 int UNUSED written = 0;
15778 IADDR UNUSED pc = abuf->addr;
15779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15780
15781if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15782if (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))))) {
15783 {
15784 UQI opval = 3;
15785 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15786 written |= (1 << 3);
15787 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15788 }
15789} else {
15790 {
15791 UQI opval = 2;
15792 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15793 written |= (1 << 3);
15794 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15795 }
15796}
15797} else {
15798 {
15799 UQI opval = 0;
15800 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15801 written |= (1 << 3);
15802 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15803 }
15804}
15805
15806 abuf->written = written;
15807 return vpc;
15808#undef FLD
15809}
15810
15811/* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15812
15813static SEM_PC
15814SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15815{
15816#define FLD(f) abuf->fields.sfmt_cfckne.f
15817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15818 int UNUSED written = 0;
15819 IADDR UNUSED pc = abuf->addr;
15820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15821
15822if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15823if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15824 {
15825 UQI opval = 3;
15826 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15827 written |= (1 << 3);
15828 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15829 }
15830} else {
15831 {
15832 UQI opval = 2;
15833 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15834 written |= (1 << 3);
15835 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15836 }
15837}
15838} else {
15839 {
15840 UQI opval = 0;
15841 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15842 written |= (1 << 3);
15843 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15844 }
15845}
15846
15847 abuf->written = written;
15848 return vpc;
15849#undef FLD
15850}
15851
15852/* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15853
15854static SEM_PC
15855SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15856{
15857#define FLD(f) abuf->fields.sfmt_cfckne.f
15858 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15859 int UNUSED written = 0;
15860 IADDR UNUSED pc = abuf->addr;
15861 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15862
15863if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15864if (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)))) {
15865 {
15866 UQI opval = 3;
15867 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15868 written |= (1 << 3);
15869 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15870 }
15871} else {
15872 {
15873 UQI opval = 2;
15874 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15875 written |= (1 << 3);
15876 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15877 }
15878}
15879} else {
15880 {
15881 UQI opval = 0;
15882 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15883 written |= (1 << 3);
15884 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15885 }
15886}
15887
15888 abuf->written = written;
15889 return vpc;
15890#undef FLD
15891}
15892
15893/* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15894
15895static SEM_PC
15896SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15897{
15898#define FLD(f) abuf->fields.sfmt_cfckne.f
15899 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15900 int UNUSED written = 0;
15901 IADDR UNUSED pc = abuf->addr;
15902 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15903
15904if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15905if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15906 {
15907 UQI opval = 3;
15908 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15909 written |= (1 << 3);
15910 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15911 }
15912} else {
15913 {
15914 UQI opval = 2;
15915 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15916 written |= (1 << 3);
15917 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15918 }
15919}
15920} else {
15921 {
15922 UQI opval = 0;
15923 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15924 written |= (1 << 3);
15925 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15926 }
15927}
15928
15929 abuf->written = written;
15930 return vpc;
15931#undef FLD
15932}
15933
15934/* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
15935
15936static SEM_PC
15937SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15938{
15939#define FLD(f) abuf->fields.sfmt_cfckne.f
15940 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15941 int UNUSED written = 0;
15942 IADDR UNUSED pc = abuf->addr;
15943 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15944
15945if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15946if (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))))) {
15947 {
15948 UQI opval = 3;
15949 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15950 written |= (1 << 3);
15951 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15952 }
15953} else {
15954 {
15955 UQI opval = 2;
15956 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15957 written |= (1 << 3);
15958 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15959 }
15960}
15961} else {
15962 {
15963 UQI opval = 0;
15964 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15965 written |= (1 << 3);
15966 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15967 }
15968}
15969
15970 abuf->written = written;
15971 return vpc;
15972#undef FLD
15973}
15974
15975/* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
15976
15977static SEM_PC
15978SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15979{
15980#define FLD(f) abuf->fields.sfmt_cfckne.f
15981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15982 int UNUSED written = 0;
15983 IADDR UNUSED pc = abuf->addr;
15984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15985
15986if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15987if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
15988 {
15989 UQI opval = 3;
15990 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15991 written |= (1 << 3);
15992 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15993 }
15994} else {
15995 {
15996 UQI opval = 2;
15997 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15998 written |= (1 << 3);
15999 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16000 }
16001}
16002} else {
16003 {
16004 UQI opval = 0;
16005 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16006 written |= (1 << 3);
16007 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16008 }
16009}
16010
16011 abuf->written = written;
16012 return vpc;
16013#undef FLD
16014}
16015
16016/* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16017
16018static SEM_PC
16019SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16020{
16021#define FLD(f) abuf->fields.sfmt_cfckne.f
16022 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16023 int UNUSED written = 0;
16024 IADDR UNUSED pc = abuf->addr;
16025 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16026
16027if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16028if (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))))) {
16029 {
16030 UQI opval = 3;
16031 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16032 written |= (1 << 3);
16033 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16034 }
16035} else {
16036 {
16037 UQI opval = 2;
16038 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16039 written |= (1 << 3);
16040 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16041 }
16042}
16043} else {
16044 {
16045 UQI opval = 0;
16046 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16047 written |= (1 << 3);
16048 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16049 }
16050}
16051
16052 abuf->written = written;
16053 return vpc;
16054#undef FLD
16055}
16056
16057/* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16058
16059static SEM_PC
16060SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16061{
16062#define FLD(f) abuf->fields.sfmt_cjmpl.f
16063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16064 int UNUSED written = 0;
16065 IADDR UNUSED pc = abuf->addr;
16066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16067
16068if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16069{
16070if (EQSI (FLD (f_LI), 1)) {
16071frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16072}
16073 {
16074 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16075 sim_queue_pc_write (current_cpu, opval);
16076 written |= (1 << 6);
16077 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16078 }
16079frvbf_model_branch (current_cpu, pc, 2);
16080}
16081}
16082
16083 abuf->written = written;
16084 return vpc;
16085#undef FLD
16086}
16087
16088/* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16089
16090static SEM_PC
16091SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16092{
16093#define FLD(f) abuf->fields.sfmt_cjmpl.f
16094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16095 int UNUSED written = 0;
16096 IADDR UNUSED pc = abuf->addr;
16097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16098
16099if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16100{
16101if (EQSI (FLD (f_LI), 1)) {
16102frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16103}
16104 {
16105 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16106 sim_queue_pc_write (current_cpu, opval);
16107 written |= (1 << 6);
16108 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16109 }
16110frvbf_model_branch (current_cpu, pc, 2);
16111}
16112}
16113
16114 abuf->written = written;
16115 return vpc;
16116#undef FLD
16117}
16118
16119/* ici: ici$pack @($GRi,$GRj) */
16120
16121static SEM_PC
16122SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16123{
16124#define FLD(f) abuf->fields.sfmt_icpl.f
16125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16126 int UNUSED written = 0;
16127 IADDR UNUSED pc = abuf->addr;
16128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16129
16130frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16131
16132 return vpc;
16133#undef FLD
16134}
16135
16136/* dci: dci$pack @($GRi,$GRj) */
16137
16138static SEM_PC
16139SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16140{
16141#define FLD(f) abuf->fields.sfmt_icpl.f
16142 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16143 int UNUSED written = 0;
16144 IADDR UNUSED pc = abuf->addr;
16145 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16146
16147frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16148
16149 return vpc;
16150#undef FLD
16151}
16152
16153/* icei: icei$pack @($GRi,$GRj),$ae */
16154
16155static SEM_PC
16156SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16157{
16158#define FLD(f) abuf->fields.sfmt_icei.f
16159 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16160 int UNUSED written = 0;
16161 IADDR UNUSED pc = abuf->addr;
16162 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16163
16164if (EQSI (FLD (f_ae), 0)) {
16165frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16166} else {
16167frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16168}
16169
16170 return vpc;
16171#undef FLD
16172}
16173
16174/* dcei: dcei$pack @($GRi,$GRj),$ae */
16175
16176static SEM_PC
16177SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16178{
16179#define FLD(f) abuf->fields.sfmt_icei.f
16180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16181 int UNUSED written = 0;
16182 IADDR UNUSED pc = abuf->addr;
16183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16184
16185if (EQSI (FLD (f_ae), 0)) {
16186frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16187} else {
16188frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16189}
16190
16191 return vpc;
16192#undef FLD
16193}
16194
16195/* dcf: dcf$pack @($GRi,$GRj) */
16196
16197static SEM_PC
16198SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16199{
16200#define FLD(f) abuf->fields.sfmt_icpl.f
16201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16202 int UNUSED written = 0;
16203 IADDR UNUSED pc = abuf->addr;
16204 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16205
16206frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16207
16208 return vpc;
16209#undef FLD
16210}
16211
16212/* dcef: dcef$pack @($GRi,$GRj),$ae */
16213
16214static SEM_PC
16215SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16216{
16217#define FLD(f) abuf->fields.sfmt_icei.f
16218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16219 int UNUSED written = 0;
16220 IADDR UNUSED pc = abuf->addr;
16221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16222
16223if (EQSI (FLD (f_ae), 0)) {
16224frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16225} else {
16226frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16227}
16228
16229 return vpc;
16230#undef FLD
16231}
16232
16233/* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16234
16235static SEM_PC
16236SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16237{
2310652a 16238#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16240 int UNUSED written = 0;
16241 IADDR UNUSED pc = abuf->addr;
16242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16243
16244((void) 0); /*nop*/
16245
16246 return vpc;
16247#undef FLD
16248}
16249
16250/* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16251
16252static SEM_PC
16253SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16254{
2310652a 16255#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16256 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16257 int UNUSED written = 0;
16258 IADDR UNUSED pc = abuf->addr;
16259 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16260
16261((void) 0); /*nop*/
16262
16263 return vpc;
16264#undef FLD
16265}
16266
16267/* itlbi: itlbi$pack @($GRi,$GRj) */
16268
16269static SEM_PC
16270SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16271{
2310652a 16272#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16274 int UNUSED written = 0;
16275 IADDR UNUSED pc = abuf->addr;
16276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16277
16278((void) 0); /*nop*/
16279
16280 return vpc;
16281#undef FLD
16282}
16283
16284/* dtlbi: dtlbi$pack @($GRi,$GRj) */
16285
16286static SEM_PC
16287SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16288{
2310652a 16289#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16291 int UNUSED written = 0;
16292 IADDR UNUSED pc = abuf->addr;
16293 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16294
16295((void) 0); /*nop*/
16296
16297 return vpc;
16298#undef FLD
16299}
16300
16301/* icpl: icpl$pack $GRi,$GRj,$lock */
16302
16303static SEM_PC
16304SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16305{
16306#define FLD(f) abuf->fields.sfmt_icpl.f
16307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16308 int UNUSED written = 0;
16309 IADDR UNUSED pc = abuf->addr;
16310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16311
16312frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16313
16314 return vpc;
16315#undef FLD
16316}
16317
16318/* dcpl: dcpl$pack $GRi,$GRj,$lock */
16319
16320static SEM_PC
16321SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16322{
16323#define FLD(f) abuf->fields.sfmt_icpl.f
16324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16325 int UNUSED written = 0;
16326 IADDR UNUSED pc = abuf->addr;
16327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16328
16329frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16330
16331 return vpc;
16332#undef FLD
16333}
16334
16335/* icul: icul$pack $GRi */
16336
16337static SEM_PC
16338SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16339{
16340#define FLD(f) abuf->fields.sfmt_jmpil.f
16341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16342 int UNUSED written = 0;
16343 IADDR UNUSED pc = abuf->addr;
16344 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16345
16346frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16347
16348 return vpc;
16349#undef FLD
16350}
16351
16352/* dcul: dcul$pack $GRi */
16353
16354static SEM_PC
16355SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16356{
16357#define FLD(f) abuf->fields.sfmt_jmpil.f
16358 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16359 int UNUSED written = 0;
16360 IADDR UNUSED pc = abuf->addr;
16361 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16362
16363frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16364
16365 return vpc;
16366#undef FLD
16367}
16368
16369/* bar: bar$pack */
16370
16371static SEM_PC
16372SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16373{
2310652a 16374#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16376 int UNUSED written = 0;
16377 IADDR UNUSED pc = abuf->addr;
16378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16379
16380((void) 0); /*nop*/
16381
16382 return vpc;
16383#undef FLD
16384}
16385
16386/* membar: membar$pack */
16387
16388static SEM_PC
16389SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16390{
2310652a 16391#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16393 int UNUSED written = 0;
16394 IADDR UNUSED pc = abuf->addr;
16395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16396
16397((void) 0); /*nop*/
16398
16399 return vpc;
16400#undef FLD
16401}
16402
676a64f4
RS
16403/* lrai: lrai$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16404
16405static SEM_PC
16406SEM_FN_NAME (frvbf,lrai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16407{
2310652a 16408#define FLD(f) abuf->fields.sfmt_empty.f
676a64f4
RS
16409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16410 int UNUSED written = 0;
16411 IADDR UNUSED pc = abuf->addr;
16412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16413
16414((void) 0); /*nop*/
16415
16416 return vpc;
16417#undef FLD
16418}
16419
16420/* lrad: lrad$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16421
16422static SEM_PC
16423SEM_FN_NAME (frvbf,lrad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16424{
2310652a 16425#define FLD(f) abuf->fields.sfmt_empty.f
676a64f4
RS
16426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16427 int UNUSED written = 0;
16428 IADDR UNUSED pc = abuf->addr;
16429 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16430
16431((void) 0); /*nop*/
16432
16433 return vpc;
16434#undef FLD
16435}
16436
16437/* tlbpr: tlbpr$pack $GRi,$GRj,$TLBPRopx,$TLBPRL */
16438
16439static SEM_PC
16440SEM_FN_NAME (frvbf,tlbpr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16441{
2310652a 16442#define FLD(f) abuf->fields.sfmt_empty.f
676a64f4
RS
16443 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16444 int UNUSED written = 0;
16445 IADDR UNUSED pc = abuf->addr;
16446 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16447
16448((void) 0); /*nop*/
16449
16450 return vpc;
16451#undef FLD
16452}
16453
b34f6357
DB
16454/* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16455
16456static SEM_PC
16457SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16458{
2310652a 16459#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16460 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16461 int UNUSED written = 0;
16462 IADDR UNUSED pc = abuf->addr;
16463 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16464
16465((void) 0); /*nop*/
16466
16467 return vpc;
16468#undef FLD
16469}
16470
16471/* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16472
16473static SEM_PC
16474SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16475{
2310652a 16476#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16478 int UNUSED written = 0;
16479 IADDR UNUSED pc = abuf->addr;
16480 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16481
16482((void) 0); /*nop*/
16483
16484 return vpc;
16485#undef FLD
16486}
16487
16488/* clrgr: clrgr$pack $GRk */
16489
16490static SEM_PC
16491SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16492{
153431d6 16493#define FLD(f) abuf->fields.sfmt_swapi.f
b34f6357
DB
16494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16495 int UNUSED written = 0;
16496 IADDR UNUSED pc = abuf->addr;
16497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16498
153431d6
DB
16499{
16500frv_ref_SI (GET_H_GR (FLD (f_GRk)));
b34f6357 16501frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
153431d6 16502}
b34f6357
DB
16503
16504 return vpc;
16505#undef FLD
16506}
16507
16508/* clrfr: clrfr$pack $FRk */
16509
16510static SEM_PC
16511SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16512{
153431d6 16513#define FLD(f) abuf->fields.sfmt_cfmadds.f
b34f6357
DB
16514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16515 int UNUSED written = 0;
16516 IADDR UNUSED pc = abuf->addr;
16517 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16518
153431d6
DB
16519{
16520frv_ref_SI (GET_H_FR (FLD (f_FRk)));
b34f6357 16521frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
153431d6 16522}
b34f6357
DB
16523
16524 return vpc;
16525#undef FLD
16526}
16527
16528/* clrga: clrga$pack */
16529
16530static SEM_PC
16531SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16532{
2310652a 16533#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16535 int UNUSED written = 0;
16536 IADDR UNUSED pc = abuf->addr;
16537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16538
16539frvbf_clear_ne_flags (current_cpu, -1, 0);
16540
16541 return vpc;
16542#undef FLD
16543}
16544
16545/* clrfa: clrfa$pack */
16546
16547static SEM_PC
16548SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16549{
2310652a 16550#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16552 int UNUSED written = 0;
16553 IADDR UNUSED pc = abuf->addr;
16554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16555
16556frvbf_clear_ne_flags (current_cpu, -1, 1);
16557
16558 return vpc;
16559#undef FLD
16560}
16561
16562/* commitgr: commitgr$pack $GRk */
16563
16564static SEM_PC
16565SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16566{
16567#define FLD(f) abuf->fields.sfmt_setlos.f
16568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16569 int UNUSED written = 0;
16570 IADDR UNUSED pc = abuf->addr;
16571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16572
16573frvbf_commit (current_cpu, FLD (f_GRk), 0);
16574
16575 return vpc;
16576#undef FLD
16577}
16578
16579/* commitfr: commitfr$pack $FRk */
16580
16581static SEM_PC
16582SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16583{
16584#define FLD(f) abuf->fields.sfmt_mhsethis.f
16585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16586 int UNUSED written = 0;
16587 IADDR UNUSED pc = abuf->addr;
16588 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16589
16590frvbf_commit (current_cpu, FLD (f_FRk), 1);
16591
16592 return vpc;
16593#undef FLD
16594}
16595
16596/* commitga: commitga$pack */
16597
16598static SEM_PC
16599SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16600{
2310652a 16601#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16602 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16603 int UNUSED written = 0;
16604 IADDR UNUSED pc = abuf->addr;
16605 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16606
16607frvbf_commit (current_cpu, -1, 0);
16608
16609 return vpc;
16610#undef FLD
16611}
16612
16613/* commitfa: commitfa$pack */
16614
16615static SEM_PC
16616SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16617{
2310652a 16618#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16619 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16620 int UNUSED written = 0;
16621 IADDR UNUSED pc = abuf->addr;
16622 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16623
16624frvbf_commit (current_cpu, -1, 1);
16625
16626 return vpc;
16627#undef FLD
16628}
16629
16630/* fitos: fitos$pack $FRintj,$FRk */
16631
16632static SEM_PC
16633SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16634{
16635#define FLD(f) abuf->fields.sfmt_fditos.f
16636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16637 int UNUSED written = 0;
16638 IADDR UNUSED pc = abuf->addr;
16639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16640
16641 {
d2c7a1a6 16642 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16643 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16644 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16645 }
16646
16647 return vpc;
16648#undef FLD
16649}
16650
16651/* fstoi: fstoi$pack $FRj,$FRintk */
16652
16653static SEM_PC
16654SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16655{
16656#define FLD(f) abuf->fields.sfmt_fdstoi.f
16657 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16658 int UNUSED written = 0;
16659 IADDR UNUSED pc = abuf->addr;
16660 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16661
16662 {
d2c7a1a6 16663 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16664 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16665 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16666 }
16667
16668 return vpc;
16669#undef FLD
16670}
16671
16672/* fitod: fitod$pack $FRintj,$FRdoublek */
16673
16674static SEM_PC
16675SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16676{
16677#define FLD(f) abuf->fields.sfmt_fitod.f
16678 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16679 int UNUSED written = 0;
16680 IADDR UNUSED pc = abuf->addr;
16681 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16682
16683 {
d2c7a1a6 16684 DF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsidf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16685 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16686 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16687 }
16688
16689 return vpc;
16690#undef FLD
16691}
16692
16693/* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16694
16695static SEM_PC
16696SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16697{
16698#define FLD(f) abuf->fields.sfmt_fdtoi.f
16699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16700 int UNUSED written = 0;
16701 IADDR UNUSED pc = abuf->addr;
16702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16703
16704 {
d2c7a1a6 16705 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixdfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
16706 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16707 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16708 }
16709
16710 return vpc;
16711#undef FLD
16712}
16713
16714/* fditos: fditos$pack $FRintj,$FRk */
16715
16716static SEM_PC
16717SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16718{
16719#define FLD(f) abuf->fields.sfmt_fditos.f
16720 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16721 int UNUSED written = 0;
16722 IADDR UNUSED pc = abuf->addr;
16723 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16724
16725{
16726 {
d2c7a1a6 16727 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16728 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16729 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16730 }
16731 {
d2c7a1a6 16732 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (ADDSI (FLD (f_FRj), 1)));
b29791a8 16733 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16734 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16735 }
16736}
16737
16738 return vpc;
16739#undef FLD
16740}
16741
16742/* fdstoi: fdstoi$pack $FRj,$FRintk */
16743
16744static SEM_PC
16745SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16746{
16747#define FLD(f) abuf->fields.sfmt_fdstoi.f
16748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16749 int UNUSED written = 0;
16750 IADDR UNUSED pc = abuf->addr;
16751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16752
16753{
16754 {
d2c7a1a6 16755 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16756 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16757 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16758 }
16759 {
d2c7a1a6 16760 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
b29791a8 16761 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16762 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16763 }
16764}
16765
16766 return vpc;
16767#undef FLD
16768}
16769
16770/* nfditos: nfditos$pack $FRintj,$FRk */
16771
16772static SEM_PC
16773SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16774{
16775#define FLD(f) abuf->fields.sfmt_fditos.f
16776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16777 int UNUSED written = 0;
16778 IADDR UNUSED pc = abuf->addr;
16779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16780
16781{
16782frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16783 {
d2c7a1a6 16784 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16785 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16786 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16787 }
16788frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16789 {
d2c7a1a6 16790 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (ADDSI (FLD (f_FRj), 1)));
b29791a8 16791 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16792 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16793 }
16794}
16795
16796 return vpc;
16797#undef FLD
16798}
16799
16800/* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16801
16802static SEM_PC
16803SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16804{
16805#define FLD(f) abuf->fields.sfmt_fdstoi.f
16806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16807 int UNUSED written = 0;
16808 IADDR UNUSED pc = abuf->addr;
16809 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16810
16811{
16812frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16813 {
d2c7a1a6 16814 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16815 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16816 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16817 }
16818frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16819 {
d2c7a1a6 16820 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
b29791a8 16821 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16822 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16823 }
16824}
16825
16826 return vpc;
16827#undef FLD
16828}
16829
16830/* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16831
16832static SEM_PC
16833SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16834{
16835#define FLD(f) abuf->fields.sfmt_cfitos.f
16836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16837 int UNUSED written = 0;
16838 IADDR UNUSED pc = abuf->addr;
16839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16840
16841if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16842 {
d2c7a1a6 16843 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16844 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16845 written |= (1 << 3);
16846 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16847 }
16848}
16849
16850 abuf->written = written;
16851 return vpc;
16852#undef FLD
16853}
16854
16855/* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16856
16857static SEM_PC
16858SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16859{
16860#define FLD(f) abuf->fields.sfmt_cfstoi.f
16861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16862 int UNUSED written = 0;
16863 IADDR UNUSED pc = abuf->addr;
16864 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16865
16866if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16867 {
d2c7a1a6 16868 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16869 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16870 written |= (1 << 3);
16871 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16872 }
16873}
16874
16875 abuf->written = written;
16876 return vpc;
16877#undef FLD
16878}
16879
16880/* nfitos: nfitos$pack $FRintj,$FRk */
16881
16882static SEM_PC
16883SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16884{
16885#define FLD(f) abuf->fields.sfmt_fditos.f
16886 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16887 int UNUSED written = 0;
16888 IADDR UNUSED pc = abuf->addr;
16889 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16890
16891{
16892frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16893 {
d2c7a1a6 16894 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
16895 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16896 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16897 }
16898}
16899
16900 return vpc;
16901#undef FLD
16902}
16903
16904/* nfstoi: nfstoi$pack $FRj,$FRintk */
16905
16906static SEM_PC
16907SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16908{
16909#define FLD(f) abuf->fields.sfmt_fdstoi.f
16910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16911 int UNUSED written = 0;
16912 IADDR UNUSED pc = abuf->addr;
16913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16914
16915{
16916frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16917 {
d2c7a1a6 16918 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16919 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16920 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16921 }
16922}
16923
16924 return vpc;
16925#undef FLD
16926}
16927
16928/* fmovs: fmovs$pack $FRj,$FRk */
16929
16930static SEM_PC
16931SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16932{
16933#define FLD(f) abuf->fields.sfmt_cfmadds.f
16934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16935 int UNUSED written = 0;
16936 IADDR UNUSED pc = abuf->addr;
16937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16938
16939 {
16940 SF opval = GET_H_FR (FLD (f_FRj));
16941 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16942 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16943 }
16944
16945 return vpc;
16946#undef FLD
16947}
16948
16949/* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16950
16951static SEM_PC
16952SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16953{
16954#define FLD(f) abuf->fields.sfmt_fmaddd.f
16955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16956 int UNUSED written = 0;
16957 IADDR UNUSED pc = abuf->addr;
16958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16959
16960 {
16961 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16962 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16963 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16964 }
16965
16966 return vpc;
16967#undef FLD
16968}
16969
16970/* fdmovs: fdmovs$pack $FRj,$FRk */
16971
16972static SEM_PC
16973SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16974{
16975#define FLD(f) abuf->fields.sfmt_fdmadds.f
16976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16977 int UNUSED written = 0;
16978 IADDR UNUSED pc = abuf->addr;
16979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16980
16981{
16982 {
16983 SF opval = GET_H_FR (FLD (f_FRj));
16984 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16985 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16986 }
16987 {
b29791a8
DE
16988 SF opval = GET_H_FR (ADDSI (FLD (f_FRj), 1));
16989 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16990 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16991 }
16992}
16993
16994 return vpc;
16995#undef FLD
16996}
16997
16998/* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
16999
17000static SEM_PC
17001SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17002{
17003#define FLD(f) abuf->fields.sfmt_cfmadds.f
17004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17005 int UNUSED written = 0;
17006 IADDR UNUSED pc = abuf->addr;
17007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17008
17009if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17010 {
17011 SF opval = GET_H_FR (FLD (f_FRj));
17012 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17013 written |= (1 << 3);
17014 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17015 }
17016}
17017
17018 abuf->written = written;
17019 return vpc;
17020#undef FLD
17021}
17022
17023/* fnegs: fnegs$pack $FRj,$FRk */
17024
17025static SEM_PC
17026SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17027{
17028#define FLD(f) abuf->fields.sfmt_cfmadds.f
17029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17030 int UNUSED written = 0;
17031 IADDR UNUSED pc = abuf->addr;
17032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17033
17034 {
79e59fe6 17035 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17036 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17037 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17038 }
17039
17040 return vpc;
17041#undef FLD
17042}
17043
17044/* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17045
17046static SEM_PC
17047SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17048{
17049#define FLD(f) abuf->fields.sfmt_fmaddd.f
17050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17051 int UNUSED written = 0;
17052 IADDR UNUSED pc = abuf->addr;
17053 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17054
17055 {
79e59fe6 17056 DF opval = CGEN_CPU_FPU (current_cpu)->ops->negdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17057 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17058 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17059 }
17060
17061 return vpc;
17062#undef FLD
17063}
17064
17065/* fdnegs: fdnegs$pack $FRj,$FRk */
17066
17067static SEM_PC
17068SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17069{
17070#define FLD(f) abuf->fields.sfmt_fdmadds.f
17071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17072 int UNUSED written = 0;
17073 IADDR UNUSED pc = abuf->addr;
17074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17075
17076{
17077 {
79e59fe6 17078 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17079 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17080 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17081 }
17082 {
b29791a8
DE
17083 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17084 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
17085 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17086 }
17087}
17088
17089 return vpc;
17090#undef FLD
17091}
17092
17093/* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17094
17095static SEM_PC
17096SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17097{
17098#define FLD(f) abuf->fields.sfmt_cfmadds.f
17099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17100 int UNUSED written = 0;
17101 IADDR UNUSED pc = abuf->addr;
17102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17103
17104if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17105 {
79e59fe6 17106 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17107 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17108 written |= (1 << 3);
17109 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17110 }
17111}
17112
17113 abuf->written = written;
17114 return vpc;
17115#undef FLD
17116}
17117
17118/* fabss: fabss$pack $FRj,$FRk */
17119
17120static SEM_PC
17121SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17122{
17123#define FLD(f) abuf->fields.sfmt_cfmadds.f
17124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17125 int UNUSED written = 0;
17126 IADDR UNUSED pc = abuf->addr;
17127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17128
17129 {
79e59fe6 17130 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17131 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17132 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17133 }
17134
17135 return vpc;
17136#undef FLD
17137}
17138
17139/* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17140
17141static SEM_PC
17142SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17143{
17144#define FLD(f) abuf->fields.sfmt_fmaddd.f
17145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17146 int UNUSED written = 0;
17147 IADDR UNUSED pc = abuf->addr;
17148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17149
17150 {
79e59fe6 17151 DF opval = CGEN_CPU_FPU (current_cpu)->ops->absdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17152 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17153 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17154 }
17155
17156 return vpc;
17157#undef FLD
17158}
17159
17160/* fdabss: fdabss$pack $FRj,$FRk */
17161
17162static SEM_PC
17163SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17164{
17165#define FLD(f) abuf->fields.sfmt_fdmadds.f
17166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17167 int UNUSED written = 0;
17168 IADDR UNUSED pc = abuf->addr;
17169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17170
17171{
17172 {
79e59fe6 17173 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17174 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17175 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17176 }
17177 {
b29791a8
DE
17178 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17179 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
17180 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17181 }
17182}
17183
17184 return vpc;
17185#undef FLD
17186}
17187
17188/* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17189
17190static SEM_PC
17191SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17192{
17193#define FLD(f) abuf->fields.sfmt_cfmadds.f
17194 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17195 int UNUSED written = 0;
17196 IADDR UNUSED pc = abuf->addr;
17197 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17198
17199if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17200 {
79e59fe6 17201 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17202 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17203 written |= (1 << 3);
17204 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17205 }
17206}
17207
17208 abuf->written = written;
17209 return vpc;
17210#undef FLD
17211}
17212
17213/* fsqrts: fsqrts$pack $FRj,$FRk */
17214
17215static SEM_PC
17216SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17217{
17218#define FLD(f) abuf->fields.sfmt_cfmadds.f
17219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17220 int UNUSED written = 0;
17221 IADDR UNUSED pc = abuf->addr;
17222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17223
17224 {
79e59fe6 17225 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17226 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17227 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17228 }
17229
17230 return vpc;
17231#undef FLD
17232}
17233
17234/* fdsqrts: fdsqrts$pack $FRj,$FRk */
17235
17236static SEM_PC
17237SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17238{
17239#define FLD(f) abuf->fields.sfmt_fdmadds.f
17240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17241 int UNUSED written = 0;
17242 IADDR UNUSED pc = abuf->addr;
17243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17244
17245{
17246 {
79e59fe6 17247 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17248 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17249 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17250 }
17251 {
b29791a8
DE
17252 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17253 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
17254 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17255 }
17256}
17257
17258 return vpc;
17259#undef FLD
17260}
17261
17262/* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17263
17264static SEM_PC
17265SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17266{
17267#define FLD(f) abuf->fields.sfmt_fdmadds.f
17268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17269 int UNUSED written = 0;
17270 IADDR UNUSED pc = abuf->addr;
17271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17272
17273{
17274frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17275 {
79e59fe6 17276 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17277 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17278 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17279 }
17280frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17281 {
b29791a8
DE
17282 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17283 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
17284 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17285 }
17286}
17287
17288 return vpc;
17289#undef FLD
17290}
17291
17292/* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17293
17294static SEM_PC
17295SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17296{
17297#define FLD(f) abuf->fields.sfmt_fmaddd.f
17298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17299 int UNUSED written = 0;
17300 IADDR UNUSED pc = abuf->addr;
17301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17302
17303 {
79e59fe6 17304 DF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17305 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17306 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17307 }
17308
17309 return vpc;
17310#undef FLD
17311}
17312
17313/* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17314
17315static SEM_PC
17316SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17317{
17318#define FLD(f) abuf->fields.sfmt_cfmadds.f
17319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17320 int UNUSED written = 0;
17321 IADDR UNUSED pc = abuf->addr;
17322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17323
17324if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17325 {
79e59fe6 17326 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17327 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17328 written |= (1 << 3);
17329 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17330 }
17331}
17332
17333 abuf->written = written;
17334 return vpc;
17335#undef FLD
17336}
17337
17338/* nfsqrts: nfsqrts$pack $FRj,$FRk */
17339
17340static SEM_PC
17341SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17342{
17343#define FLD(f) abuf->fields.sfmt_cfmadds.f
17344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17345 int UNUSED written = 0;
17346 IADDR UNUSED pc = abuf->addr;
17347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17348
17349{
17350frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17351 {
79e59fe6 17352 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17353 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17354 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17355 }
17356}
17357
17358 return vpc;
17359#undef FLD
17360}
17361
17362/* fadds: fadds$pack $FRi,$FRj,$FRk */
17363
17364static SEM_PC
17365SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17366{
17367#define FLD(f) abuf->fields.sfmt_cfmadds.f
17368 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17369 int UNUSED written = 0;
17370 IADDR UNUSED pc = abuf->addr;
17371 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17372
17373 {
79e59fe6 17374 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
17375 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17376 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17377 }
17378
17379 return vpc;
17380#undef FLD
17381}
17382
17383/* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17384
17385static SEM_PC
17386SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17387{
17388#define FLD(f) abuf->fields.sfmt_cfmadds.f
17389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17390 int UNUSED written = 0;
17391 IADDR UNUSED pc = abuf->addr;
17392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17393
17394 {
79e59fe6 17395 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
17396 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17397 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17398 }
17399
17400 return vpc;
17401#undef FLD
17402}
17403
17404/* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17405
17406static SEM_PC
17407SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17408{
17409#define FLD(f) abuf->fields.sfmt_cfmadds.f
17410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17411 int UNUSED written = 0;
17412 IADDR UNUSED pc = abuf->addr;
17413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17414
17415 {
79e59fe6 17416 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
17417 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17418 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17419 }
17420
17421 return vpc;
17422#undef FLD
17423}
17424
17425/* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17426
17427static SEM_PC
17428SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17429{
17430#define FLD(f) abuf->fields.sfmt_cfmadds.f
17431 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17432 int UNUSED written = 0;
17433 IADDR UNUSED pc = abuf->addr;
17434 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17435
17436 {
79e59fe6 17437 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
17438 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17439 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17440 }
17441
17442 return vpc;
17443#undef FLD
17444}
17445
17446/* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17447
17448static SEM_PC
17449SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17450{
17451#define FLD(f) abuf->fields.sfmt_fmaddd.f
17452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17453 int UNUSED written = 0;
17454 IADDR UNUSED pc = abuf->addr;
17455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17456
17457 {
79e59fe6 17458 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
17459 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17460 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17461 }
17462
17463 return vpc;
17464#undef FLD
17465}
17466
17467/* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17468
17469static SEM_PC
17470SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17471{
17472#define FLD(f) abuf->fields.sfmt_fmaddd.f
17473 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17474 int UNUSED written = 0;
17475 IADDR UNUSED pc = abuf->addr;
17476 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17477
17478 {
79e59fe6 17479 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
17480 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17481 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17482 }
17483
17484 return vpc;
17485#undef FLD
17486}
17487
17488/* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17489
17490static SEM_PC
17491SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17492{
17493#define FLD(f) abuf->fields.sfmt_fmaddd.f
17494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17495 int UNUSED written = 0;
17496 IADDR UNUSED pc = abuf->addr;
17497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17498
17499 {
79e59fe6 17500 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
17501 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17502 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17503 }
17504
17505 return vpc;
17506#undef FLD
17507}
17508
17509/* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17510
17511static SEM_PC
17512SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17513{
17514#define FLD(f) abuf->fields.sfmt_fmaddd.f
17515 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17516 int UNUSED written = 0;
17517 IADDR UNUSED pc = abuf->addr;
17518 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17519
17520 {
79e59fe6 17521 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
17522 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17523 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17524 }
17525
17526 return vpc;
17527#undef FLD
17528}
17529
17530/* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17531
17532static SEM_PC
17533SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17534{
17535#define FLD(f) abuf->fields.sfmt_cfmadds.f
17536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17537 int UNUSED written = 0;
17538 IADDR UNUSED pc = abuf->addr;
17539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17540
17541if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17542 {
79e59fe6 17543 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
17544 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17545 written |= (1 << 4);
17546 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17547 }
17548}
17549
17550 abuf->written = written;
17551 return vpc;
17552#undef FLD
17553}
17554
17555/* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17556
17557static SEM_PC
17558SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17559{
17560#define FLD(f) abuf->fields.sfmt_cfmadds.f
17561 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17562 int UNUSED written = 0;
17563 IADDR UNUSED pc = abuf->addr;
17564 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17565
17566if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17567 {
79e59fe6 17568 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
17569 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17570 written |= (1 << 4);
17571 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17572 }
17573}
17574
17575 abuf->written = written;
17576 return vpc;
17577#undef FLD
17578}
17579
17580/* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17581
17582static SEM_PC
17583SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17584{
17585#define FLD(f) abuf->fields.sfmt_cfmadds.f
17586 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17587 int UNUSED written = 0;
17588 IADDR UNUSED pc = abuf->addr;
17589 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17590
17591if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17592 {
79e59fe6 17593 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
17594 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17595 written |= (1 << 4);
17596 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17597 }
17598}
17599
17600 abuf->written = written;
17601 return vpc;
17602#undef FLD
17603}
17604
17605/* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17606
17607static SEM_PC
17608SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17609{
17610#define FLD(f) abuf->fields.sfmt_cfmadds.f
17611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17612 int UNUSED written = 0;
17613 IADDR UNUSED pc = abuf->addr;
17614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17615
17616if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17617 {
79e59fe6 17618 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
17619 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17620 written |= (1 << 4);
17621 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17622 }
17623}
17624
17625 abuf->written = written;
17626 return vpc;
17627#undef FLD
17628}
17629
17630/* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17631
17632static SEM_PC
17633SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17634{
17635#define FLD(f) abuf->fields.sfmt_cfmadds.f
17636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17637 int UNUSED written = 0;
17638 IADDR UNUSED pc = abuf->addr;
17639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17640
17641{
17642frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17643 {
79e59fe6 17644 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
17645 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17646 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17647 }
17648}
17649
17650 return vpc;
17651#undef FLD
17652}
17653
17654/* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17655
17656static SEM_PC
17657SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17658{
17659#define FLD(f) abuf->fields.sfmt_cfmadds.f
17660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17661 int UNUSED written = 0;
17662 IADDR UNUSED pc = abuf->addr;
17663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17664
17665{
17666frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17667 {
79e59fe6 17668 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
17669 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17670 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17671 }
17672}
17673
17674 return vpc;
17675#undef FLD
17676}
17677
17678/* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17679
17680static SEM_PC
17681SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17682{
17683#define FLD(f) abuf->fields.sfmt_cfmadds.f
17684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17685 int UNUSED written = 0;
17686 IADDR UNUSED pc = abuf->addr;
17687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17688
17689{
17690frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17691 {
79e59fe6 17692 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
17693 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17694 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17695 }
17696}
17697
17698 return vpc;
17699#undef FLD
17700}
17701
17702/* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17703
17704static SEM_PC
17705SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17706{
17707#define FLD(f) abuf->fields.sfmt_cfmadds.f
17708 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17709 int UNUSED written = 0;
17710 IADDR UNUSED pc = abuf->addr;
17711 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17712
17713{
17714frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17715 {
79e59fe6 17716 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
17717 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17718 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17719 }
17720}
17721
17722 return vpc;
17723#undef FLD
17724}
17725
17726/* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17727
17728static SEM_PC
17729SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17730{
17731#define FLD(f) abuf->fields.sfmt_cfcmps.f
17732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17733 int UNUSED written = 0;
17734 IADDR UNUSED pc = abuf->addr;
17735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17736
79e59fe6 17737if (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
17738 {
17739 UQI opval = 2;
17740 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17741 written |= (1 << 2);
17742 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17743 }
17744} else {
79e59fe6 17745if (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
17746 {
17747 UQI opval = 8;
17748 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17749 written |= (1 << 2);
17750 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17751 }
17752} else {
79e59fe6 17753if (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
17754 {
17755 UQI opval = 4;
17756 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17757 written |= (1 << 2);
17758 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17759 }
17760} else {
17761 {
17762 UQI opval = 1;
17763 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17764 written |= (1 << 2);
17765 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17766 }
17767}
17768}
17769}
17770
17771 abuf->written = written;
17772 return vpc;
17773#undef FLD
17774}
17775
17776/* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17777
17778static SEM_PC
17779SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17780{
17781#define FLD(f) abuf->fields.sfmt_fcmpd.f
17782 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17783 int UNUSED written = 0;
17784 IADDR UNUSED pc = abuf->addr;
17785 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17786
79e59fe6 17787if (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
17788 {
17789 UQI opval = 2;
17790 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17791 written |= (1 << 2);
17792 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17793 }
17794} else {
79e59fe6 17795if (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
17796 {
17797 UQI opval = 8;
17798 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17799 written |= (1 << 2);
17800 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17801 }
17802} else {
79e59fe6 17803if (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
17804 {
17805 UQI opval = 4;
17806 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17807 written |= (1 << 2);
17808 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17809 }
17810} else {
17811 {
17812 UQI opval = 1;
17813 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17814 written |= (1 << 2);
17815 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17816 }
17817}
17818}
17819}
17820
17821 abuf->written = written;
17822 return vpc;
17823#undef FLD
17824}
17825
17826/* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17827
17828static SEM_PC
17829SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17830{
17831#define FLD(f) abuf->fields.sfmt_cfcmps.f
17832 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17833 int UNUSED written = 0;
17834 IADDR UNUSED pc = abuf->addr;
17835 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17836
17837if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
79e59fe6 17838if (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
17839 {
17840 UQI opval = 2;
17841 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17842 written |= (1 << 4);
17843 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17844 }
17845} else {
79e59fe6 17846if (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
17847 {
17848 UQI opval = 8;
17849 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17850 written |= (1 << 4);
17851 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17852 }
17853} else {
79e59fe6 17854if (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
17855 {
17856 UQI opval = 4;
17857 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17858 written |= (1 << 4);
17859 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17860 }
17861} else {
17862 {
17863 UQI opval = 1;
17864 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17865 written |= (1 << 4);
17866 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17867 }
17868}
17869}
17870}
17871}
17872
17873 abuf->written = written;
17874 return vpc;
17875#undef FLD
17876}
17877
17878/* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17879
17880static SEM_PC
17881SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17882{
17883#define FLD(f) abuf->fields.sfmt_nfdcmps.f
17884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17885 int UNUSED written = 0;
17886 IADDR UNUSED pc = abuf->addr;
17887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17888
17889{
79e59fe6 17890if (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
17891 {
17892 UQI opval = 2;
17893 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17894 written |= (1 << 7);
17895 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17896 }
17897} else {
79e59fe6 17898if (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
17899 {
17900 UQI opval = 8;
17901 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17902 written |= (1 << 7);
17903 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17904 }
17905} else {
79e59fe6 17906if (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
17907 {
17908 UQI opval = 4;
17909 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17910 written |= (1 << 7);
17911 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17912 }
17913} else {
17914 {
17915 UQI opval = 1;
17916 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17917 written |= (1 << 7);
17918 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17919 }
17920}
17921}
17922}
b29791a8 17923if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
17924 {
17925 UQI opval = 2;
b29791a8 17926 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17927 written |= (1 << 8);
17928 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17929 }
17930} else {
b29791a8 17931if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
17932 {
17933 UQI opval = 8;
b29791a8 17934 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17935 written |= (1 << 8);
17936 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17937 }
17938} else {
b29791a8 17939if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
17940 {
17941 UQI opval = 4;
b29791a8 17942 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17943 written |= (1 << 8);
17944 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17945 }
17946} else {
17947 {
17948 UQI opval = 1;
b29791a8 17949 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17950 written |= (1 << 8);
17951 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17952 }
17953}
17954}
17955}
17956}
17957
17958 abuf->written = written;
17959 return vpc;
17960#undef FLD
17961}
17962
17963/* fmadds: fmadds$pack $FRi,$FRj,$FRk */
17964
17965static SEM_PC
17966SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17967{
17968#define FLD(f) abuf->fields.sfmt_cfmadds.f
17969 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17970 int UNUSED written = 0;
17971 IADDR UNUSED pc = abuf->addr;
17972 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17973
17974 {
79e59fe6 17975 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
17976 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17977 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17978 }
17979
17980 return vpc;
17981#undef FLD
17982}
17983
17984/* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
17985
17986static SEM_PC
17987SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17988{
17989#define FLD(f) abuf->fields.sfmt_cfmadds.f
17990 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17991 int UNUSED written = 0;
17992 IADDR UNUSED pc = abuf->addr;
17993 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17994
17995 {
79e59fe6 17996 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
17997 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17998 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17999 }
18000
18001 return vpc;
18002#undef FLD
18003}
18004
18005/* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18006
18007static SEM_PC
18008SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18009{
18010#define FLD(f) abuf->fields.sfmt_fmaddd.f
18011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18012 int UNUSED written = 0;
18013 IADDR UNUSED pc = abuf->addr;
18014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18015
18016 {
79e59fe6 18017 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
18018 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18019 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18020 }
18021
18022 return vpc;
18023#undef FLD
18024}
18025
18026/* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18027
18028static SEM_PC
18029SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18030{
18031#define FLD(f) abuf->fields.sfmt_fmaddd.f
18032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18033 int UNUSED written = 0;
18034 IADDR UNUSED pc = abuf->addr;
18035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18036
18037 {
79e59fe6 18038 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
18039 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18040 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18041 }
18042
18043 return vpc;
18044#undef FLD
18045}
18046
18047/* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18048
18049static SEM_PC
18050SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18051{
18052#define FLD(f) abuf->fields.sfmt_fdmadds.f
18053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18054 int UNUSED written = 0;
18055 IADDR UNUSED pc = abuf->addr;
18056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18057
18058{
18059 {
79e59fe6 18060 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
18061 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18062 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18063 }
18064 {
b29791a8
DE
18065 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18066 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18067 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18068 }
18069}
18070
18071 return vpc;
18072#undef FLD
18073}
18074
18075/* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18076
18077static SEM_PC
18078SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18079{
18080#define FLD(f) abuf->fields.sfmt_fdmadds.f
18081 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18082 int UNUSED written = 0;
18083 IADDR UNUSED pc = abuf->addr;
18084 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18085
18086{
18087frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18088 {
79e59fe6 18089 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
18090 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18091 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18092 }
18093frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18094 {
b29791a8
DE
18095 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18096 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18097 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18098 }
18099}
18100
18101 return vpc;
18102#undef FLD
18103}
18104
18105/* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18106
18107static SEM_PC
18108SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18109{
18110#define FLD(f) abuf->fields.sfmt_cfmadds.f
18111 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18112 int UNUSED written = 0;
18113 IADDR UNUSED pc = abuf->addr;
18114 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18115
18116if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18117 {
79e59fe6 18118 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
18119 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18120 written |= (1 << 5);
18121 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18122 }
18123}
18124
18125 abuf->written = written;
18126 return vpc;
18127#undef FLD
18128}
18129
18130/* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18131
18132static SEM_PC
18133SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18134{
18135#define FLD(f) abuf->fields.sfmt_cfmadds.f
18136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18137 int UNUSED written = 0;
18138 IADDR UNUSED pc = abuf->addr;
18139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18140
18141if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18142 {
79e59fe6 18143 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
18144 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18145 written |= (1 << 5);
18146 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18147 }
18148}
18149
18150 abuf->written = written;
18151 return vpc;
18152#undef FLD
18153}
18154
18155/* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18156
18157static SEM_PC
18158SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18159{
18160#define FLD(f) abuf->fields.sfmt_cfmadds.f
18161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18162 int UNUSED written = 0;
18163 IADDR UNUSED pc = abuf->addr;
18164 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18165
18166{
18167frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18168 {
79e59fe6 18169 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
18170 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18171 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18172 }
18173}
18174
18175 return vpc;
18176#undef FLD
18177}
18178
18179/* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18180
18181static SEM_PC
18182SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18183{
18184#define FLD(f) abuf->fields.sfmt_cfmadds.f
18185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18186 int UNUSED written = 0;
18187 IADDR UNUSED pc = abuf->addr;
18188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18189
18190{
18191frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18192 {
79e59fe6 18193 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
18194 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18195 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18196 }
18197}
18198
18199 return vpc;
18200#undef FLD
18201}
18202
18203/* fmas: fmas$pack $FRi,$FRj,$FRk */
18204
18205static SEM_PC
18206SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18207{
18208#define FLD(f) abuf->fields.sfmt_fdmadds.f
18209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18210 int UNUSED written = 0;
18211 IADDR UNUSED pc = abuf->addr;
18212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18213
18214{
18215 {
79e59fe6 18216 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
18217 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18218 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18219 }
18220 {
b29791a8
DE
18221 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18222 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18223 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18224 }
18225}
18226
18227 return vpc;
18228#undef FLD
18229}
18230
18231/* fmss: fmss$pack $FRi,$FRj,$FRk */
18232
18233static SEM_PC
18234SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18235{
18236#define FLD(f) abuf->fields.sfmt_fdmadds.f
18237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18238 int UNUSED written = 0;
18239 IADDR UNUSED pc = abuf->addr;
18240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18241
18242{
18243 {
79e59fe6 18244 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
18245 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18246 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18247 }
18248 {
b29791a8
DE
18249 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18250 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18251 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18252 }
18253}
18254
18255 return vpc;
18256#undef FLD
18257}
18258
18259/* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18260
18261static SEM_PC
18262SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18263{
18264#define FLD(f) abuf->fields.sfmt_fdmas.f
18265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18266 int UNUSED written = 0;
18267 IADDR UNUSED pc = abuf->addr;
18268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18269
18270{
18271 {
79e59fe6 18272 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
18273 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18274 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18275 }
18276 {
b29791a8
DE
18277 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18278 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18279 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18280 }
18281 {
b29791a8
DE
18282 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18283 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18284 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18285 }
18286 {
b29791a8
DE
18287 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18288 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
18289 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18290 }
18291}
18292
18293 return vpc;
18294#undef FLD
18295}
18296
18297/* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18298
18299static SEM_PC
18300SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18301{
18302#define FLD(f) abuf->fields.sfmt_fdmas.f
18303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18304 int UNUSED written = 0;
18305 IADDR UNUSED pc = abuf->addr;
18306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18307
18308{
18309 {
79e59fe6 18310 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
18311 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18312 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18313 }
18314 {
b29791a8
DE
18315 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18316 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18317 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18318 }
18319 {
b29791a8
DE
18320 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18321 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18322 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18323 }
18324 {
b29791a8
DE
18325 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18326 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
18327 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18328 }
18329}
18330
18331 return vpc;
18332#undef FLD
18333}
18334
18335/* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18336
18337static SEM_PC
18338SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18339{
18340#define FLD(f) abuf->fields.sfmt_fdmas.f
18341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18342 int UNUSED written = 0;
18343 IADDR UNUSED pc = abuf->addr;
18344 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18345
18346{
18347frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18348frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18349frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18350frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18351 {
79e59fe6 18352 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
18353 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18354 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18355 }
18356 {
b29791a8
DE
18357 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18358 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18359 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18360 }
18361 {
b29791a8
DE
18362 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18363 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18364 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18365 }
18366 {
b29791a8
DE
18367 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18368 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
18369 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18370 }
18371}
18372
18373 return vpc;
18374#undef FLD
18375}
18376
18377/* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18378
18379static SEM_PC
18380SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18381{
18382#define FLD(f) abuf->fields.sfmt_fdmas.f
18383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18384 int UNUSED written = 0;
18385 IADDR UNUSED pc = abuf->addr;
18386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18387
18388{
18389frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18390frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18391frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18392frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18393 {
79e59fe6 18394 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
18395 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18396 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18397 }
18398 {
b29791a8
DE
18399 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18400 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18401 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18402 }
18403 {
b29791a8
DE
18404 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18405 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18406 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18407 }
18408 {
b29791a8
DE
18409 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18410 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
18411 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18412 }
18413}
18414
18415 return vpc;
18416#undef FLD
18417}
18418
18419/* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18420
18421static SEM_PC
18422SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18423{
18424#define FLD(f) abuf->fields.sfmt_cfmas.f
18425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18426 int UNUSED written = 0;
18427 IADDR UNUSED pc = abuf->addr;
18428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18429
18430if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18431{
18432 {
79e59fe6 18433 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
18434 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18435 written |= (1 << 9);
18436 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18437 }
18438 {
b29791a8
DE
18439 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18440 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18441 written |= (1 << 10);
18442 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18443 }
18444}
18445}
18446
18447 abuf->written = written;
18448 return vpc;
18449#undef FLD
18450}
18451
18452/* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18453
18454static SEM_PC
18455SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18456{
18457#define FLD(f) abuf->fields.sfmt_cfmas.f
18458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18459 int UNUSED written = 0;
18460 IADDR UNUSED pc = abuf->addr;
18461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18462
18463if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18464{
18465 {
79e59fe6 18466 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
18467 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18468 written |= (1 << 9);
18469 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18470 }
18471 {
b29791a8
DE
18472 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18473 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18474 written |= (1 << 10);
18475 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18476 }
18477}
18478}
18479
18480 abuf->written = written;
18481 return vpc;
18482#undef FLD
18483}
18484
18485/* fmad: fmad$pack $FRi,$FRj,$FRk */
18486
18487static SEM_PC
18488SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18489{
18490#define FLD(f) abuf->fields.sfmt_fdmadds.f
18491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18492 int UNUSED written = 0;
18493 IADDR UNUSED pc = abuf->addr;
18494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18495
18496{
18497 {
d2c7a1a6 18498 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)))));
b34f6357
DB
18499 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18500 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18501 }
18502 {
d2c7a1a6 18503 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRi), 1))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)))));
b29791a8 18504 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18505 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18506 }
18507}
18508
18509 return vpc;
18510#undef FLD
18511}
18512
18513/* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18514
18515static SEM_PC
18516SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18517{
18518#define FLD(f) abuf->fields.sfmt_fdmadds.f
18519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18520 int UNUSED written = 0;
18521 IADDR UNUSED pc = abuf->addr;
18522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18523
18524{
18525 {
d2c7a1a6 18526 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)))));
b34f6357
DB
18527 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18528 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18529 }
18530 {
d2c7a1a6 18531 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRi), 1))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)))));
b29791a8 18532 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18533 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18534 }
18535}
18536
18537 return vpc;
18538#undef FLD
18539}
18540
18541/* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18542
18543static SEM_PC
18544SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18545{
18546#define FLD(f) abuf->fields.sfmt_fdmadds.f
18547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18548 int UNUSED written = 0;
18549 IADDR UNUSED pc = abuf->addr;
18550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18551
18552{
18553frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18554 {
79e59fe6 18555 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
18556 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18557 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18558 }
18559frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18560 {
b29791a8
DE
18561 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18562 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18563 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18564 }
18565}
18566
18567 return vpc;
18568#undef FLD
18569}
18570
18571/* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18572
18573static SEM_PC
18574SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18575{
18576#define FLD(f) abuf->fields.sfmt_fdmadds.f
18577 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18578 int UNUSED written = 0;
18579 IADDR UNUSED pc = abuf->addr;
18580 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18581
18582{
18583frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18584 {
79e59fe6 18585 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
18586 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18587 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18588 }
18589frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18590 {
b29791a8
DE
18591 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18592 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18593 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18594 }
18595}
18596
18597 return vpc;
18598#undef FLD
18599}
18600
18601/* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18602
18603static SEM_PC
18604SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18605{
18606#define FLD(f) abuf->fields.sfmt_fdmadds.f
18607 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18608 int UNUSED written = 0;
18609 IADDR UNUSED pc = abuf->addr;
18610 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18611
18612{
18613 {
79e59fe6 18614 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
18615 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18616 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18617 }
18618 {
b29791a8
DE
18619 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18620 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18621 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18622 }
18623}
18624
18625 return vpc;
18626#undef FLD
18627}
18628
18629/* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18630
18631static SEM_PC
18632SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18633{
18634#define FLD(f) abuf->fields.sfmt_fdmadds.f
18635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18636 int UNUSED written = 0;
18637 IADDR UNUSED pc = abuf->addr;
18638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18639
18640{
18641 {
79e59fe6 18642 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
18643 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18644 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18645 }
18646 {
b29791a8
DE
18647 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18648 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18649 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18650 }
18651}
18652
18653 return vpc;
18654#undef FLD
18655}
18656
18657/* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18658
18659static SEM_PC
18660SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18661{
18662#define FLD(f) abuf->fields.sfmt_fdmadds.f
18663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18664 int UNUSED written = 0;
18665 IADDR UNUSED pc = abuf->addr;
18666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18667
18668{
18669 {
79e59fe6 18670 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
18671 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18672 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18673 }
18674 {
b29791a8
DE
18675 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18676 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18677 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18678 }
18679}
18680
18681 return vpc;
18682#undef FLD
18683}
18684
18685/* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18686
18687static SEM_PC
18688SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18689{
18690#define FLD(f) abuf->fields.sfmt_fdmadds.f
18691 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18692 int UNUSED written = 0;
18693 IADDR UNUSED pc = abuf->addr;
18694 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18695
18696{
18697 {
79e59fe6 18698 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
18699 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18700 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18701 }
18702 {
b29791a8
DE
18703 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18704 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18705 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18706 }
18707}
18708
18709 return vpc;
18710#undef FLD
18711}
18712
18713/* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18714
18715static SEM_PC
18716SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18717{
18718#define FLD(f) abuf->fields.sfmt_fdmadds.f
18719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18720 int UNUSED written = 0;
18721 IADDR UNUSED pc = abuf->addr;
18722 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18723
18724{
18725 {
79e59fe6 18726 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
18727 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18728 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18729 }
18730 {
b29791a8
DE
18731 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18732 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18733 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18734 }
18735}
18736
18737 return vpc;
18738#undef FLD
18739}
18740
18741/* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18742
18743static SEM_PC
18744SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18745{
18746#define FLD(f) abuf->fields.sfmt_fdmadds.f
18747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18748 int UNUSED written = 0;
18749 IADDR UNUSED pc = abuf->addr;
18750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18751
18752{
18753 {
b29791a8 18754 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
b34f6357
DB
18755 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18756 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18757 }
18758 {
b29791a8
DE
18759 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (FLD (f_FRj)));
18760 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18761 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18762 }
18763}
18764
18765 return vpc;
18766#undef FLD
18767}
18768
18769/* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18770
18771static SEM_PC
18772SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18773{
18774#define FLD(f) abuf->fields.sfmt_fdmadds.f
18775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18776 int UNUSED written = 0;
18777 IADDR UNUSED pc = abuf->addr;
18778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18779
18780{
18781frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18782 {
b29791a8 18783 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
b34f6357
DB
18784 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18785 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18786 }
18787frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18788 {
b29791a8
DE
18789 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (FLD (f_FRj)));
18790 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18791 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18792 }
18793}
18794
18795 return vpc;
18796#undef FLD
18797}
18798
18799/* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18800
18801static SEM_PC
18802SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18803{
18804#define FLD(f) abuf->fields.sfmt_fdmadds.f
18805 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18806 int UNUSED written = 0;
18807 IADDR UNUSED pc = abuf->addr;
18808 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18809
18810{
18811frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18812 {
79e59fe6 18813 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
18814 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18815 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18816 }
18817frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18818 {
b29791a8
DE
18819 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18820 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18821 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18822 }
18823}
18824
18825 return vpc;
18826#undef FLD
18827}
18828
18829/* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18830
18831static SEM_PC
18832SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18833{
18834#define FLD(f) abuf->fields.sfmt_fdmadds.f
18835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18836 int UNUSED written = 0;
18837 IADDR UNUSED pc = abuf->addr;
18838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18839
18840{
18841frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18842 {
79e59fe6 18843 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
18844 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18845 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18846 }
18847frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18848 {
b29791a8
DE
18849 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18850 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18851 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18852 }
18853}
18854
18855 return vpc;
18856#undef FLD
18857}
18858
18859/* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18860
18861static SEM_PC
18862SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18863{
18864#define FLD(f) abuf->fields.sfmt_fdmadds.f
18865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18866 int UNUSED written = 0;
18867 IADDR UNUSED pc = abuf->addr;
18868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18869
18870{
18871frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18872 {
79e59fe6 18873 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
18874 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18875 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18876 }
18877frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18878 {
b29791a8
DE
18879 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18880 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18881 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18882 }
18883}
18884
18885 return vpc;
18886#undef FLD
18887}
18888
18889/* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18890
18891static SEM_PC
18892SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18893{
18894#define FLD(f) abuf->fields.sfmt_fdmadds.f
18895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18896 int UNUSED written = 0;
18897 IADDR UNUSED pc = abuf->addr;
18898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18899
18900{
18901frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18902 {
79e59fe6 18903 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
18904 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18905 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18906 }
18907frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18908 {
b29791a8
DE
18909 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18910 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18911 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18912 }
18913}
18914
18915 return vpc;
18916#undef FLD
18917}
18918
18919/* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18920
18921static SEM_PC
18922SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18923{
18924#define FLD(f) abuf->fields.sfmt_fdmadds.f
18925 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18926 int UNUSED written = 0;
18927 IADDR UNUSED pc = abuf->addr;
18928 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18929
18930{
18931frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18932 {
79e59fe6 18933 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
18934 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18935 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18936 }
18937frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18938 {
b29791a8
DE
18939 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18940 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18941 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18942 }
18943}
18944
18945 return vpc;
18946#undef FLD
18947}
18948
18949/* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18950
18951static SEM_PC
18952SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18953{
18954#define FLD(f) abuf->fields.sfmt_nfdcmps.f
18955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18956 int UNUSED written = 0;
18957 IADDR UNUSED pc = abuf->addr;
18958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18959
18960{
18961frvbf_set_ne_index (current_cpu, FLD (f_FRk));
79e59fe6 18962if (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
18963 {
18964 UQI opval = 2;
18965 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18966 written |= (1 << 8);
18967 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18968 }
18969} else {
79e59fe6 18970if (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
18971 {
18972 UQI opval = 8;
18973 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18974 written |= (1 << 8);
18975 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18976 }
18977} else {
79e59fe6 18978if (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
18979 {
18980 UQI opval = 4;
18981 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18982 written |= (1 << 8);
18983 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18984 }
18985} else {
18986 {
18987 UQI opval = 1;
18988 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18989 written |= (1 << 8);
18990 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18991 }
18992}
18993}
18994}
18995frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
b29791a8 18996if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
18997 {
18998 UQI opval = 2;
b29791a8 18999 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19000 written |= (1 << 9);
19001 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19002 }
19003} else {
b29791a8 19004if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
19005 {
19006 UQI opval = 8;
b29791a8 19007 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19008 written |= (1 << 9);
19009 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19010 }
19011} else {
b29791a8 19012if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
b34f6357
DB
19013 {
19014 UQI opval = 4;
b29791a8 19015 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19016 written |= (1 << 9);
19017 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19018 }
19019} else {
19020 {
19021 UQI opval = 1;
b29791a8 19022 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19023 written |= (1 << 9);
19024 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19025 }
19026}
19027}
19028}
19029}
19030
19031 abuf->written = written;
19032 return vpc;
19033#undef FLD
19034}
19035
19036/* mhsetlos: mhsetlos$pack $u12,$FRklo */
19037
19038static SEM_PC
19039SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19040{
19041#define FLD(f) abuf->fields.sfmt_mhsetlos.f
19042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19043 int UNUSED written = 0;
19044 IADDR UNUSED pc = abuf->addr;
19045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19046
19047 {
19048 UHI opval = FLD (f_u12);
19049 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19050 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19051 }
19052
19053 return vpc;
19054#undef FLD
19055}
19056
19057/* mhsethis: mhsethis$pack $u12,$FRkhi */
19058
19059static SEM_PC
19060SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19061{
19062#define FLD(f) abuf->fields.sfmt_mhsethis.f
19063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19064 int UNUSED written = 0;
19065 IADDR UNUSED pc = abuf->addr;
19066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19067
19068 {
19069 UHI opval = FLD (f_u12);
19070 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19071 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19072 }
19073
19074 return vpc;
19075#undef FLD
19076}
19077
19078/* mhdsets: mhdsets$pack $u12,$FRintk */
19079
19080static SEM_PC
19081SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19082{
19083#define FLD(f) abuf->fields.sfmt_mhdsets.f
19084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19085 int UNUSED written = 0;
19086 IADDR UNUSED pc = abuf->addr;
19087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19088
19089{
19090 {
19091 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19092 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19093 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19094 }
19095 {
19096 UHI opval = FLD (f_u12);
b29791a8 19097 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19098 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19099 }
19100 {
19101 UHI opval = FLD (f_u12);
b29791a8 19102 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19103 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19104 }
19105}
19106
19107 return vpc;
19108#undef FLD
19109}
19110
19111/* mhsetloh: mhsetloh$pack $s5,$FRklo */
19112
19113static SEM_PC
19114SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19115{
19116#define FLD(f) abuf->fields.sfmt_mhsetloh.f
19117 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19118 int UNUSED written = 0;
19119 IADDR UNUSED pc = abuf->addr;
19120 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19121
19122{
19123 HI tmp_tmp;
19124 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19125 tmp_tmp = ANDHI (tmp_tmp, 2047);
19126 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19127 {
19128 UHI opval = tmp_tmp;
19129 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19130 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19131 }
19132}
19133
19134 return vpc;
19135#undef FLD
19136}
19137
19138/* mhsethih: mhsethih$pack $s5,$FRkhi */
19139
19140static SEM_PC
19141SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19142{
19143#define FLD(f) abuf->fields.sfmt_mhsethih.f
19144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19145 int UNUSED written = 0;
19146 IADDR UNUSED pc = abuf->addr;
19147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19148
19149{
19150 HI tmp_tmp;
19151 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19152 tmp_tmp = ANDHI (tmp_tmp, 2047);
19153 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19154 {
19155 UHI opval = tmp_tmp;
19156 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19157 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19158 }
19159}
19160
19161 return vpc;
19162#undef FLD
19163}
19164
19165/* mhdseth: mhdseth$pack $s5,$FRintk */
19166
19167static SEM_PC
19168SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19169{
19170#define FLD(f) abuf->fields.sfmt_mhdseth.f
19171 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19172 int UNUSED written = 0;
19173 IADDR UNUSED pc = abuf->addr;
19174 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19175
19176{
19177 {
19178 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19179 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19180 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19181 }
19182{
19183 HI tmp_tmp;
b29791a8 19184 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRk), 0));
b34f6357
DB
19185 tmp_tmp = ANDHI (tmp_tmp, 2047);
19186 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19187 {
19188 UHI opval = tmp_tmp;
b29791a8 19189 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19190 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19191 }
19192}
19193{
19194 HI tmp_tmp;
b29791a8 19195 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRk), 0));
b34f6357
DB
19196 tmp_tmp = ANDHI (tmp_tmp, 2047);
19197 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19198 {
19199 UHI opval = tmp_tmp;
b29791a8 19200 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19201 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19202 }
19203}
19204}
19205
19206 return vpc;
19207#undef FLD
19208}
19209
19210/* mand: mand$pack $FRinti,$FRintj,$FRintk */
19211
19212static SEM_PC
19213SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19214{
19215#define FLD(f) abuf->fields.sfmt_mwcut.f
19216 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19217 int UNUSED written = 0;
19218 IADDR UNUSED pc = abuf->addr;
19219 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19220
19221 {
19222 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19223 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19224 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19225 }
19226
19227 return vpc;
19228#undef FLD
19229}
19230
19231/* mor: mor$pack $FRinti,$FRintj,$FRintk */
19232
19233static SEM_PC
19234SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19235{
19236#define FLD(f) abuf->fields.sfmt_mwcut.f
19237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19238 int UNUSED written = 0;
19239 IADDR UNUSED pc = abuf->addr;
19240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19241
19242 {
19243 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19244 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19245 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19246 }
19247
19248 return vpc;
19249#undef FLD
19250}
19251
19252/* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19253
19254static SEM_PC
19255SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19256{
19257#define FLD(f) abuf->fields.sfmt_mwcut.f
19258 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19259 int UNUSED written = 0;
19260 IADDR UNUSED pc = abuf->addr;
19261 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19262
19263 {
19264 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19265 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19266 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19267 }
19268
19269 return vpc;
19270#undef FLD
19271}
19272
19273/* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19274
19275static SEM_PC
19276SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19277{
19278#define FLD(f) abuf->fields.sfmt_cmand.f
19279 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19280 int UNUSED written = 0;
19281 IADDR UNUSED pc = abuf->addr;
19282 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19283
19284if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19285 {
19286 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19287 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19288 written |= (1 << 4);
19289 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19290 }
19291}
19292
19293 abuf->written = written;
19294 return vpc;
19295#undef FLD
19296}
19297
19298/* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19299
19300static SEM_PC
19301SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19302{
19303#define FLD(f) abuf->fields.sfmt_cmand.f
19304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19305 int UNUSED written = 0;
19306 IADDR UNUSED pc = abuf->addr;
19307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19308
19309if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19310 {
19311 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19312 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19313 written |= (1 << 4);
19314 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19315 }
19316}
19317
19318 abuf->written = written;
19319 return vpc;
19320#undef FLD
19321}
19322
19323/* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19324
19325static SEM_PC
19326SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19327{
19328#define FLD(f) abuf->fields.sfmt_cmand.f
19329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19330 int UNUSED written = 0;
19331 IADDR UNUSED pc = abuf->addr;
19332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19333
19334if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19335 {
19336 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19337 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19338 written |= (1 << 4);
19339 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19340 }
19341}
19342
19343 abuf->written = written;
19344 return vpc;
19345#undef FLD
19346}
19347
19348/* mnot: mnot$pack $FRintj,$FRintk */
19349
19350static SEM_PC
19351SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19352{
19353#define FLD(f) abuf->fields.sfmt_mcut.f
19354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19355 int UNUSED written = 0;
19356 IADDR UNUSED pc = abuf->addr;
19357 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19358
19359 {
19360 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19361 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19362 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19363 }
19364
19365 return vpc;
19366#undef FLD
19367}
19368
19369/* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19370
19371static SEM_PC
19372SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19373{
19374#define FLD(f) abuf->fields.sfmt_cmand.f
19375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19376 int UNUSED written = 0;
19377 IADDR UNUSED pc = abuf->addr;
19378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19379
19380if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19381 {
19382 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19383 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19384 written |= (1 << 3);
19385 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19386 }
19387}
19388
19389 abuf->written = written;
19390 return vpc;
19391#undef FLD
19392}
19393
19394/* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19395
19396static SEM_PC
19397SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19398{
19399#define FLD(f) abuf->fields.sfmt_mwcuti.f
19400 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19401 int UNUSED written = 0;
19402 IADDR UNUSED pc = abuf->addr;
19403 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19404
19405 {
19406 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19407 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19408 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19409 }
19410
19411 return vpc;
19412#undef FLD
19413}
19414
19415/* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19416
19417static SEM_PC
19418SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19419{
19420#define FLD(f) abuf->fields.sfmt_mwcuti.f
19421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19422 int UNUSED written = 0;
19423 IADDR UNUSED pc = abuf->addr;
19424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19425
19426 {
19427 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19428 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19429 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19430 }
19431
19432 return vpc;
19433#undef FLD
19434}
19435
19436/* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19437
19438static SEM_PC
19439SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19440{
19441#define FLD(f) abuf->fields.sfmt_mwcut.f
19442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19443 int UNUSED written = 0;
19444 IADDR UNUSED pc = abuf->addr;
19445 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19446
19447 {
b29791a8 19448 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), GET_H_FR_INT (FLD (f_FRj)));
b34f6357
DB
19449 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19450 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19451 }
19452
19453 return vpc;
19454#undef FLD
19455}
19456
19457/* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19458
19459static SEM_PC
19460SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19461{
19462#define FLD(f) abuf->fields.sfmt_mwcuti.f
19463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19464 int UNUSED written = 0;
19465 IADDR UNUSED pc = abuf->addr;
19466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19467
19468 {
b29791a8 19469 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), FLD (f_u6));
b34f6357
DB
19470 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19471 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19472 }
19473
19474 return vpc;
19475#undef FLD
19476}
19477
19478/* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19479
19480static SEM_PC
19481SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19482{
19483#define FLD(f) abuf->fields.sfmt_mcut.f
19484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19485 int UNUSED written = 0;
19486 IADDR UNUSED pc = abuf->addr;
19487 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19488
19489 {
19490 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19491 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19492 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19493 }
19494
19495 return vpc;
19496#undef FLD
19497}
19498
19499/* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19500
19501static SEM_PC
19502SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19503{
19504#define FLD(f) abuf->fields.sfmt_mcuti.f
19505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19506 int UNUSED written = 0;
19507 IADDR UNUSED pc = abuf->addr;
19508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19509
19510 {
19511 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19512 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19513 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19514 }
19515
19516 return vpc;
19517#undef FLD
19518}
19519
19520/* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19521
19522static SEM_PC
19523SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19524{
19525#define FLD(f) abuf->fields.sfmt_mcut.f
19526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19527 int UNUSED written = 0;
19528 IADDR UNUSED pc = abuf->addr;
19529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19530
19531 {
19532 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19533 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19534 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19535 }
19536
19537 return vpc;
19538#undef FLD
19539}
19540
19541/* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19542
19543static SEM_PC
19544SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19545{
19546#define FLD(f) abuf->fields.sfmt_mcuti.f
19547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19548 int UNUSED written = 0;
19549 IADDR UNUSED pc = abuf->addr;
19550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19551
19552 {
19553 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19554 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19555 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19556 }
19557
19558 return vpc;
19559#undef FLD
19560}
19561
19562/* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19563
19564static SEM_PC
19565SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19566{
19567#define FLD(f) abuf->fields.sfmt_mdcutssi.f
19568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19569 int UNUSED written = 0;
19570 IADDR UNUSED pc = abuf->addr;
19571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19572
19573if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19574frvbf_media_acc_not_aligned (current_cpu);
19575} else {
19576if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19577frvbf_media_register_not_aligned (current_cpu);
19578} else {
19579{
19580 {
19581 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19582 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19583 written |= (1 << 5);
19584 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19585 }
19586 {
b29791a8
DE
19587 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)), FLD (f_s6));
19588 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
19589 written |= (1 << 6);
19590 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19591 }
19592}
19593}
19594}
19595
19596 abuf->written = written;
19597 return vpc;
19598#undef FLD
19599}
19600
19601/* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19602
19603static SEM_PC
19604SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19605{
19606#define FLD(f) abuf->fields.sfmt_mwcut.f
19607 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19608 int UNUSED written = 0;
19609 IADDR UNUSED pc = abuf->addr;
19610 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19611
19612 {
19613 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19614 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19615 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19616 }
19617
19618 return vpc;
19619#undef FLD
19620}
19621
19622/* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19623
19624static SEM_PC
19625SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19626{
19627#define FLD(f) abuf->fields.sfmt_msllhi.f
19628 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19629 int UNUSED written = 0;
19630 IADDR UNUSED pc = abuf->addr;
19631 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19632
19633{
19634 {
19635 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19636 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19637 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19638 }
19639 {
19640 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19641 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19642 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19643 }
19644 {
b29791a8
DE
19645 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19646 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19647 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19648 }
19649 {
b29791a8
DE
19650 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19651 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19652 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19653 }
19654}
19655
19656 return vpc;
19657#undef FLD
19658}
19659
19660/* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19661
19662static SEM_PC
19663SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19664{
19665#define FLD(f) abuf->fields.sfmt_msllhi.f
19666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19667 int UNUSED written = 0;
19668 IADDR UNUSED pc = abuf->addr;
19669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19670
19671{
19672 {
19673 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19674 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19675 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19676 }
19677 {
19678 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19679 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19680 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19681 }
19682 {
b29791a8
DE
19683 UHI opval = SRLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19684 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19685 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19686 }
19687 {
b29791a8
DE
19688 UHI opval = SRLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19689 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19690 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19691 }
19692}
19693
19694 return vpc;
19695#undef FLD
19696}
19697
19698/* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19699
19700static SEM_PC
19701SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19702{
19703#define FLD(f) abuf->fields.sfmt_msllhi.f
19704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19705 int UNUSED written = 0;
19706 IADDR UNUSED pc = abuf->addr;
19707 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19708
19709{
19710 {
19711 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19712 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19713 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19714 }
19715 {
19716 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19717 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19718 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19719 }
19720 {
b29791a8
DE
19721 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19722 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19723 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19724 }
19725 {
b29791a8
DE
19726 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19727 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19728 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19729 }
19730}
19731
19732 return vpc;
19733#undef FLD
19734}
19735
19736/* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19737
19738static SEM_PC
19739SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19740{
19741#define FLD(f) abuf->fields.sfmt_mdrotli.f
19742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19743 int UNUSED written = 0;
19744 IADDR UNUSED pc = abuf->addr;
19745 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19746
19747if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19748frvbf_media_register_not_aligned (current_cpu);
19749} else {
19750{
19751 {
19752 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19753 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19754 written |= (1 << 5);
19755 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19756 }
19757 {
b29791a8
DE
19758 USI opval = ROLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_s6), 31));
19759 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
19760 written |= (1 << 6);
19761 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19762 }
19763}
19764}
19765
19766 abuf->written = written;
19767 return vpc;
19768#undef FLD
19769}
19770
19771/* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19772
19773static SEM_PC
19774SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19775{
19776#define FLD(f) abuf->fields.sfmt_mcplhi.f
19777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19778 int UNUSED written = 0;
19779 IADDR UNUSED pc = abuf->addr;
19780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19781
19782{
19783 HI tmp_arg1;
19784 HI tmp_arg2;
19785 HI tmp_shift;
19786 {
19787 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19788 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19789 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19790 }
19791 {
19792 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19793 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19794 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19795 }
19796 tmp_shift = ANDSI (FLD (f_u6), 15);
b29791a8 19797 tmp_arg1 = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), tmp_shift);
b34f6357
DB
19798if (NEHI (tmp_shift, 0)) {
19799{
b29791a8 19800 tmp_arg2 = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
b34f6357
DB
19801 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19802 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19803}
19804}
19805 {
19806 UHI opval = tmp_arg1;
b29791a8 19807 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19808 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19809 }
19810}
19811
19812 return vpc;
19813#undef FLD
19814}
19815
19816/* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19817
19818static SEM_PC
19819SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19820{
19821#define FLD(f) abuf->fields.sfmt_mwcuti.f
19822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19823 int UNUSED written = 0;
19824 IADDR UNUSED pc = abuf->addr;
19825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19826
19827{
19828 SI tmp_tmp;
19829 SI tmp_shift;
19830 tmp_shift = ANDSI (FLD (f_u6), 31);
19831 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19832if (NESI (tmp_shift, 0)) {
19833{
19834 SI tmp_tmp1;
b29791a8 19835 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
b34f6357
DB
19836 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19837}
19838}
19839 {
19840 SI opval = tmp_tmp;
19841 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19842 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19843 }
19844}
19845
19846 return vpc;
19847#undef FLD
19848}
19849
19850/* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19851
19852static SEM_PC
19853SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19854{
19855#define FLD(f) abuf->fields.sfmt_cmaddhss.f
19856 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19857 int UNUSED written = 0;
19858 IADDR UNUSED pc = abuf->addr;
19859 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19860
19861{
19862 HI tmp_argihi;
19863 HI tmp_argilo;
19864 HI tmp_argjhi;
19865 HI tmp_argjlo;
19866{
b29791a8
DE
19867 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19868 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19869 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19870 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
19871}
19872if (GTHI (tmp_argihi, tmp_argjhi)) {
19873 {
19874 UHI opval = tmp_argjhi;
b29791a8 19875 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19876 written |= (1 << 9);
19877 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19878 }
19879} else {
19880if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19881 {
19882 UHI opval = INVHI (tmp_argjhi);
b29791a8 19883 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19884 written |= (1 << 9);
19885 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19886 }
19887} else {
19888 {
19889 UHI opval = tmp_argihi;
b29791a8 19890 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19891 written |= (1 << 9);
19892 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19893 }
19894}
19895}
19896if (GTHI (tmp_argilo, tmp_argjlo)) {
19897 {
19898 UHI opval = tmp_argjlo;
b29791a8 19899 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19900 written |= (1 << 10);
19901 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19902 }
19903} else {
19904if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19905 {
19906 UHI opval = INVHI (tmp_argjlo);
b29791a8 19907 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19908 written |= (1 << 10);
19909 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19910 }
19911} else {
19912 {
19913 UHI opval = tmp_argilo;
b29791a8 19914 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19915 written |= (1 << 10);
19916 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19917 }
19918}
19919}
19920}
19921
19922 abuf->written = written;
19923 return vpc;
19924#undef FLD
19925}
19926
19927/* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19928
19929static SEM_PC
19930SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19931{
19932#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19934 int UNUSED written = 0;
19935 IADDR UNUSED pc = abuf->addr;
19936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19937
19938if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19939frvbf_media_register_not_aligned (current_cpu);
19940} else {
19941{
19942 HI tmp_argihi;
19943 HI tmp_argilo;
19944 HI tmp_argjhi;
19945 HI tmp_argjlo;
19946 {
19947 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19948 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19949 written |= (1 << 14);
19950 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19951 }
19952{
b29791a8
DE
19953 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19954 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19955 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19956 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
19957}
19958if (GTHI (tmp_argihi, tmp_argjhi)) {
19959 {
19960 UHI opval = tmp_argjhi;
b29791a8 19961 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19962 written |= (1 << 15);
19963 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19964 }
19965} else {
19966if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19967 {
19968 UHI opval = INVHI (tmp_argjhi);
b29791a8 19969 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19970 written |= (1 << 15);
19971 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19972 }
19973} else {
19974 {
19975 UHI opval = tmp_argihi;
b29791a8 19976 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19977 written |= (1 << 15);
19978 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19979 }
19980}
19981}
19982if (GTHI (tmp_argilo, tmp_argjlo)) {
19983 {
19984 UHI opval = tmp_argjlo;
b29791a8 19985 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19986 written |= (1 << 17);
19987 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19988 }
19989} else {
19990if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19991 {
19992 UHI opval = INVHI (tmp_argjlo);
b29791a8 19993 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19994 written |= (1 << 17);
19995 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19996 }
19997} else {
19998 {
19999 UHI opval = tmp_argilo;
b29791a8 20000 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20001 written |= (1 << 17);
20002 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20003 }
20004}
20005}
20006{
b29791a8
DE
20007 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20008 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20009 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20010 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20011}
20012if (GTHI (tmp_argihi, tmp_argjhi)) {
20013 {
20014 UHI opval = tmp_argjhi;
b29791a8 20015 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20016 written |= (1 << 16);
20017 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20018 }
20019} else {
20020if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20021 {
20022 UHI opval = INVHI (tmp_argjhi);
b29791a8 20023 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20024 written |= (1 << 16);
20025 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20026 }
20027} else {
20028 {
20029 UHI opval = tmp_argihi;
b29791a8 20030 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20031 written |= (1 << 16);
20032 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20033 }
20034}
20035}
20036if (GTHI (tmp_argilo, tmp_argjlo)) {
20037 {
20038 UHI opval = tmp_argjlo;
b29791a8 20039 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20040 written |= (1 << 18);
20041 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20042 }
20043} else {
20044if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20045 {
20046 UHI opval = INVHI (tmp_argjlo);
b29791a8 20047 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20048 written |= (1 << 18);
20049 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20050 }
20051} else {
20052 {
20053 UHI opval = tmp_argilo;
b29791a8 20054 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20055 written |= (1 << 18);
20056 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20057 }
20058}
20059}
20060}
20061}
20062
20063 abuf->written = written;
20064 return vpc;
20065#undef FLD
20066}
20067
20068/* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20069
20070static SEM_PC
20071SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20072{
20073#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20075 int UNUSED written = 0;
20076 IADDR UNUSED pc = abuf->addr;
20077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20078
20079{
20080 UHI tmp_argihi;
20081 UHI tmp_argilo;
20082 UHI tmp_argjhi;
20083 UHI tmp_argjlo;
20084{
b29791a8
DE
20085 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20086 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20087 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20088 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20089}
20090if (GTUHI (tmp_argihi, tmp_argjhi)) {
20091 {
20092 UHI opval = tmp_argjhi;
b29791a8 20093 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20094 written |= (1 << 9);
20095 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20096 }
20097} else {
20098 {
20099 UHI opval = tmp_argihi;
b29791a8 20100 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20101 written |= (1 << 9);
20102 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20103 }
20104}
20105if (GTUHI (tmp_argilo, tmp_argjlo)) {
20106 {
20107 UHI opval = tmp_argjlo;
b29791a8 20108 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20109 written |= (1 << 10);
20110 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20111 }
20112} else {
20113 {
20114 UHI opval = tmp_argilo;
b29791a8 20115 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20116 written |= (1 << 10);
20117 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20118 }
20119}
20120}
20121
20122 abuf->written = written;
20123 return vpc;
20124#undef FLD
20125}
20126
20127/* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20128
20129static SEM_PC
20130SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20131{
20132#define FLD(f) abuf->fields.sfmt_mcmpsh.f
20133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20134 int UNUSED written = 0;
20135 IADDR UNUSED pc = abuf->addr;
20136 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20137
20138if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20139frvbf_media_cr_not_aligned (current_cpu);
20140} else {
20141{
20142 HI tmp_argihi;
20143 HI tmp_argilo;
20144 HI tmp_argjhi;
20145 HI tmp_argjlo;
20146{
b29791a8
DE
20147 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20148 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20149 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20150 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20151}
20152if (GTHI (tmp_argihi, tmp_argjhi)) {
20153 {
20154 UQI opval = 2;
20155 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20156 written |= (1 << 9);
20157 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20158 }
20159} else {
20160if (EQHI (tmp_argihi, tmp_argjhi)) {
20161 {
20162 UQI opval = 8;
20163 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20164 written |= (1 << 9);
20165 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20166 }
20167} else {
20168if (LTHI (tmp_argihi, tmp_argjhi)) {
20169 {
20170 UQI opval = 4;
20171 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20172 written |= (1 << 9);
20173 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20174 }
20175} else {
20176 {
20177 UQI opval = 1;
20178 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20179 written |= (1 << 9);
20180 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20181 }
20182}
20183}
20184}
20185if (GTHI (tmp_argilo, tmp_argjlo)) {
20186 {
20187 UQI opval = 2;
b29791a8 20188 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20189 written |= (1 << 10);
20190 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20191 }
20192} else {
20193if (EQHI (tmp_argilo, tmp_argjlo)) {
20194 {
20195 UQI opval = 8;
b29791a8 20196 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20197 written |= (1 << 10);
20198 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20199 }
20200} else {
20201if (LTHI (tmp_argilo, tmp_argjlo)) {
20202 {
20203 UQI opval = 4;
b29791a8 20204 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20205 written |= (1 << 10);
20206 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20207 }
20208} else {
20209 {
20210 UQI opval = 1;
b29791a8 20211 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20212 written |= (1 << 10);
20213 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20214 }
20215}
20216}
20217}
20218}
20219}
20220
20221 abuf->written = written;
20222 return vpc;
20223#undef FLD
20224}
20225
20226/* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20227
20228static SEM_PC
20229SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20230{
20231#define FLD(f) abuf->fields.sfmt_mcmpsh.f
20232 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20233 int UNUSED written = 0;
20234 IADDR UNUSED pc = abuf->addr;
20235 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20236
20237if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20238frvbf_media_cr_not_aligned (current_cpu);
20239} else {
20240{
20241 UHI tmp_argihi;
20242 UHI tmp_argilo;
20243 UHI tmp_argjhi;
20244 UHI tmp_argjlo;
20245{
b29791a8
DE
20246 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20247 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20248 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20249 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20250}
20251if (GTUHI (tmp_argihi, tmp_argjhi)) {
20252 {
20253 UQI opval = 2;
20254 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20255 written |= (1 << 9);
20256 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20257 }
20258} else {
20259if (EQHI (tmp_argihi, tmp_argjhi)) {
20260 {
20261 UQI opval = 8;
20262 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20263 written |= (1 << 9);
20264 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20265 }
20266} else {
20267if (LTUHI (tmp_argihi, tmp_argjhi)) {
20268 {
20269 UQI opval = 4;
20270 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20271 written |= (1 << 9);
20272 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20273 }
20274} else {
20275 {
20276 UQI opval = 1;
20277 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20278 written |= (1 << 9);
20279 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20280 }
20281}
20282}
20283}
20284if (GTUHI (tmp_argilo, tmp_argjlo)) {
20285 {
20286 UQI opval = 2;
b29791a8 20287 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20288 written |= (1 << 10);
20289 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20290 }
20291} else {
20292if (EQHI (tmp_argilo, tmp_argjlo)) {
20293 {
20294 UQI opval = 8;
b29791a8 20295 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20296 written |= (1 << 10);
20297 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20298 }
20299} else {
20300if (LTUHI (tmp_argilo, tmp_argjlo)) {
20301 {
20302 UQI opval = 4;
b29791a8 20303 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20304 written |= (1 << 10);
20305 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20306 }
20307} else {
20308 {
20309 UQI opval = 1;
b29791a8 20310 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20311 written |= (1 << 10);
20312 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20313 }
20314}
20315}
20316}
20317}
20318}
20319
20320 abuf->written = written;
20321 return vpc;
20322#undef FLD
20323}
20324
20325/* mabshs: mabshs$pack $FRintj,$FRintk */
20326
20327static SEM_PC
20328SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20329{
20330#define FLD(f) abuf->fields.sfmt_mabshs.f
20331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20332 int UNUSED written = 0;
20333 IADDR UNUSED pc = abuf->addr;
20334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20335
20336{
20337 HI tmp_arghi;
20338 HI tmp_arglo;
20339 {
20340 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20341 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20342 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20343 }
20344 {
20345 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20346 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20347 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20348 }
b29791a8
DE
20349 tmp_arghi = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
20350 tmp_arglo = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
7b1a2840 20351if (GTDI (ABSDI (EXTHIDI (tmp_arghi)), 32767)) {
b34f6357
DB
20352{
20353 {
20354 UHI opval = 32767;
b29791a8 20355 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20356 written |= (1 << 8);
20357 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20358 }
20359frvbf_media_overflow (current_cpu, 8);
20360}
20361} else {
7b1a2840 20362if (LTDI (ABSDI (EXTHIDI (tmp_arghi)), -32768)) {
b34f6357
DB
20363{
20364 {
20365 UHI opval = -32768;
b29791a8 20366 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20367 written |= (1 << 8);
20368 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20369 }
20370frvbf_media_overflow (current_cpu, 8);
20371}
20372} else {
20373 {
7b1a2840 20374 UHI opval = ABSDI (EXTHIDI (tmp_arghi));
b29791a8 20375 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20376 written |= (1 << 8);
20377 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20378 }
20379}
20380}
7b1a2840 20381if (GTDI (ABSDI (EXTHIDI (tmp_arglo)), 32767)) {
b34f6357
DB
20382{
20383 {
20384 UHI opval = 32767;
b29791a8 20385 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20386 written |= (1 << 9);
20387 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20388 }
20389frvbf_media_overflow (current_cpu, 4);
20390}
20391} else {
7b1a2840 20392if (LTDI (ABSDI (EXTHIDI (tmp_arglo)), -32768)) {
b34f6357
DB
20393{
20394 {
20395 UHI opval = -32768;
b29791a8 20396 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20397 written |= (1 << 9);
20398 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20399 }
20400frvbf_media_overflow (current_cpu, 4);
20401}
20402} else {
20403 {
7b1a2840 20404 UHI opval = ABSDI (EXTHIDI (tmp_arglo));
b29791a8 20405 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20406 written |= (1 << 9);
20407 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20408 }
20409}
20410}
20411}
20412
20413 abuf->written = written;
20414 return vpc;
20415#undef FLD
20416}
20417
20418/* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20419
20420static SEM_PC
20421SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20422{
20423#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20425 int UNUSED written = 0;
20426 IADDR UNUSED pc = abuf->addr;
20427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20428
20429{
20430 HI tmp_argihi;
20431 HI tmp_argilo;
20432 HI tmp_argjhi;
20433 HI tmp_argjlo;
20434{
b29791a8
DE
20435 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20436 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20437 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20438 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20439}
20440{
20441 DI tmp_tmp;
7b1a2840 20442 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20443if (GTDI (tmp_tmp, 32767)) {
20444{
20445 {
20446 UHI opval = 32767;
b29791a8 20447 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20448 written |= (1 << 9);
20449 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20450 }
20451frvbf_media_overflow (current_cpu, 8);
20452}
20453} else {
20454if (LTDI (tmp_tmp, -32768)) {
20455{
20456 {
20457 UHI opval = -32768;
b29791a8 20458 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20459 written |= (1 << 9);
20460 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20461 }
20462frvbf_media_overflow (current_cpu, 8);
20463}
20464} else {
20465 {
20466 UHI opval = tmp_tmp;
b29791a8 20467 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20468 written |= (1 << 9);
20469 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20470 }
20471}
20472}
20473}
20474{
20475 DI tmp_tmp;
7b1a2840 20476 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20477if (GTDI (tmp_tmp, 32767)) {
20478{
20479 {
20480 UHI opval = 32767;
b29791a8 20481 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20482 written |= (1 << 10);
20483 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20484 }
20485frvbf_media_overflow (current_cpu, 4);
20486}
20487} else {
20488if (LTDI (tmp_tmp, -32768)) {
20489{
20490 {
20491 UHI opval = -32768;
b29791a8 20492 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20493 written |= (1 << 10);
20494 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20495 }
20496frvbf_media_overflow (current_cpu, 4);
20497}
20498} else {
20499 {
20500 UHI opval = tmp_tmp;
b29791a8 20501 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20502 written |= (1 << 10);
20503 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20504 }
20505}
20506}
20507}
20508}
20509
20510 abuf->written = written;
20511 return vpc;
20512#undef FLD
20513}
20514
20515/* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20516
20517static SEM_PC
20518SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20519{
20520#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20522 int UNUSED written = 0;
20523 IADDR UNUSED pc = abuf->addr;
20524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20525
20526{
20527 UHI tmp_argihi;
20528 UHI tmp_argilo;
20529 UHI tmp_argjhi;
20530 UHI tmp_argjlo;
20531{
b29791a8
DE
20532 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20533 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20534 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20535 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20536}
20537{
20538 DI tmp_tmp;
7b1a2840 20539 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20540if (GTDI (tmp_tmp, 65535)) {
20541{
20542 {
20543 UHI opval = 65535;
b29791a8 20544 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20545 written |= (1 << 9);
20546 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20547 }
20548frvbf_media_overflow (current_cpu, 8);
20549}
20550} else {
20551if (LTDI (tmp_tmp, 0)) {
20552{
20553 {
20554 UHI opval = 0;
b29791a8 20555 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20556 written |= (1 << 9);
20557 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20558 }
20559frvbf_media_overflow (current_cpu, 8);
20560}
20561} else {
20562 {
20563 UHI opval = tmp_tmp;
b29791a8 20564 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20565 written |= (1 << 9);
20566 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20567 }
20568}
20569}
20570}
20571{
20572 DI tmp_tmp;
7b1a2840 20573 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20574if (GTDI (tmp_tmp, 65535)) {
20575{
20576 {
20577 UHI opval = 65535;
b29791a8 20578 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20579 written |= (1 << 10);
20580 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20581 }
20582frvbf_media_overflow (current_cpu, 4);
20583}
20584} else {
20585if (LTDI (tmp_tmp, 0)) {
20586{
20587 {
20588 UHI opval = 0;
b29791a8 20589 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20590 written |= (1 << 10);
20591 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20592 }
20593frvbf_media_overflow (current_cpu, 4);
20594}
20595} else {
20596 {
20597 UHI opval = tmp_tmp;
b29791a8 20598 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20599 written |= (1 << 10);
20600 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20601 }
20602}
20603}
20604}
20605}
20606
20607 abuf->written = written;
20608 return vpc;
20609#undef FLD
20610}
20611
20612/* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20613
20614static SEM_PC
20615SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20616{
20617#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20619 int UNUSED written = 0;
20620 IADDR UNUSED pc = abuf->addr;
20621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20622
20623{
20624 HI tmp_argihi;
20625 HI tmp_argilo;
20626 HI tmp_argjhi;
20627 HI tmp_argjlo;
20628{
b29791a8
DE
20629 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20630 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20631 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20632 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20633}
20634{
20635 DI tmp_tmp;
7b1a2840 20636 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20637if (GTDI (tmp_tmp, 32767)) {
20638{
20639 {
20640 UHI opval = 32767;
b29791a8 20641 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20642 written |= (1 << 9);
20643 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20644 }
20645frvbf_media_overflow (current_cpu, 8);
20646}
20647} else {
20648if (LTDI (tmp_tmp, -32768)) {
20649{
20650 {
20651 UHI opval = -32768;
b29791a8 20652 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20653 written |= (1 << 9);
20654 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20655 }
20656frvbf_media_overflow (current_cpu, 8);
20657}
20658} else {
20659 {
20660 UHI opval = tmp_tmp;
b29791a8 20661 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20662 written |= (1 << 9);
20663 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20664 }
20665}
20666}
20667}
20668{
20669 DI tmp_tmp;
7b1a2840 20670 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20671if (GTDI (tmp_tmp, 32767)) {
20672{
20673 {
20674 UHI opval = 32767;
b29791a8 20675 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20676 written |= (1 << 10);
20677 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20678 }
20679frvbf_media_overflow (current_cpu, 4);
20680}
20681} else {
20682if (LTDI (tmp_tmp, -32768)) {
20683{
20684 {
20685 UHI opval = -32768;
b29791a8 20686 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20687 written |= (1 << 10);
20688 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20689 }
20690frvbf_media_overflow (current_cpu, 4);
20691}
20692} else {
20693 {
20694 UHI opval = tmp_tmp;
b29791a8 20695 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20696 written |= (1 << 10);
20697 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20698 }
20699}
20700}
20701}
20702}
20703
20704 abuf->written = written;
20705 return vpc;
20706#undef FLD
20707}
20708
20709/* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20710
20711static SEM_PC
20712SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20713{
20714#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20715 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20716 int UNUSED written = 0;
20717 IADDR UNUSED pc = abuf->addr;
20718 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20719
20720{
20721 UHI tmp_argihi;
20722 UHI tmp_argilo;
20723 UHI tmp_argjhi;
20724 UHI tmp_argjlo;
20725{
b29791a8
DE
20726 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20727 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20728 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20729 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20730}
20731{
20732 DI tmp_tmp;
7b1a2840 20733 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20734if (GTDI (tmp_tmp, 65535)) {
20735{
20736 {
20737 UHI opval = 65535;
b29791a8 20738 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20739 written |= (1 << 9);
20740 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20741 }
20742frvbf_media_overflow (current_cpu, 8);
20743}
20744} else {
20745if (LTDI (tmp_tmp, 0)) {
20746{
20747 {
20748 UHI opval = 0;
b29791a8 20749 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20750 written |= (1 << 9);
20751 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20752 }
20753frvbf_media_overflow (current_cpu, 8);
20754}
20755} else {
20756 {
20757 UHI opval = tmp_tmp;
b29791a8 20758 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20759 written |= (1 << 9);
20760 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20761 }
20762}
20763}
20764}
20765{
20766 DI tmp_tmp;
7b1a2840 20767 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20768if (GTDI (tmp_tmp, 65535)) {
20769{
20770 {
20771 UHI opval = 65535;
b29791a8 20772 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20773 written |= (1 << 10);
20774 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20775 }
20776frvbf_media_overflow (current_cpu, 4);
20777}
20778} else {
20779if (LTDI (tmp_tmp, 0)) {
20780{
20781 {
20782 UHI opval = 0;
b29791a8 20783 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20784 written |= (1 << 10);
20785 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20786 }
20787frvbf_media_overflow (current_cpu, 4);
20788}
20789} else {
20790 {
20791 UHI opval = tmp_tmp;
b29791a8 20792 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20793 written |= (1 << 10);
20794 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20795 }
20796}
20797}
20798}
20799}
20800
20801 abuf->written = written;
20802 return vpc;
20803#undef FLD
20804}
20805
20806/* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20807
20808static SEM_PC
20809SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20810{
20811#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20813 int UNUSED written = 0;
20814 IADDR UNUSED pc = abuf->addr;
20815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20816
20817if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20818{
20819 HI tmp_argihi;
20820 HI tmp_argilo;
20821 HI tmp_argjhi;
20822 HI tmp_argjlo;
20823{
b29791a8
DE
20824 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20825 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20826 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20827 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20828}
20829{
20830 DI tmp_tmp;
7b1a2840 20831 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20832if (GTDI (tmp_tmp, 32767)) {
20833{
20834 {
20835 UHI opval = 32767;
b29791a8 20836 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20837 written |= (1 << 11);
20838 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20839 }
20840frvbf_media_overflow (current_cpu, 8);
20841}
20842} else {
20843if (LTDI (tmp_tmp, -32768)) {
20844{
20845 {
20846 UHI opval = -32768;
b29791a8 20847 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20848 written |= (1 << 11);
20849 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20850 }
20851frvbf_media_overflow (current_cpu, 8);
20852}
20853} else {
20854 {
20855 UHI opval = tmp_tmp;
b29791a8 20856 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20857 written |= (1 << 11);
20858 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20859 }
20860}
20861}
20862}
20863{
20864 DI tmp_tmp;
7b1a2840 20865 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20866if (GTDI (tmp_tmp, 32767)) {
20867{
20868 {
20869 UHI opval = 32767;
b29791a8 20870 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20871 written |= (1 << 12);
20872 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20873 }
20874frvbf_media_overflow (current_cpu, 4);
20875}
20876} else {
20877if (LTDI (tmp_tmp, -32768)) {
20878{
20879 {
20880 UHI opval = -32768;
b29791a8 20881 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20882 written |= (1 << 12);
20883 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20884 }
20885frvbf_media_overflow (current_cpu, 4);
20886}
20887} else {
20888 {
20889 UHI opval = tmp_tmp;
b29791a8 20890 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20891 written |= (1 << 12);
20892 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20893 }
20894}
20895}
20896}
20897}
20898}
20899
20900 abuf->written = written;
20901 return vpc;
20902#undef FLD
20903}
20904
20905/* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20906
20907static SEM_PC
20908SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20909{
20910#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20912 int UNUSED written = 0;
20913 IADDR UNUSED pc = abuf->addr;
20914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20915
20916if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20917{
20918 UHI tmp_argihi;
20919 UHI tmp_argilo;
20920 UHI tmp_argjhi;
20921 UHI tmp_argjlo;
20922{
b29791a8
DE
20923 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20924 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20925 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20926 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20927}
20928{
20929 DI tmp_tmp;
7b1a2840 20930 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20931if (GTDI (tmp_tmp, 65535)) {
20932{
20933 {
20934 UHI opval = 65535;
b29791a8 20935 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20936 written |= (1 << 11);
20937 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20938 }
20939frvbf_media_overflow (current_cpu, 8);
20940}
20941} else {
20942if (LTDI (tmp_tmp, 0)) {
20943{
20944 {
20945 UHI opval = 0;
b29791a8 20946 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20947 written |= (1 << 11);
20948 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20949 }
20950frvbf_media_overflow (current_cpu, 8);
20951}
20952} else {
20953 {
20954 UHI opval = tmp_tmp;
b29791a8 20955 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20956 written |= (1 << 11);
20957 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20958 }
20959}
20960}
20961}
20962{
20963 DI tmp_tmp;
7b1a2840 20964 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20965if (GTDI (tmp_tmp, 65535)) {
20966{
20967 {
20968 UHI opval = 65535;
b29791a8 20969 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20970 written |= (1 << 12);
20971 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20972 }
20973frvbf_media_overflow (current_cpu, 4);
20974}
20975} else {
20976if (LTDI (tmp_tmp, 0)) {
20977{
20978 {
20979 UHI opval = 0;
b29791a8 20980 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20981 written |= (1 << 12);
20982 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20983 }
20984frvbf_media_overflow (current_cpu, 4);
20985}
20986} else {
20987 {
20988 UHI opval = tmp_tmp;
b29791a8 20989 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20990 written |= (1 << 12);
20991 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20992 }
20993}
20994}
20995}
20996}
20997}
20998
20999 abuf->written = written;
21000 return vpc;
21001#undef FLD
21002}
21003
21004/* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21005
21006static SEM_PC
21007SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21008{
21009#define FLD(f) abuf->fields.sfmt_cmaddhss.f
21010 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21011 int UNUSED written = 0;
21012 IADDR UNUSED pc = abuf->addr;
21013 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21014
21015if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21016{
21017 HI tmp_argihi;
21018 HI tmp_argilo;
21019 HI tmp_argjhi;
21020 HI tmp_argjlo;
21021{
b29791a8
DE
21022 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21023 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21024 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21025 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21026}
21027{
21028 DI tmp_tmp;
7b1a2840 21029 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21030if (GTDI (tmp_tmp, 32767)) {
21031{
21032 {
21033 UHI opval = 32767;
b29791a8 21034 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21035 written |= (1 << 11);
21036 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21037 }
21038frvbf_media_overflow (current_cpu, 8);
21039}
21040} else {
21041if (LTDI (tmp_tmp, -32768)) {
21042{
21043 {
21044 UHI opval = -32768;
b29791a8 21045 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21046 written |= (1 << 11);
21047 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21048 }
21049frvbf_media_overflow (current_cpu, 8);
21050}
21051} else {
21052 {
21053 UHI opval = tmp_tmp;
b29791a8 21054 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21055 written |= (1 << 11);
21056 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21057 }
21058}
21059}
21060}
21061{
21062 DI tmp_tmp;
7b1a2840 21063 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21064if (GTDI (tmp_tmp, 32767)) {
21065{
21066 {
21067 UHI opval = 32767;
b29791a8 21068 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21069 written |= (1 << 12);
21070 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21071 }
21072frvbf_media_overflow (current_cpu, 4);
21073}
21074} else {
21075if (LTDI (tmp_tmp, -32768)) {
21076{
21077 {
21078 UHI opval = -32768;
b29791a8 21079 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21080 written |= (1 << 12);
21081 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21082 }
21083frvbf_media_overflow (current_cpu, 4);
21084}
21085} else {
21086 {
21087 UHI opval = tmp_tmp;
b29791a8 21088 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21089 written |= (1 << 12);
21090 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21091 }
21092}
21093}
21094}
21095}
21096}
21097
21098 abuf->written = written;
21099 return vpc;
21100#undef FLD
21101}
21102
21103/* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21104
21105static SEM_PC
21106SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21107{
21108#define FLD(f) abuf->fields.sfmt_cmaddhss.f
21109 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21110 int UNUSED written = 0;
21111 IADDR UNUSED pc = abuf->addr;
21112 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21113
21114if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21115{
21116 UHI tmp_argihi;
21117 UHI tmp_argilo;
21118 UHI tmp_argjhi;
21119 UHI tmp_argjlo;
21120{
b29791a8
DE
21121 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21122 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21123 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21124 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21125}
21126{
21127 DI tmp_tmp;
7b1a2840 21128 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21129if (GTDI (tmp_tmp, 65535)) {
21130{
21131 {
21132 UHI opval = 65535;
b29791a8 21133 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21134 written |= (1 << 11);
21135 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21136 }
21137frvbf_media_overflow (current_cpu, 8);
21138}
21139} else {
21140if (LTDI (tmp_tmp, 0)) {
21141{
21142 {
21143 UHI opval = 0;
b29791a8 21144 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21145 written |= (1 << 11);
21146 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21147 }
21148frvbf_media_overflow (current_cpu, 8);
21149}
21150} else {
21151 {
21152 UHI opval = tmp_tmp;
b29791a8 21153 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21154 written |= (1 << 11);
21155 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21156 }
21157}
21158}
21159}
21160{
21161 DI tmp_tmp;
7b1a2840 21162 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21163if (GTDI (tmp_tmp, 65535)) {
21164{
21165 {
21166 UHI opval = 65535;
b29791a8 21167 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21168 written |= (1 << 12);
21169 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21170 }
21171frvbf_media_overflow (current_cpu, 4);
21172}
21173} else {
21174if (LTDI (tmp_tmp, 0)) {
21175{
21176 {
21177 UHI opval = 0;
b29791a8 21178 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21179 written |= (1 << 12);
21180 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21181 }
21182frvbf_media_overflow (current_cpu, 4);
21183}
21184} else {
21185 {
21186 UHI opval = tmp_tmp;
b29791a8 21187 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21188 written |= (1 << 12);
21189 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21190 }
21191}
21192}
21193}
21194}
21195}
21196
21197 abuf->written = written;
21198 return vpc;
21199#undef FLD
21200}
21201
21202/* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21203
21204static SEM_PC
21205SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21206{
21207#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21209 int UNUSED written = 0;
21210 IADDR UNUSED pc = abuf->addr;
21211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21212
21213if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21214frvbf_media_register_not_aligned (current_cpu);
21215} else {
21216{
21217 HI tmp_argihi;
21218 HI tmp_argilo;
21219 HI tmp_argjhi;
21220 HI tmp_argjlo;
21221 {
21222 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21223 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21224 written |= (1 << 14);
21225 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21226 }
21227{
b29791a8
DE
21228 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21229 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21230 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21231 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21232}
21233{
21234 DI tmp_tmp;
7b1a2840 21235 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21236if (GTDI (tmp_tmp, 32767)) {
21237{
21238 {
21239 UHI opval = 32767;
b29791a8 21240 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21241 written |= (1 << 15);
21242 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21243 }
21244frvbf_media_overflow (current_cpu, 8);
21245}
21246} else {
21247if (LTDI (tmp_tmp, -32768)) {
21248{
21249 {
21250 UHI opval = -32768;
b29791a8 21251 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21252 written |= (1 << 15);
21253 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21254 }
21255frvbf_media_overflow (current_cpu, 8);
21256}
21257} else {
21258 {
21259 UHI opval = tmp_tmp;
b29791a8 21260 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21261 written |= (1 << 15);
21262 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21263 }
21264}
21265}
21266}
21267{
21268 DI tmp_tmp;
7b1a2840 21269 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21270if (GTDI (tmp_tmp, 32767)) {
21271{
21272 {
21273 UHI opval = 32767;
b29791a8 21274 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21275 written |= (1 << 17);
21276 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21277 }
21278frvbf_media_overflow (current_cpu, 4);
21279}
21280} else {
21281if (LTDI (tmp_tmp, -32768)) {
21282{
21283 {
21284 UHI opval = -32768;
b29791a8 21285 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21286 written |= (1 << 17);
21287 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21288 }
21289frvbf_media_overflow (current_cpu, 4);
21290}
21291} else {
21292 {
21293 UHI opval = tmp_tmp;
b29791a8 21294 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21295 written |= (1 << 17);
21296 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21297 }
21298}
21299}
21300}
21301{
b29791a8
DE
21302 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21303 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21304 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21305 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21306}
21307{
21308 DI tmp_tmp;
7b1a2840 21309 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21310if (GTDI (tmp_tmp, 32767)) {
21311{
21312 {
21313 UHI opval = 32767;
b29791a8 21314 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21315 written |= (1 << 16);
21316 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21317 }
21318frvbf_media_overflow (current_cpu, 2);
21319}
21320} else {
21321if (LTDI (tmp_tmp, -32768)) {
21322{
21323 {
21324 UHI opval = -32768;
b29791a8 21325 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21326 written |= (1 << 16);
21327 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21328 }
21329frvbf_media_overflow (current_cpu, 2);
21330}
21331} else {
21332 {
21333 UHI opval = tmp_tmp;
b29791a8 21334 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21335 written |= (1 << 16);
21336 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21337 }
21338}
21339}
21340}
21341{
21342 DI tmp_tmp;
7b1a2840 21343 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21344if (GTDI (tmp_tmp, 32767)) {
21345{
21346 {
21347 UHI opval = 32767;
b29791a8 21348 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21349 written |= (1 << 18);
21350 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21351 }
21352frvbf_media_overflow (current_cpu, 1);
21353}
21354} else {
21355if (LTDI (tmp_tmp, -32768)) {
21356{
21357 {
21358 UHI opval = -32768;
b29791a8 21359 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21360 written |= (1 << 18);
21361 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21362 }
21363frvbf_media_overflow (current_cpu, 1);
21364}
21365} else {
21366 {
21367 UHI opval = tmp_tmp;
b29791a8 21368 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21369 written |= (1 << 18);
21370 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21371 }
21372}
21373}
21374}
21375}
21376}
21377
21378 abuf->written = written;
21379 return vpc;
21380#undef FLD
21381}
21382
21383/* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21384
21385static SEM_PC
21386SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21387{
21388#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21390 int UNUSED written = 0;
21391 IADDR UNUSED pc = abuf->addr;
21392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21393
21394if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21395frvbf_media_register_not_aligned (current_cpu);
21396} else {
21397{
21398 UHI tmp_argihi;
21399 UHI tmp_argilo;
21400 UHI tmp_argjhi;
21401 UHI tmp_argjlo;
21402 {
21403 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21404 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21405 written |= (1 << 14);
21406 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21407 }
21408{
b29791a8
DE
21409 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21410 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21411 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21412 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21413}
21414{
21415 DI tmp_tmp;
7b1a2840 21416 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21417if (GTDI (tmp_tmp, 65535)) {
21418{
21419 {
21420 UHI opval = 65535;
b29791a8 21421 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21422 written |= (1 << 15);
21423 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21424 }
21425frvbf_media_overflow (current_cpu, 8);
21426}
21427} else {
21428if (LTDI (tmp_tmp, 0)) {
21429{
21430 {
21431 UHI opval = 0;
b29791a8 21432 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21433 written |= (1 << 15);
21434 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21435 }
21436frvbf_media_overflow (current_cpu, 8);
21437}
21438} else {
21439 {
21440 UHI opval = tmp_tmp;
b29791a8 21441 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21442 written |= (1 << 15);
21443 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21444 }
21445}
21446}
21447}
21448{
21449 DI tmp_tmp;
7b1a2840 21450 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21451if (GTDI (tmp_tmp, 65535)) {
21452{
21453 {
21454 UHI opval = 65535;
b29791a8 21455 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21456 written |= (1 << 17);
21457 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21458 }
21459frvbf_media_overflow (current_cpu, 4);
21460}
21461} else {
21462if (LTDI (tmp_tmp, 0)) {
21463{
21464 {
21465 UHI opval = 0;
b29791a8 21466 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21467 written |= (1 << 17);
21468 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21469 }
21470frvbf_media_overflow (current_cpu, 4);
21471}
21472} else {
21473 {
21474 UHI opval = tmp_tmp;
b29791a8 21475 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21476 written |= (1 << 17);
21477 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21478 }
21479}
21480}
21481}
21482{
b29791a8
DE
21483 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21484 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21485 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21486 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21487}
21488{
21489 DI tmp_tmp;
7b1a2840 21490 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21491if (GTDI (tmp_tmp, 65535)) {
21492{
21493 {
21494 UHI opval = 65535;
b29791a8 21495 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21496 written |= (1 << 16);
21497 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21498 }
21499frvbf_media_overflow (current_cpu, 2);
21500}
21501} else {
21502if (LTDI (tmp_tmp, 0)) {
21503{
21504 {
21505 UHI opval = 0;
b29791a8 21506 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21507 written |= (1 << 16);
21508 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21509 }
21510frvbf_media_overflow (current_cpu, 2);
21511}
21512} else {
21513 {
21514 UHI opval = tmp_tmp;
b29791a8 21515 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21516 written |= (1 << 16);
21517 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21518 }
21519}
21520}
21521}
21522{
21523 DI tmp_tmp;
7b1a2840 21524 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21525if (GTDI (tmp_tmp, 65535)) {
21526{
21527 {
21528 UHI opval = 65535;
b29791a8 21529 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21530 written |= (1 << 18);
21531 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21532 }
21533frvbf_media_overflow (current_cpu, 1);
21534}
21535} else {
21536if (LTDI (tmp_tmp, 0)) {
21537{
21538 {
21539 UHI opval = 0;
b29791a8 21540 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21541 written |= (1 << 18);
21542 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21543 }
21544frvbf_media_overflow (current_cpu, 1);
21545}
21546} else {
21547 {
21548 UHI opval = tmp_tmp;
b29791a8 21549 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21550 written |= (1 << 18);
21551 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21552 }
21553}
21554}
21555}
21556}
21557}
21558
21559 abuf->written = written;
21560 return vpc;
21561#undef FLD
21562}
21563
21564/* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21565
21566static SEM_PC
21567SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21568{
21569#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21571 int UNUSED written = 0;
21572 IADDR UNUSED pc = abuf->addr;
21573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21574
21575if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21576frvbf_media_register_not_aligned (current_cpu);
21577} else {
21578{
21579 HI tmp_argihi;
21580 HI tmp_argilo;
21581 HI tmp_argjhi;
21582 HI tmp_argjlo;
21583 {
21584 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21585 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21586 written |= (1 << 14);
21587 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21588 }
21589{
b29791a8
DE
21590 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21591 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21592 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21593 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21594}
21595{
21596 DI tmp_tmp;
7b1a2840 21597 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21598if (GTDI (tmp_tmp, 32767)) {
21599{
21600 {
21601 UHI opval = 32767;
b29791a8 21602 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21603 written |= (1 << 15);
21604 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21605 }
21606frvbf_media_overflow (current_cpu, 8);
21607}
21608} else {
21609if (LTDI (tmp_tmp, -32768)) {
21610{
21611 {
21612 UHI opval = -32768;
b29791a8 21613 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21614 written |= (1 << 15);
21615 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21616 }
21617frvbf_media_overflow (current_cpu, 8);
21618}
21619} else {
21620 {
21621 UHI opval = tmp_tmp;
b29791a8 21622 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21623 written |= (1 << 15);
21624 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21625 }
21626}
21627}
21628}
21629{
21630 DI tmp_tmp;
7b1a2840 21631 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21632if (GTDI (tmp_tmp, 32767)) {
21633{
21634 {
21635 UHI opval = 32767;
b29791a8 21636 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21637 written |= (1 << 17);
21638 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21639 }
21640frvbf_media_overflow (current_cpu, 4);
21641}
21642} else {
21643if (LTDI (tmp_tmp, -32768)) {
21644{
21645 {
21646 UHI opval = -32768;
b29791a8 21647 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21648 written |= (1 << 17);
21649 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21650 }
21651frvbf_media_overflow (current_cpu, 4);
21652}
21653} else {
21654 {
21655 UHI opval = tmp_tmp;
b29791a8 21656 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21657 written |= (1 << 17);
21658 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21659 }
21660}
21661}
21662}
21663{
b29791a8
DE
21664 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21665 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21666 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21667 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21668}
21669{
21670 DI tmp_tmp;
7b1a2840 21671 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21672if (GTDI (tmp_tmp, 32767)) {
21673{
21674 {
21675 UHI opval = 32767;
b29791a8 21676 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21677 written |= (1 << 16);
21678 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21679 }
21680frvbf_media_overflow (current_cpu, 2);
21681}
21682} else {
21683if (LTDI (tmp_tmp, -32768)) {
21684{
21685 {
21686 UHI opval = -32768;
b29791a8 21687 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21688 written |= (1 << 16);
21689 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21690 }
21691frvbf_media_overflow (current_cpu, 2);
21692}
21693} else {
21694 {
21695 UHI opval = tmp_tmp;
b29791a8 21696 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21697 written |= (1 << 16);
21698 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21699 }
21700}
21701}
21702}
21703{
21704 DI tmp_tmp;
7b1a2840 21705 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21706if (GTDI (tmp_tmp, 32767)) {
21707{
21708 {
21709 UHI opval = 32767;
b29791a8 21710 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21711 written |= (1 << 18);
21712 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21713 }
21714frvbf_media_overflow (current_cpu, 1);
21715}
21716} else {
21717if (LTDI (tmp_tmp, -32768)) {
21718{
21719 {
21720 UHI opval = -32768;
b29791a8 21721 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21722 written |= (1 << 18);
21723 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21724 }
21725frvbf_media_overflow (current_cpu, 1);
21726}
21727} else {
21728 {
21729 UHI opval = tmp_tmp;
b29791a8 21730 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21731 written |= (1 << 18);
21732 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21733 }
21734}
21735}
21736}
21737}
21738}
21739
21740 abuf->written = written;
21741 return vpc;
21742#undef FLD
21743}
21744
21745/* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21746
21747static SEM_PC
21748SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21749{
21750#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21752 int UNUSED written = 0;
21753 IADDR UNUSED pc = abuf->addr;
21754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21755
21756if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21757frvbf_media_register_not_aligned (current_cpu);
21758} else {
21759{
21760 UHI tmp_argihi;
21761 UHI tmp_argilo;
21762 UHI tmp_argjhi;
21763 UHI tmp_argjlo;
21764 {
21765 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21766 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21767 written |= (1 << 14);
21768 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21769 }
21770{
b29791a8
DE
21771 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21772 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21773 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21774 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21775}
21776{
21777 DI tmp_tmp;
7b1a2840 21778 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21779if (GTDI (tmp_tmp, 65535)) {
21780{
21781 {
21782 UHI opval = 65535;
b29791a8 21783 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21784 written |= (1 << 15);
21785 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21786 }
21787frvbf_media_overflow (current_cpu, 8);
21788}
21789} else {
21790if (LTDI (tmp_tmp, 0)) {
21791{
21792 {
21793 UHI opval = 0;
b29791a8 21794 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21795 written |= (1 << 15);
21796 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21797 }
21798frvbf_media_overflow (current_cpu, 8);
21799}
21800} else {
21801 {
21802 UHI opval = tmp_tmp;
b29791a8 21803 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21804 written |= (1 << 15);
21805 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21806 }
21807}
21808}
21809}
21810{
21811 DI tmp_tmp;
7b1a2840 21812 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21813if (GTDI (tmp_tmp, 65535)) {
21814{
21815 {
21816 UHI opval = 65535;
b29791a8 21817 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21818 written |= (1 << 17);
21819 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21820 }
21821frvbf_media_overflow (current_cpu, 4);
21822}
21823} else {
21824if (LTDI (tmp_tmp, 0)) {
21825{
21826 {
21827 UHI opval = 0;
b29791a8 21828 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21829 written |= (1 << 17);
21830 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21831 }
21832frvbf_media_overflow (current_cpu, 4);
21833}
21834} else {
21835 {
21836 UHI opval = tmp_tmp;
b29791a8 21837 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21838 written |= (1 << 17);
21839 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21840 }
21841}
21842}
21843}
21844{
b29791a8
DE
21845 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21846 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21847 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21848 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21849}
21850{
21851 DI tmp_tmp;
7b1a2840 21852 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21853if (GTDI (tmp_tmp, 65535)) {
21854{
21855 {
21856 UHI opval = 65535;
b29791a8 21857 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21858 written |= (1 << 16);
21859 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21860 }
21861frvbf_media_overflow (current_cpu, 2);
21862}
21863} else {
21864if (LTDI (tmp_tmp, 0)) {
21865{
21866 {
21867 UHI opval = 0;
b29791a8 21868 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21869 written |= (1 << 16);
21870 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21871 }
21872frvbf_media_overflow (current_cpu, 2);
21873}
21874} else {
21875 {
21876 UHI opval = tmp_tmp;
b29791a8 21877 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21878 written |= (1 << 16);
21879 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21880 }
21881}
21882}
21883}
21884{
21885 DI tmp_tmp;
7b1a2840 21886 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21887if (GTDI (tmp_tmp, 65535)) {
21888{
21889 {
21890 UHI opval = 65535;
b29791a8 21891 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21892 written |= (1 << 18);
21893 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21894 }
21895frvbf_media_overflow (current_cpu, 1);
21896}
21897} else {
21898if (LTDI (tmp_tmp, 0)) {
21899{
21900 {
21901 UHI opval = 0;
b29791a8 21902 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21903 written |= (1 << 18);
21904 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21905 }
21906frvbf_media_overflow (current_cpu, 1);
21907}
21908} else {
21909 {
21910 UHI opval = tmp_tmp;
b29791a8 21911 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21912 written |= (1 << 18);
21913 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21914 }
21915}
21916}
21917}
21918}
21919}
21920
21921 abuf->written = written;
21922 return vpc;
21923#undef FLD
21924}
21925
21926/* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21927
21928static SEM_PC
21929SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21930{
21931#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21933 int UNUSED written = 0;
21934 IADDR UNUSED pc = abuf->addr;
21935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21936
21937if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21938frvbf_media_register_not_aligned (current_cpu);
21939} else {
21940if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21941{
21942 HI tmp_argihi;
21943 HI tmp_argilo;
21944 HI tmp_argjhi;
21945 HI tmp_argjlo;
21946 {
21947 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21948 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21949 written |= (1 << 16);
21950 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21951 }
21952{
b29791a8
DE
21953 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21954 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21955 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21956 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21957}
21958{
21959 DI tmp_tmp;
7b1a2840 21960 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21961if (GTDI (tmp_tmp, 32767)) {
21962{
21963 {
21964 UHI opval = 32767;
b29791a8 21965 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21966 written |= (1 << 17);
21967 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21968 }
21969frvbf_media_overflow (current_cpu, 8);
21970}
21971} else {
21972if (LTDI (tmp_tmp, -32768)) {
21973{
21974 {
21975 UHI opval = -32768;
b29791a8 21976 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21977 written |= (1 << 17);
21978 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21979 }
21980frvbf_media_overflow (current_cpu, 8);
21981}
21982} else {
21983 {
21984 UHI opval = tmp_tmp;
b29791a8 21985 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21986 written |= (1 << 17);
21987 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21988 }
21989}
21990}
21991}
21992{
21993 DI tmp_tmp;
7b1a2840 21994 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21995if (GTDI (tmp_tmp, 32767)) {
21996{
21997 {
21998 UHI opval = 32767;
b29791a8 21999 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22000 written |= (1 << 19);
22001 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22002 }
22003frvbf_media_overflow (current_cpu, 4);
22004}
22005} else {
22006if (LTDI (tmp_tmp, -32768)) {
22007{
22008 {
22009 UHI opval = -32768;
b29791a8 22010 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22011 written |= (1 << 19);
22012 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22013 }
22014frvbf_media_overflow (current_cpu, 4);
22015}
22016} else {
22017 {
22018 UHI opval = tmp_tmp;
b29791a8 22019 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22020 written |= (1 << 19);
22021 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22022 }
22023}
22024}
22025}
22026{
b29791a8
DE
22027 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22028 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22029 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22030 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22031}
22032{
22033 DI tmp_tmp;
7b1a2840 22034 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22035if (GTDI (tmp_tmp, 32767)) {
22036{
22037 {
22038 UHI opval = 32767;
b29791a8 22039 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22040 written |= (1 << 18);
22041 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22042 }
22043frvbf_media_overflow (current_cpu, 2);
22044}
22045} else {
22046if (LTDI (tmp_tmp, -32768)) {
22047{
22048 {
22049 UHI opval = -32768;
b29791a8 22050 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22051 written |= (1 << 18);
22052 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22053 }
22054frvbf_media_overflow (current_cpu, 2);
22055}
22056} else {
22057 {
22058 UHI opval = tmp_tmp;
b29791a8 22059 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22060 written |= (1 << 18);
22061 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22062 }
22063}
22064}
22065}
22066{
22067 DI tmp_tmp;
7b1a2840 22068 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22069if (GTDI (tmp_tmp, 32767)) {
22070{
22071 {
22072 UHI opval = 32767;
b29791a8 22073 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22074 written |= (1 << 20);
22075 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22076 }
22077frvbf_media_overflow (current_cpu, 1);
22078}
22079} else {
22080if (LTDI (tmp_tmp, -32768)) {
22081{
22082 {
22083 UHI opval = -32768;
b29791a8 22084 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22085 written |= (1 << 20);
22086 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22087 }
22088frvbf_media_overflow (current_cpu, 1);
22089}
22090} else {
22091 {
22092 UHI opval = tmp_tmp;
b29791a8 22093 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22094 written |= (1 << 20);
22095 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22096 }
22097}
22098}
22099}
22100}
22101}
22102}
22103
22104 abuf->written = written;
22105 return vpc;
22106#undef FLD
22107}
22108
22109/* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22110
22111static SEM_PC
22112SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22113{
22114#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22115 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22116 int UNUSED written = 0;
22117 IADDR UNUSED pc = abuf->addr;
22118 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22119
22120if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22121frvbf_media_register_not_aligned (current_cpu);
22122} else {
22123if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22124{
22125 UHI tmp_argihi;
22126 UHI tmp_argilo;
22127 UHI tmp_argjhi;
22128 UHI tmp_argjlo;
22129 {
22130 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22131 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22132 written |= (1 << 16);
22133 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22134 }
22135{
b29791a8
DE
22136 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22137 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22138 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22139 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22140}
22141{
22142 DI tmp_tmp;
7b1a2840 22143 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22144if (GTDI (tmp_tmp, 65535)) {
22145{
22146 {
22147 UHI opval = 65535;
b29791a8 22148 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22149 written |= (1 << 17);
22150 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22151 }
22152frvbf_media_overflow (current_cpu, 8);
22153}
22154} else {
22155if (LTDI (tmp_tmp, 0)) {
22156{
22157 {
22158 UHI opval = 0;
b29791a8 22159 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22160 written |= (1 << 17);
22161 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22162 }
22163frvbf_media_overflow (current_cpu, 8);
22164}
22165} else {
22166 {
22167 UHI opval = tmp_tmp;
b29791a8 22168 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22169 written |= (1 << 17);
22170 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22171 }
22172}
22173}
22174}
22175{
22176 DI tmp_tmp;
7b1a2840 22177 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22178if (GTDI (tmp_tmp, 65535)) {
22179{
22180 {
22181 UHI opval = 65535;
b29791a8 22182 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22183 written |= (1 << 19);
22184 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22185 }
22186frvbf_media_overflow (current_cpu, 4);
22187}
22188} else {
22189if (LTDI (tmp_tmp, 0)) {
22190{
22191 {
22192 UHI opval = 0;
b29791a8 22193 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22194 written |= (1 << 19);
22195 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22196 }
22197frvbf_media_overflow (current_cpu, 4);
22198}
22199} else {
22200 {
22201 UHI opval = tmp_tmp;
b29791a8 22202 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22203 written |= (1 << 19);
22204 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22205 }
22206}
22207}
22208}
22209{
b29791a8
DE
22210 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22211 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22212 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22213 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22214}
22215{
22216 DI tmp_tmp;
7b1a2840 22217 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22218if (GTDI (tmp_tmp, 65535)) {
22219{
22220 {
22221 UHI opval = 65535;
b29791a8 22222 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22223 written |= (1 << 18);
22224 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22225 }
22226frvbf_media_overflow (current_cpu, 2);
22227}
22228} else {
22229if (LTDI (tmp_tmp, 0)) {
22230{
22231 {
22232 UHI opval = 0;
b29791a8 22233 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22234 written |= (1 << 18);
22235 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22236 }
22237frvbf_media_overflow (current_cpu, 2);
22238}
22239} else {
22240 {
22241 UHI opval = tmp_tmp;
b29791a8 22242 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22243 written |= (1 << 18);
22244 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22245 }
22246}
22247}
22248}
22249{
22250 DI tmp_tmp;
7b1a2840 22251 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22252if (GTDI (tmp_tmp, 65535)) {
22253{
22254 {
22255 UHI opval = 65535;
b29791a8 22256 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22257 written |= (1 << 20);
22258 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22259 }
22260frvbf_media_overflow (current_cpu, 1);
22261}
22262} else {
22263if (LTDI (tmp_tmp, 0)) {
22264{
22265 {
22266 UHI opval = 0;
b29791a8 22267 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22268 written |= (1 << 20);
22269 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22270 }
22271frvbf_media_overflow (current_cpu, 1);
22272}
22273} else {
22274 {
22275 UHI opval = tmp_tmp;
b29791a8 22276 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22277 written |= (1 << 20);
22278 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22279 }
22280}
22281}
22282}
22283}
22284}
22285}
22286
22287 abuf->written = written;
22288 return vpc;
22289#undef FLD
22290}
22291
22292/* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22293
22294static SEM_PC
22295SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22296{
22297#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22299 int UNUSED written = 0;
22300 IADDR UNUSED pc = abuf->addr;
22301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22302
22303if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22304frvbf_media_register_not_aligned (current_cpu);
22305} else {
22306if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22307{
22308 HI tmp_argihi;
22309 HI tmp_argilo;
22310 HI tmp_argjhi;
22311 HI tmp_argjlo;
22312 {
22313 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22314 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22315 written |= (1 << 16);
22316 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22317 }
22318{
b29791a8
DE
22319 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22320 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22321 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22322 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22323}
22324{
22325 DI tmp_tmp;
7b1a2840 22326 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22327if (GTDI (tmp_tmp, 32767)) {
22328{
22329 {
22330 UHI opval = 32767;
b29791a8 22331 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22332 written |= (1 << 17);
22333 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22334 }
22335frvbf_media_overflow (current_cpu, 8);
22336}
22337} else {
22338if (LTDI (tmp_tmp, -32768)) {
22339{
22340 {
22341 UHI opval = -32768;
b29791a8 22342 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22343 written |= (1 << 17);
22344 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22345 }
22346frvbf_media_overflow (current_cpu, 8);
22347}
22348} else {
22349 {
22350 UHI opval = tmp_tmp;
b29791a8 22351 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22352 written |= (1 << 17);
22353 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22354 }
22355}
22356}
22357}
22358{
22359 DI tmp_tmp;
7b1a2840 22360 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22361if (GTDI (tmp_tmp, 32767)) {
22362{
22363 {
22364 UHI opval = 32767;
b29791a8 22365 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22366 written |= (1 << 19);
22367 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22368 }
22369frvbf_media_overflow (current_cpu, 4);
22370}
22371} else {
22372if (LTDI (tmp_tmp, -32768)) {
22373{
22374 {
22375 UHI opval = -32768;
b29791a8 22376 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22377 written |= (1 << 19);
22378 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22379 }
22380frvbf_media_overflow (current_cpu, 4);
22381}
22382} else {
22383 {
22384 UHI opval = tmp_tmp;
b29791a8 22385 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22386 written |= (1 << 19);
22387 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22388 }
22389}
22390}
22391}
22392{
b29791a8
DE
22393 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22394 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22395 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22396 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22397}
22398{
22399 DI tmp_tmp;
7b1a2840 22400 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22401if (GTDI (tmp_tmp, 32767)) {
22402{
22403 {
22404 UHI opval = 32767;
b29791a8 22405 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22406 written |= (1 << 18);
22407 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22408 }
22409frvbf_media_overflow (current_cpu, 2);
22410}
22411} else {
22412if (LTDI (tmp_tmp, -32768)) {
22413{
22414 {
22415 UHI opval = -32768;
b29791a8 22416 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22417 written |= (1 << 18);
22418 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22419 }
22420frvbf_media_overflow (current_cpu, 2);
22421}
22422} else {
22423 {
22424 UHI opval = tmp_tmp;
b29791a8 22425 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22426 written |= (1 << 18);
22427 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22428 }
22429}
22430}
22431}
22432{
22433 DI tmp_tmp;
7b1a2840 22434 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22435if (GTDI (tmp_tmp, 32767)) {
22436{
22437 {
22438 UHI opval = 32767;
b29791a8 22439 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22440 written |= (1 << 20);
22441 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22442 }
22443frvbf_media_overflow (current_cpu, 1);
22444}
22445} else {
22446if (LTDI (tmp_tmp, -32768)) {
22447{
22448 {
22449 UHI opval = -32768;
b29791a8 22450 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22451 written |= (1 << 20);
22452 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22453 }
22454frvbf_media_overflow (current_cpu, 1);
22455}
22456} else {
22457 {
22458 UHI opval = tmp_tmp;
b29791a8 22459 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22460 written |= (1 << 20);
22461 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22462 }
22463}
22464}
22465}
22466}
22467}
22468}
22469
22470 abuf->written = written;
22471 return vpc;
22472#undef FLD
22473}
22474
22475/* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22476
22477static SEM_PC
22478SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22479{
22480#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22482 int UNUSED written = 0;
22483 IADDR UNUSED pc = abuf->addr;
22484 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22485
22486if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22487frvbf_media_register_not_aligned (current_cpu);
22488} else {
22489if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22490{
22491 UHI tmp_argihi;
22492 UHI tmp_argilo;
22493 UHI tmp_argjhi;
22494 UHI tmp_argjlo;
22495 {
22496 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22497 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22498 written |= (1 << 16);
22499 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22500 }
22501{
b29791a8
DE
22502 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22503 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22504 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22505 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22506}
22507{
22508 DI tmp_tmp;
7b1a2840 22509 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22510if (GTDI (tmp_tmp, 65535)) {
22511{
22512 {
22513 UHI opval = 65535;
b29791a8 22514 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22515 written |= (1 << 17);
22516 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22517 }
22518frvbf_media_overflow (current_cpu, 8);
22519}
22520} else {
22521if (LTDI (tmp_tmp, 0)) {
22522{
22523 {
22524 UHI opval = 0;
b29791a8 22525 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22526 written |= (1 << 17);
22527 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22528 }
22529frvbf_media_overflow (current_cpu, 8);
22530}
22531} else {
22532 {
22533 UHI opval = tmp_tmp;
b29791a8 22534 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22535 written |= (1 << 17);
22536 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22537 }
22538}
22539}
22540}
22541{
22542 DI tmp_tmp;
7b1a2840 22543 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22544if (GTDI (tmp_tmp, 65535)) {
22545{
22546 {
22547 UHI opval = 65535;
b29791a8 22548 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22549 written |= (1 << 19);
22550 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22551 }
22552frvbf_media_overflow (current_cpu, 4);
22553}
22554} else {
22555if (LTDI (tmp_tmp, 0)) {
22556{
22557 {
22558 UHI opval = 0;
b29791a8 22559 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22560 written |= (1 << 19);
22561 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22562 }
22563frvbf_media_overflow (current_cpu, 4);
22564}
22565} else {
22566 {
22567 UHI opval = tmp_tmp;
b29791a8 22568 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22569 written |= (1 << 19);
22570 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22571 }
22572}
22573}
22574}
22575{
b29791a8
DE
22576 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22577 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22578 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22579 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22580}
22581{
22582 DI tmp_tmp;
7b1a2840 22583 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22584if (GTDI (tmp_tmp, 65535)) {
22585{
22586 {
22587 UHI opval = 65535;
b29791a8 22588 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22589 written |= (1 << 18);
22590 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22591 }
22592frvbf_media_overflow (current_cpu, 2);
22593}
22594} else {
22595if (LTDI (tmp_tmp, 0)) {
22596{
22597 {
22598 UHI opval = 0;
b29791a8 22599 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22600 written |= (1 << 18);
22601 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22602 }
22603frvbf_media_overflow (current_cpu, 2);
22604}
22605} else {
22606 {
22607 UHI opval = tmp_tmp;
b29791a8 22608 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22609 written |= (1 << 18);
22610 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22611 }
22612}
22613}
22614}
22615{
22616 DI tmp_tmp;
7b1a2840 22617 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22618if (GTDI (tmp_tmp, 65535)) {
22619{
22620 {
22621 UHI opval = 65535;
b29791a8 22622 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22623 written |= (1 << 20);
22624 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22625 }
22626frvbf_media_overflow (current_cpu, 1);
22627}
22628} else {
22629if (LTDI (tmp_tmp, 0)) {
22630{
22631 {
22632 UHI opval = 0;
b29791a8 22633 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22634 written |= (1 << 20);
22635 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22636 }
22637frvbf_media_overflow (current_cpu, 1);
22638}
22639} else {
22640 {
22641 UHI opval = tmp_tmp;
b29791a8 22642 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22643 written |= (1 << 20);
22644 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22645 }
22646}
22647}
22648}
22649}
22650}
22651}
22652
22653 abuf->written = written;
22654 return vpc;
22655#undef FLD
22656}
22657
676a64f4
RS
22658/* mqlclrhs: mqlclrhs$pack $FRintieven,$FRintjeven,$FRintkeven */
22659
22660static SEM_PC
22661SEM_FN_NAME (frvbf,mqlclrhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22662{
22663#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22665 int UNUSED written = 0;
22666 IADDR UNUSED pc = abuf->addr;
22667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22668
22669if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22670frvbf_media_register_not_aligned (current_cpu);
22671} else {
22672{
22673 HI tmp_a1;
22674 HI tmp_a2;
22675 HI tmp_a3;
22676 HI tmp_a4;
22677 HI tmp_b1;
22678 HI tmp_b2;
22679 HI tmp_b3;
22680 HI tmp_b4;
22681 {
22682 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22683 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22684 written |= (1 << 14);
22685 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22686 }
22687{
b29791a8
DE
22688 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22689 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22690 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22691 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22692}
22693{
b29791a8
DE
22694 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22695 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22696 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22697 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22698}
22699 {
22700 UHI opval = (LEUHI (ABSHI (tmp_a1), ABSHI (tmp_b1))) ? (0) : (LEHI (0, tmp_b1)) ? (tmp_a1) : (EQHI (tmp_a1, -32768)) ? (32767) : (NEGHI (tmp_a1));
b29791a8 22701 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22702 written |= (1 << 15);
22703 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22704 }
22705 {
22706 UHI opval = (LEUHI (ABSHI (tmp_a2), ABSHI (tmp_b2))) ? (0) : (LEHI (0, tmp_b2)) ? (tmp_a2) : (EQHI (tmp_a2, -32768)) ? (32767) : (NEGHI (tmp_a2));
b29791a8 22707 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22708 written |= (1 << 17);
22709 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22710 }
22711 {
22712 UHI opval = (LEUHI (ABSHI (tmp_a3), ABSHI (tmp_b3))) ? (0) : (LEHI (0, tmp_b3)) ? (tmp_a3) : (EQHI (tmp_a3, -32768)) ? (32767) : (NEGHI (tmp_a3));
b29791a8 22713 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22714 written |= (1 << 16);
22715 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22716 }
22717 {
22718 UHI opval = (LEUHI (ABSHI (tmp_a4), ABSHI (tmp_b4))) ? (0) : (LEHI (0, tmp_b4)) ? (tmp_a4) : (EQHI (tmp_a4, -32768)) ? (32767) : (NEGHI (tmp_a4));
b29791a8 22719 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22720 written |= (1 << 18);
22721 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22722 }
22723}
22724}
22725
22726 abuf->written = written;
22727 return vpc;
22728#undef FLD
22729}
22730
22731/* mqlmths: mqlmths$pack $FRintieven,$FRintjeven,$FRintkeven */
22732
22733static SEM_PC
22734SEM_FN_NAME (frvbf,mqlmths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22735{
22736#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22737 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22738 int UNUSED written = 0;
22739 IADDR UNUSED pc = abuf->addr;
22740 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22741
22742if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22743frvbf_media_register_not_aligned (current_cpu);
22744} else {
22745{
22746 HI tmp_a1;
22747 HI tmp_a2;
22748 HI tmp_a3;
22749 HI tmp_a4;
22750 HI tmp_b1;
22751 HI tmp_b2;
22752 HI tmp_b3;
22753 HI tmp_b4;
22754 {
22755 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22756 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22757 written |= (1 << 14);
22758 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22759 }
22760{
b29791a8
DE
22761 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22762 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22763 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22764 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22765}
22766{
b29791a8
DE
22767 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22768 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22769 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22770 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22771}
22772 {
22773 UHI opval = (ANDIF (GTHI (tmp_b1, -32768), GEHI (tmp_a1, ABSHI (tmp_b1)))) ? (tmp_b1) : (GTHI (tmp_a1, NEGHI (ABSHI (tmp_b1)))) ? (tmp_a1) : (EQHI (tmp_b1, -32768)) ? (32767) : (NEGHI (tmp_b1));
b29791a8 22774 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22775 written |= (1 << 15);
22776 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22777 }
22778 {
22779 UHI opval = (ANDIF (GTHI (tmp_b2, -32768), GEHI (tmp_a2, ABSHI (tmp_b2)))) ? (tmp_b2) : (GTHI (tmp_a2, NEGHI (ABSHI (tmp_b2)))) ? (tmp_a2) : (EQHI (tmp_b2, -32768)) ? (32767) : (NEGHI (tmp_b2));
b29791a8 22780 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22781 written |= (1 << 17);
22782 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22783 }
22784 {
22785 UHI opval = (ANDIF (GTHI (tmp_b3, -32768), GEHI (tmp_a3, ABSHI (tmp_b3)))) ? (tmp_b3) : (GTHI (tmp_a3, NEGHI (ABSHI (tmp_b3)))) ? (tmp_a3) : (EQHI (tmp_b3, -32768)) ? (32767) : (NEGHI (tmp_b3));
b29791a8 22786 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22787 written |= (1 << 16);
22788 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22789 }
22790 {
22791 UHI opval = (ANDIF (GTHI (tmp_b4, -32768), GEHI (tmp_a4, ABSHI (tmp_b4)))) ? (tmp_b4) : (GTHI (tmp_a4, NEGHI (ABSHI (tmp_b4)))) ? (tmp_a4) : (EQHI (tmp_b4, -32768)) ? (32767) : (NEGHI (tmp_b4));
b29791a8 22792 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22793 written |= (1 << 18);
22794 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22795 }
22796}
22797}
22798
22799 abuf->written = written;
22800 return vpc;
22801#undef FLD
22802}
22803
22804/* mqsllhi: mqsllhi$pack $FRintieven,$u6,$FRintkeven */
22805
22806static SEM_PC
22807SEM_FN_NAME (frvbf,mqsllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22808{
22809#define FLD(f) abuf->fields.sfmt_mqsllhi.f
22810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22811 int UNUSED written = 0;
22812 IADDR UNUSED pc = abuf->addr;
22813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22814
22815if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22816frvbf_media_register_not_aligned (current_cpu);
22817} else {
22818{
22819 {
22820 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22821 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22822 written |= (1 << 9);
22823 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22824 }
22825 {
22826 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22827 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22828 written |= (1 << 10);
22829 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22830 }
22831 {
b29791a8
DE
22832 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22833 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22834 written |= (1 << 11);
22835 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22836 }
22837 {
b29791a8
DE
22838 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22839 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22840 written |= (1 << 13);
22841 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22842 }
22843 {
b29791a8
DE
22844 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22845 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22846 written |= (1 << 12);
22847 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22848 }
22849 {
b29791a8
DE
22850 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22851 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22852 written |= (1 << 14);
22853 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22854 }
22855}
22856}
22857
22858 abuf->written = written;
22859 return vpc;
22860#undef FLD
22861}
22862
22863/* mqsrahi: mqsrahi$pack $FRintieven,$u6,$FRintkeven */
22864
22865static SEM_PC
22866SEM_FN_NAME (frvbf,mqsrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22867{
22868#define FLD(f) abuf->fields.sfmt_mqsllhi.f
22869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22870 int UNUSED written = 0;
22871 IADDR UNUSED pc = abuf->addr;
22872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22873
22874if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22875frvbf_media_register_not_aligned (current_cpu);
22876} else {
22877{
22878 {
22879 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22880 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22881 written |= (1 << 9);
22882 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22883 }
22884 {
22885 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22886 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22887 written |= (1 << 10);
22888 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22889 }
22890 {
b29791a8
DE
22891 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22892 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22893 written |= (1 << 11);
22894 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22895 }
22896 {
b29791a8
DE
22897 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22898 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22899 written |= (1 << 13);
22900 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22901 }
22902 {
b29791a8
DE
22903 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22904 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22905 written |= (1 << 12);
22906 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22907 }
22908 {
b29791a8
DE
22909 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22910 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22911 written |= (1 << 14);
22912 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22913 }
22914}
22915}
22916
22917 abuf->written = written;
22918 return vpc;
22919#undef FLD
22920}
22921
b34f6357
DB
22922/* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22923
22924static SEM_PC
22925SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22926{
22927#define FLD(f) abuf->fields.sfmt_mdasaccs.f
22928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22929 int UNUSED written = 0;
22930 IADDR UNUSED pc = abuf->addr;
22931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22932
e930b1f5
DB
22933if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22934if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
22935if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22936frvbf_media_acc_not_aligned (current_cpu);
22937} else {
22938{
22939 DI tmp_tmp;
b29791a8 22940 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 22941if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
22942{
22943 {
bce3bbcb 22944 DI opval = MAKEDI (127, 0xffffffff);
b34f6357 22945 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22946 written |= (1 << 4);
b34f6357
DB
22947 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22948 }
22949frvbf_media_overflow (current_cpu, 8);
22950}
22951} else {
bce3bbcb 22952if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
22953{
22954 {
bce3bbcb 22955 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357 22956 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22957 written |= (1 << 4);
b34f6357
DB
22958 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22959 }
22960frvbf_media_overflow (current_cpu, 8);
22961}
22962} else {
22963 {
22964 DI opval = tmp_tmp;
22965 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22966 written |= (1 << 4);
b34f6357
DB
22967 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22968 }
22969}
22970}
22971}
e930b1f5
DB
22972}
22973}
b34f6357
DB
22974}
22975
22976 abuf->written = written;
22977 return vpc;
22978#undef FLD
22979}
22980
22981/* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22982
22983static SEM_PC
22984SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22985{
22986#define FLD(f) abuf->fields.sfmt_mdasaccs.f
22987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22988 int UNUSED written = 0;
22989 IADDR UNUSED pc = abuf->addr;
22990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22991
e930b1f5
DB
22992if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22993if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
22994if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22995frvbf_media_acc_not_aligned (current_cpu);
22996} else {
22997{
22998 DI tmp_tmp;
b29791a8 22999 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23000if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23001{
23002 {
bce3bbcb 23003 DI opval = MAKEDI (127, 0xffffffff);
b34f6357 23004 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23005 written |= (1 << 4);
b34f6357
DB
23006 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23007 }
23008frvbf_media_overflow (current_cpu, 8);
23009}
23010} else {
bce3bbcb 23011if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23012{
23013 {
bce3bbcb 23014 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357 23015 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23016 written |= (1 << 4);
b34f6357
DB
23017 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23018 }
23019frvbf_media_overflow (current_cpu, 8);
23020}
23021} else {
23022 {
23023 DI opval = tmp_tmp;
23024 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23025 written |= (1 << 4);
b34f6357
DB
23026 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23027 }
23028}
23029}
23030}
e930b1f5
DB
23031}
23032}
b34f6357
DB
23033}
23034
23035 abuf->written = written;
23036 return vpc;
23037#undef FLD
23038}
23039
23040/* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
23041
23042static SEM_PC
23043SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23044{
23045#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23046 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23047 int UNUSED written = 0;
23048 IADDR UNUSED pc = abuf->addr;
23049 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23050
e930b1f5
DB
23051if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23052if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23053if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23054frvbf_media_acc_not_aligned (current_cpu);
23055} else {
23056if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23057frvbf_media_acc_not_aligned (current_cpu);
23058} else {
23059{
23060{
23061 DI tmp_tmp;
b29791a8 23062 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23063if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23064{
23065 {
bce3bbcb 23066 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
23067 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23068 written |= (1 << 6);
23069 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23070 }
23071frvbf_media_overflow (current_cpu, 8);
23072}
23073} else {
bce3bbcb 23074if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23075{
23076 {
bce3bbcb 23077 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
23078 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23079 written |= (1 << 6);
23080 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23081 }
23082frvbf_media_overflow (current_cpu, 8);
23083}
23084} else {
23085 {
23086 DI opval = tmp_tmp;
23087 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23088 written |= (1 << 6);
23089 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23090 }
23091}
23092}
23093}
23094{
23095 DI tmp_tmp;
b29791a8 23096 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23097if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23098{
23099 {
bce3bbcb 23100 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23101 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23102 written |= (1 << 7);
23103 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23104 }
23105frvbf_media_overflow (current_cpu, 4);
23106}
23107} else {
bce3bbcb 23108if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23109{
23110 {
bce3bbcb 23111 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23112 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23113 written |= (1 << 7);
23114 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23115 }
23116frvbf_media_overflow (current_cpu, 4);
23117}
23118} else {
23119 {
23120 DI opval = tmp_tmp;
b29791a8 23121 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23122 written |= (1 << 7);
23123 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23124 }
23125}
23126}
23127}
23128}
23129}
e930b1f5
DB
23130}
23131}
b34f6357
DB
23132}
23133
23134 abuf->written = written;
23135 return vpc;
23136#undef FLD
23137}
23138
23139/* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23140
23141static SEM_PC
23142SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23143{
23144#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23146 int UNUSED written = 0;
23147 IADDR UNUSED pc = abuf->addr;
23148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23149
e930b1f5
DB
23150if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23151if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23152if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23153frvbf_media_acc_not_aligned (current_cpu);
23154} else {
23155if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23156frvbf_media_acc_not_aligned (current_cpu);
23157} else {
23158{
23159{
23160 DI tmp_tmp;
b29791a8 23161 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23162if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23163{
23164 {
bce3bbcb 23165 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
23166 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23167 written |= (1 << 6);
23168 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23169 }
23170frvbf_media_overflow (current_cpu, 8);
23171}
23172} else {
bce3bbcb 23173if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23174{
23175 {
bce3bbcb 23176 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
23177 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23178 written |= (1 << 6);
23179 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23180 }
23181frvbf_media_overflow (current_cpu, 8);
23182}
23183} else {
23184 {
23185 DI opval = tmp_tmp;
23186 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23187 written |= (1 << 6);
23188 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23189 }
23190}
23191}
23192}
23193{
23194 DI tmp_tmp;
b29791a8 23195 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23196if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23197{
23198 {
bce3bbcb 23199 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23200 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23201 written |= (1 << 7);
23202 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23203 }
23204frvbf_media_overflow (current_cpu, 4);
23205}
23206} else {
bce3bbcb 23207if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23208{
23209 {
bce3bbcb 23210 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23211 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23212 written |= (1 << 7);
23213 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23214 }
23215frvbf_media_overflow (current_cpu, 4);
23216}
23217} else {
23218 {
23219 DI opval = tmp_tmp;
b29791a8 23220 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23221 written |= (1 << 7);
23222 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23223 }
23224}
23225}
23226}
23227}
23228}
e930b1f5
DB
23229}
23230}
b34f6357
DB
23231}
23232
23233 abuf->written = written;
23234 return vpc;
23235#undef FLD
23236}
23237
23238/* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23239
23240static SEM_PC
23241SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23242{
23243#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23245 int UNUSED written = 0;
23246 IADDR UNUSED pc = abuf->addr;
23247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23248
e930b1f5
DB
23249if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23250if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23251if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23252frvbf_media_acc_not_aligned (current_cpu);
23253} else {
23254if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23255frvbf_media_acc_not_aligned (current_cpu);
23256} else {
23257{
23258{
23259 DI tmp_tmp;
b29791a8 23260 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23261if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23262{
23263 {
bce3bbcb 23264 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
23265 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23266 written |= (1 << 4);
23267 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23268 }
23269frvbf_media_overflow (current_cpu, 8);
23270}
23271} else {
bce3bbcb 23272if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23273{
23274 {
bce3bbcb 23275 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
23276 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23277 written |= (1 << 4);
23278 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23279 }
23280frvbf_media_overflow (current_cpu, 8);
23281}
23282} else {
23283 {
23284 DI opval = tmp_tmp;
23285 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23286 written |= (1 << 4);
23287 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23288 }
23289}
23290}
23291}
23292{
23293 DI tmp_tmp;
b29791a8 23294 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23295if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23296{
23297 {
bce3bbcb 23298 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23299 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23300 written |= (1 << 5);
23301 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23302 }
23303frvbf_media_overflow (current_cpu, 4);
23304}
23305} else {
bce3bbcb 23306if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23307{
23308 {
bce3bbcb 23309 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23310 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23311 written |= (1 << 5);
23312 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23313 }
23314frvbf_media_overflow (current_cpu, 4);
23315}
23316} else {
23317 {
23318 DI opval = tmp_tmp;
b29791a8 23319 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23320 written |= (1 << 5);
23321 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23322 }
23323}
23324}
23325}
23326}
23327}
e930b1f5
DB
23328}
23329}
b34f6357
DB
23330}
23331
23332 abuf->written = written;
23333 return vpc;
23334#undef FLD
23335}
23336
23337/* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23338
23339static SEM_PC
23340SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23341{
23342#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23344 int UNUSED written = 0;
23345 IADDR UNUSED pc = abuf->addr;
23346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23347
e930b1f5
DB
23348if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23349if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23350if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23351frvbf_media_acc_not_aligned (current_cpu);
23352} else {
23353if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23354frvbf_media_acc_not_aligned (current_cpu);
23355} else {
23356{
23357{
23358 DI tmp_tmp;
b29791a8 23359 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23360if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23361{
23362 {
bce3bbcb 23363 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
23364 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23365 written |= (1 << 6);
23366 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23367 }
23368frvbf_media_overflow (current_cpu, 8);
23369}
23370} else {
bce3bbcb 23371if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23372{
23373 {
bce3bbcb 23374 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
23375 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23376 written |= (1 << 6);
23377 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23378 }
23379frvbf_media_overflow (current_cpu, 8);
23380}
23381} else {
23382 {
23383 DI opval = tmp_tmp;
23384 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23385 written |= (1 << 6);
23386 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23387 }
23388}
23389}
23390}
23391{
23392 DI tmp_tmp;
b29791a8 23393 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23394if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23395{
23396 {
bce3bbcb 23397 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23398 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23399 written |= (1 << 7);
23400 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23401 }
23402frvbf_media_overflow (current_cpu, 4);
23403}
23404} else {
bce3bbcb 23405if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23406{
23407 {
bce3bbcb 23408 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23409 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23410 written |= (1 << 7);
23411 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23412 }
23413frvbf_media_overflow (current_cpu, 4);
23414}
23415} else {
23416 {
23417 DI opval = tmp_tmp;
b29791a8 23418 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23419 written |= (1 << 7);
23420 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23421 }
23422}
23423}
23424}
23425{
23426 DI tmp_tmp;
b29791a8 23427 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23428if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23429{
23430 {
bce3bbcb 23431 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23432 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23433 written |= (1 << 8);
23434 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23435 }
23436frvbf_media_overflow (current_cpu, 2);
23437}
23438} else {
bce3bbcb 23439if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23440{
23441 {
bce3bbcb 23442 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23443 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23444 written |= (1 << 8);
23445 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23446 }
23447frvbf_media_overflow (current_cpu, 2);
23448}
23449} else {
23450 {
23451 DI opval = tmp_tmp;
b29791a8 23452 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23453 written |= (1 << 8);
23454 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23455 }
23456}
23457}
23458}
23459{
23460 DI tmp_tmp;
b29791a8 23461 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23462if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23463{
23464 {
bce3bbcb 23465 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23466 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23467 written |= (1 << 9);
23468 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23469 }
23470frvbf_media_overflow (current_cpu, 1);
23471}
23472} else {
bce3bbcb 23473if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23474{
23475 {
bce3bbcb 23476 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23477 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23478 written |= (1 << 9);
23479 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23480 }
23481frvbf_media_overflow (current_cpu, 1);
23482}
23483} else {
23484 {
23485 DI opval = tmp_tmp;
b29791a8 23486 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23487 written |= (1 << 9);
23488 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23489 }
23490}
23491}
23492}
23493}
23494}
e930b1f5
DB
23495}
23496}
b34f6357
DB
23497}
23498
23499 abuf->written = written;
23500 return vpc;
23501#undef FLD
23502}
23503
23504/* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23505
23506static SEM_PC
23507SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23508{
23509#define FLD(f) abuf->fields.sfmt_cmmachs.f
23510 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23511 int UNUSED written = 0;
23512 IADDR UNUSED pc = abuf->addr;
23513 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23514
e930b1f5 23515if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23516if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23517frvbf_media_acc_not_aligned (current_cpu);
23518} else {
23519{
23520 HI tmp_argihi;
23521 HI tmp_argilo;
23522 HI tmp_argjhi;
23523 HI tmp_argjlo;
23524{
b29791a8
DE
23525 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23526 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23527 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23528 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23529}
23530 {
23531 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23532 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23533 written |= (1 << 9);
23534 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23535 }
23536 {
23537 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 23538 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23539 written |= (1 << 10);
23540 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23541 }
23542}
e930b1f5 23543}
b34f6357
DB
23544}
23545
23546 abuf->written = written;
23547 return vpc;
23548#undef FLD
23549}
23550
23551/* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23552
23553static SEM_PC
23554SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23555{
23556#define FLD(f) abuf->fields.sfmt_cmmachs.f
23557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23558 int UNUSED written = 0;
23559 IADDR UNUSED pc = abuf->addr;
23560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23561
e930b1f5 23562if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23563if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23564frvbf_media_acc_not_aligned (current_cpu);
23565} else {
23566{
23567 UHI tmp_argihi;
23568 UHI tmp_argilo;
23569 UHI tmp_argjhi;
23570 UHI tmp_argjlo;
23571{
b29791a8
DE
23572 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23573 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23574 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23575 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23576}
23577 {
23578 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23579 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23580 written |= (1 << 9);
23581 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23582 }
23583 {
23584 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 23585 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23586 written |= (1 << 10);
23587 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23588 }
23589}
e930b1f5 23590}
b34f6357
DB
23591}
23592
23593 abuf->written = written;
23594 return vpc;
23595#undef FLD
23596}
23597
23598/* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23599
23600static SEM_PC
23601SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23602{
23603#define FLD(f) abuf->fields.sfmt_cmmachs.f
23604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23605 int UNUSED written = 0;
23606 IADDR UNUSED pc = abuf->addr;
23607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23608
e930b1f5 23609if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23610if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23611frvbf_media_acc_not_aligned (current_cpu);
23612} else {
23613{
23614 HI tmp_argihi;
23615 HI tmp_argilo;
23616 HI tmp_argjhi;
23617 HI tmp_argjlo;
23618{
b29791a8
DE
23619 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23620 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23621 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23622 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23623}
23624 {
23625 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23626 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23627 written |= (1 << 9);
23628 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23629 }
23630 {
23631 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
b29791a8 23632 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23633 written |= (1 << 10);
23634 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23635 }
23636}
e930b1f5 23637}
b34f6357
DB
23638}
23639
23640 abuf->written = written;
23641 return vpc;
23642#undef FLD
23643}
23644
23645/* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23646
23647static SEM_PC
23648SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23649{
23650#define FLD(f) abuf->fields.sfmt_cmmachs.f
23651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23652 int UNUSED written = 0;
23653 IADDR UNUSED pc = abuf->addr;
23654 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23655
e930b1f5 23656if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23657if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23658frvbf_media_acc_not_aligned (current_cpu);
23659} else {
23660{
23661 UHI tmp_argihi;
23662 UHI tmp_argilo;
23663 UHI tmp_argjhi;
23664 UHI tmp_argjlo;
23665{
b29791a8
DE
23666 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23667 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23668 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23669 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23670}
23671 {
23672 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23673 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23674 written |= (1 << 9);
23675 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23676 }
23677 {
23678 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
b29791a8 23679 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23680 written |= (1 << 10);
23681 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23682 }
23683}
e930b1f5 23684}
b34f6357
DB
23685}
23686
23687 abuf->written = written;
23688 return vpc;
23689#undef FLD
23690}
23691
23692/* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23693
23694static SEM_PC
23695SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23696{
23697#define FLD(f) abuf->fields.sfmt_cmmachs.f
23698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23699 int UNUSED written = 0;
23700 IADDR UNUSED pc = abuf->addr;
23701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23702
e930b1f5 23703if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23704if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23705frvbf_media_acc_not_aligned (current_cpu);
23706} else {
23707if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23708{
23709 HI tmp_argihi;
23710 HI tmp_argilo;
23711 HI tmp_argjhi;
23712 HI tmp_argjlo;
23713{
b29791a8
DE
23714 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23715 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23716 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23717 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23718}
23719 {
23720 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23721 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23722 written |= (1 << 11);
23723 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23724 }
23725 {
23726 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 23727 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23728 written |= (1 << 12);
23729 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23730 }
23731}
23732}
e930b1f5 23733}
b34f6357
DB
23734}
23735
23736 abuf->written = written;
23737 return vpc;
23738#undef FLD
23739}
23740
23741/* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23742
23743static SEM_PC
23744SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23745{
23746#define FLD(f) abuf->fields.sfmt_cmmachs.f
23747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23748 int UNUSED written = 0;
23749 IADDR UNUSED pc = abuf->addr;
23750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23751
e930b1f5 23752if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23753if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23754frvbf_media_acc_not_aligned (current_cpu);
23755} else {
23756if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23757{
23758 UHI tmp_argihi;
23759 UHI tmp_argilo;
23760 UHI tmp_argjhi;
23761 UHI tmp_argjlo;
23762{
b29791a8
DE
23763 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23764 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23765 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23766 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23767}
23768 {
23769 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23770 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23771 written |= (1 << 11);
23772 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23773 }
23774 {
23775 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 23776 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23777 written |= (1 << 12);
23778 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23779 }
23780}
23781}
e930b1f5 23782}
b34f6357
DB
23783}
23784
23785 abuf->written = written;
23786 return vpc;
23787#undef FLD
23788}
23789
23790/* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23791
23792static SEM_PC
23793SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23794{
23795#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23796 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23797 int UNUSED written = 0;
23798 IADDR UNUSED pc = abuf->addr;
23799 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23800
e930b1f5 23801if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23802if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23803frvbf_media_acc_not_aligned (current_cpu);
23804} else {
23805if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23806frvbf_media_register_not_aligned (current_cpu);
23807} else {
23808{
23809 HI tmp_argihi;
23810 HI tmp_argilo;
23811 HI tmp_argjhi;
23812 HI tmp_argjlo;
23813{
b29791a8
DE
23814 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23815 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23816 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23817 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23818}
23819 {
23820 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23821 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23822 written |= (1 << 13);
23823 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23824 }
23825 {
23826 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 23827 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23828 written |= (1 << 14);
23829 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23830 }
23831{
b29791a8
DE
23832 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23833 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23834 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23835 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23836}
23837 {
23838 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b29791a8 23839 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23840 written |= (1 << 15);
23841 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23842 }
23843 {
23844 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 23845 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23846 written |= (1 << 16);
23847 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23848 }
23849}
23850}
e930b1f5 23851}
b34f6357
DB
23852}
23853
23854 abuf->written = written;
23855 return vpc;
23856#undef FLD
23857}
23858
23859/* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23860
23861static SEM_PC
23862SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23863{
23864#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23866 int UNUSED written = 0;
23867 IADDR UNUSED pc = abuf->addr;
23868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23869
e930b1f5 23870if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23871if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23872frvbf_media_acc_not_aligned (current_cpu);
23873} else {
23874if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23875frvbf_media_register_not_aligned (current_cpu);
23876} else {
23877{
23878 UHI tmp_argihi;
23879 UHI tmp_argilo;
23880 UHI tmp_argjhi;
23881 UHI tmp_argjlo;
23882{
b29791a8
DE
23883 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23884 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23885 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23886 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23887}
23888 {
23889 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23890 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23891 written |= (1 << 13);
23892 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23893 }
23894 {
23895 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 23896 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23897 written |= (1 << 14);
23898 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23899 }
23900{
b29791a8
DE
23901 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23902 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23903 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23904 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23905}
23906 {
23907 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b29791a8 23908 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23909 written |= (1 << 15);
23910 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23911 }
23912 {
23913 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 23914 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23915 written |= (1 << 16);
23916 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23917 }
23918}
23919}
e930b1f5 23920}
b34f6357
DB
23921}
23922
23923 abuf->written = written;
23924 return vpc;
23925#undef FLD
23926}
23927
23928/* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23929
23930static SEM_PC
23931SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23932{
23933#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23935 int UNUSED written = 0;
23936 IADDR UNUSED pc = abuf->addr;
23937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23938
e930b1f5 23939if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23940if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23941frvbf_media_acc_not_aligned (current_cpu);
23942} else {
23943if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23944frvbf_media_register_not_aligned (current_cpu);
23945} else {
23946{
23947 HI tmp_argihi;
23948 HI tmp_argilo;
23949 HI tmp_argjhi;
23950 HI tmp_argjlo;
23951{
b29791a8
DE
23952 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23953 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23954 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23955 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23956}
23957 {
23958 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23959 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23960 written |= (1 << 13);
23961 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23962 }
23963 {
23964 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
b29791a8 23965 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23966 written |= (1 << 14);
23967 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23968 }
23969{
b29791a8
DE
23970 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23971 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23972 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23973 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23974}
23975 {
23976 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
b29791a8 23977 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23978 written |= (1 << 15);
23979 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23980 }
23981 {
23982 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
b29791a8 23983 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23984 written |= (1 << 16);
23985 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23986 }
23987}
23988}
e930b1f5 23989}
b34f6357
DB
23990}
23991
23992 abuf->written = written;
23993 return vpc;
23994#undef FLD
23995}
23996
23997/* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23998
23999static SEM_PC
24000SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24001{
24002#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24004 int UNUSED written = 0;
24005 IADDR UNUSED pc = abuf->addr;
24006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24007
e930b1f5 24008if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24009if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24010frvbf_media_acc_not_aligned (current_cpu);
24011} else {
24012if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24013frvbf_media_register_not_aligned (current_cpu);
24014} else {
24015{
24016 UHI tmp_argihi;
24017 UHI tmp_argilo;
24018 UHI tmp_argjhi;
24019 UHI tmp_argjlo;
24020{
b29791a8
DE
24021 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24022 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24023 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24024 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24025}
24026 {
24027 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24028 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24029 written |= (1 << 13);
24030 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24031 }
24032 {
24033 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
b29791a8 24034 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24035 written |= (1 << 14);
24036 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24037 }
24038{
b29791a8
DE
24039 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24040 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24041 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24042 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24043}
24044 {
24045 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
b29791a8 24046 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24047 written |= (1 << 15);
24048 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24049 }
24050 {
24051 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
b29791a8 24052 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24053 written |= (1 << 16);
24054 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24055 }
24056}
24057}
e930b1f5 24058}
b34f6357
DB
24059}
24060
24061 abuf->written = written;
24062 return vpc;
24063#undef FLD
24064}
24065
24066/* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24067
24068static SEM_PC
24069SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24070{
24071#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24072 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24073 int UNUSED written = 0;
24074 IADDR UNUSED pc = abuf->addr;
24075 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24076
e930b1f5 24077if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24078if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24079frvbf_media_acc_not_aligned (current_cpu);
24080} else {
24081if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24082frvbf_media_register_not_aligned (current_cpu);
24083} else {
24084if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24085{
24086 HI tmp_argihi;
24087 HI tmp_argilo;
24088 HI tmp_argjhi;
24089 HI tmp_argjlo;
24090{
b29791a8
DE
24091 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24092 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24093 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24094 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24095}
24096 {
24097 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24098 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24099 written |= (1 << 15);
24100 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24101 }
24102 {
24103 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 24104 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24105 written |= (1 << 16);
24106 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24107 }
24108{
b29791a8
DE
24109 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24110 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24111 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24112 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24113}
24114 {
24115 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b29791a8 24116 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24117 written |= (1 << 17);
24118 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24119 }
24120 {
24121 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 24122 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24123 written |= (1 << 18);
24124 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24125 }
24126}
24127}
24128}
e930b1f5 24129}
b34f6357
DB
24130}
24131
24132 abuf->written = written;
24133 return vpc;
24134#undef FLD
24135}
24136
24137/* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24138
24139static SEM_PC
24140SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24141{
24142#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24144 int UNUSED written = 0;
24145 IADDR UNUSED pc = abuf->addr;
24146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24147
e930b1f5 24148if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24149if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24150frvbf_media_acc_not_aligned (current_cpu);
24151} else {
24152if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24153frvbf_media_register_not_aligned (current_cpu);
24154} else {
24155if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24156{
24157 UHI tmp_argihi;
24158 UHI tmp_argilo;
24159 UHI tmp_argjhi;
24160 UHI tmp_argjlo;
24161{
b29791a8
DE
24162 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24163 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24164 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24165 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24166}
24167 {
24168 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24169 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24170 written |= (1 << 15);
24171 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24172 }
24173 {
24174 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 24175 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24176 written |= (1 << 16);
24177 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24178 }
24179{
b29791a8
DE
24180 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24181 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24182 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24183 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24184}
24185 {
24186 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b29791a8 24187 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24188 written |= (1 << 17);
24189 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24190 }
24191 {
24192 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 24193 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24194 written |= (1 << 18);
24195 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24196 }
24197}
24198}
24199}
e930b1f5 24200}
b34f6357
DB
24201}
24202
24203 abuf->written = written;
24204 return vpc;
24205#undef FLD
24206}
24207
24208/* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24209
24210static SEM_PC
24211SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24212{
24213#define FLD(f) abuf->fields.sfmt_cmmachs.f
24214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24215 int UNUSED written = 0;
24216 IADDR UNUSED pc = abuf->addr;
24217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24218
e930b1f5 24219if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24220if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24221frvbf_media_acc_not_aligned (current_cpu);
24222} else {
24223{
24224 HI tmp_argihi;
24225 HI tmp_argilo;
24226 HI tmp_argjhi;
24227 HI tmp_argjlo;
24228{
b29791a8
DE
24229 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24230 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24231 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24232 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24233}
24234{
24235 DI tmp_tmp;
24236 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24237if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24238{
24239 {
24240 DI opval = MAKEDI (127, 0xffffffff);
24241 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24242 written |= (1 << 11);
24243 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24244 }
24245frvbf_media_overflow (current_cpu, 8);
24246}
24247} else {
24248if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24249{
24250 {
24251 DI opval = MAKEDI (0xffffff80, 0);
24252 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24253 written |= (1 << 11);
24254 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24255 }
24256frvbf_media_overflow (current_cpu, 8);
24257}
24258} else {
24259 {
24260 DI opval = tmp_tmp;
24261 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24262 written |= (1 << 11);
24263 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24264 }
24265}
24266}
24267}
24268{
24269 DI tmp_tmp;
b29791a8 24270 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24271if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24272{
24273 {
24274 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24275 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24276 written |= (1 << 12);
24277 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24278 }
24279frvbf_media_overflow (current_cpu, 4);
24280}
24281} else {
24282if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24283{
24284 {
24285 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24286 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24287 written |= (1 << 12);
24288 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24289 }
24290frvbf_media_overflow (current_cpu, 4);
24291}
24292} else {
24293 {
24294 DI opval = tmp_tmp;
b29791a8 24295 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24296 written |= (1 << 12);
24297 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24298 }
24299}
24300}
24301}
24302}
e930b1f5 24303}
b34f6357
DB
24304}
24305
24306 abuf->written = written;
24307 return vpc;
24308#undef FLD
24309}
24310
24311/* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24312
24313static SEM_PC
24314SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24315{
24316#define FLD(f) abuf->fields.sfmt_cmmachu.f
24317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24318 int UNUSED written = 0;
24319 IADDR UNUSED pc = abuf->addr;
24320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24321
e930b1f5 24322if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24323if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24324frvbf_media_acc_not_aligned (current_cpu);
24325} else {
24326{
24327 UHI tmp_argihi;
24328 UHI tmp_argilo;
24329 UHI tmp_argjhi;
24330 UHI tmp_argjlo;
24331{
b29791a8
DE
24332 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24333 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24334 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24335 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24336}
24337{
24338 DI tmp_tmp;
24339 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24340if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24341{
24342 {
24343 UDI opval = MAKEDI (255, 0xffffffff);
24344 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24345 written |= (1 << 11);
24346 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24347 }
24348frvbf_media_overflow (current_cpu, 8);
24349}
24350} else {
24351if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24352{
24353 {
24354 UDI opval = MAKEDI (0, 0);
24355 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24356 written |= (1 << 11);
24357 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24358 }
24359frvbf_media_overflow (current_cpu, 8);
24360}
24361} else {
24362 {
24363 UDI opval = tmp_tmp;
24364 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24365 written |= (1 << 11);
24366 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24367 }
24368}
24369}
24370}
24371{
24372 DI tmp_tmp;
b29791a8 24373 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24374if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24375{
24376 {
24377 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24378 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24379 written |= (1 << 12);
24380 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24381 }
24382frvbf_media_overflow (current_cpu, 4);
24383}
24384} else {
24385if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24386{
24387 {
24388 UDI opval = MAKEDI (0, 0);
b29791a8 24389 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24390 written |= (1 << 12);
24391 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24392 }
24393frvbf_media_overflow (current_cpu, 4);
24394}
24395} else {
24396 {
24397 UDI opval = tmp_tmp;
b29791a8 24398 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24399 written |= (1 << 12);
24400 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24401 }
24402}
24403}
24404}
24405}
e930b1f5 24406}
b34f6357
DB
24407}
24408
24409 abuf->written = written;
24410 return vpc;
24411#undef FLD
24412}
24413
24414/* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24415
24416static SEM_PC
24417SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24418{
24419#define FLD(f) abuf->fields.sfmt_cmmachs.f
24420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24421 int UNUSED written = 0;
24422 IADDR UNUSED pc = abuf->addr;
24423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24424
e930b1f5 24425if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24426if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24427frvbf_media_acc_not_aligned (current_cpu);
24428} else {
24429{
24430 HI tmp_argihi;
24431 HI tmp_argilo;
24432 HI tmp_argjhi;
24433 HI tmp_argjlo;
24434{
b29791a8
DE
24435 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24436 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24437 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24438 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24439}
24440{
24441 DI tmp_tmp;
24442 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24443if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24444{
24445 {
24446 DI opval = MAKEDI (127, 0xffffffff);
24447 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24448 written |= (1 << 11);
24449 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24450 }
24451frvbf_media_overflow (current_cpu, 8);
24452}
24453} else {
24454if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24455{
24456 {
24457 DI opval = MAKEDI (0xffffff80, 0);
24458 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24459 written |= (1 << 11);
24460 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24461 }
24462frvbf_media_overflow (current_cpu, 8);
24463}
24464} else {
24465 {
24466 DI opval = tmp_tmp;
24467 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24468 written |= (1 << 11);
24469 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24470 }
24471}
24472}
24473}
24474{
24475 DI tmp_tmp;
b29791a8 24476 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24477if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24478{
24479 {
24480 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24481 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24482 written |= (1 << 12);
24483 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24484 }
24485frvbf_media_overflow (current_cpu, 4);
24486}
24487} else {
24488if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24489{
24490 {
24491 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24492 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24493 written |= (1 << 12);
24494 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24495 }
24496frvbf_media_overflow (current_cpu, 4);
24497}
24498} else {
24499 {
24500 DI opval = tmp_tmp;
b29791a8 24501 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24502 written |= (1 << 12);
24503 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24504 }
24505}
24506}
24507}
24508}
e930b1f5 24509}
b34f6357
DB
24510}
24511
24512 abuf->written = written;
24513 return vpc;
24514#undef FLD
24515}
24516
24517/* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24518
24519static SEM_PC
24520SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24521{
24522#define FLD(f) abuf->fields.sfmt_cmmachu.f
24523 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24524 int UNUSED written = 0;
24525 IADDR UNUSED pc = abuf->addr;
24526 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24527
e930b1f5 24528if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24529if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24530frvbf_media_acc_not_aligned (current_cpu);
24531} else {
24532{
24533 UHI tmp_argihi;
24534 UHI tmp_argilo;
24535 UHI tmp_argjhi;
24536 UHI tmp_argjlo;
24537{
b29791a8
DE
24538 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24539 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24540 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24541 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24542}
24543{
24544 DI tmp_tmp;
24545 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24546if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24547{
24548 {
24549 UDI opval = MAKEDI (255, 0xffffffff);
24550 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24551 written |= (1 << 11);
24552 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24553 }
24554frvbf_media_overflow (current_cpu, 8);
24555}
24556} else {
24557if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24558{
24559 {
24560 UDI opval = MAKEDI (0, 0);
24561 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24562 written |= (1 << 11);
24563 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24564 }
24565frvbf_media_overflow (current_cpu, 8);
24566}
24567} else {
24568 {
24569 UDI opval = tmp_tmp;
24570 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24571 written |= (1 << 11);
24572 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24573 }
24574}
24575}
24576}
24577{
24578 DI tmp_tmp;
b29791a8 24579 tmp_tmp = SUBDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24580if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24581{
24582 {
24583 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24584 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24585 written |= (1 << 12);
24586 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24587 }
24588frvbf_media_overflow (current_cpu, 4);
24589}
24590} else {
24591if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24592{
24593 {
24594 UDI opval = MAKEDI (0, 0);
b29791a8 24595 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24596 written |= (1 << 12);
24597 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24598 }
24599frvbf_media_overflow (current_cpu, 4);
24600}
24601} else {
24602 {
24603 UDI opval = tmp_tmp;
b29791a8 24604 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24605 written |= (1 << 12);
24606 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24607 }
24608}
24609}
24610}
24611}
e930b1f5 24612}
b34f6357
DB
24613}
24614
24615 abuf->written = written;
24616 return vpc;
24617#undef FLD
24618}
24619
24620/* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24621
24622static SEM_PC
24623SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24624{
24625#define FLD(f) abuf->fields.sfmt_cmmachs.f
24626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24627 int UNUSED written = 0;
24628 IADDR UNUSED pc = abuf->addr;
24629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24630
e930b1f5 24631if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24632if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24633frvbf_media_acc_not_aligned (current_cpu);
24634} else {
24635if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24636{
24637 HI tmp_argihi;
24638 HI tmp_argilo;
24639 HI tmp_argjhi;
24640 HI tmp_argjlo;
24641{
b29791a8
DE
24642 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24643 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24644 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24645 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24646}
24647{
24648 DI tmp_tmp;
24649 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24650if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24651{
24652 {
24653 DI opval = MAKEDI (127, 0xffffffff);
24654 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24655 written |= (1 << 13);
24656 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24657 }
24658frvbf_media_overflow (current_cpu, 8);
24659}
24660} else {
24661if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24662{
24663 {
24664 DI opval = MAKEDI (0xffffff80, 0);
24665 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24666 written |= (1 << 13);
24667 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24668 }
24669frvbf_media_overflow (current_cpu, 8);
24670}
24671} else {
24672 {
24673 DI opval = tmp_tmp;
24674 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24675 written |= (1 << 13);
24676 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24677 }
24678}
24679}
24680}
24681{
24682 DI tmp_tmp;
b29791a8 24683 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24684if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24685{
24686 {
24687 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24688 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24689 written |= (1 << 14);
24690 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24691 }
24692frvbf_media_overflow (current_cpu, 4);
24693}
24694} else {
24695if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24696{
24697 {
24698 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24699 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24700 written |= (1 << 14);
24701 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24702 }
24703frvbf_media_overflow (current_cpu, 4);
24704}
24705} else {
24706 {
24707 DI opval = tmp_tmp;
b29791a8 24708 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24709 written |= (1 << 14);
24710 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24711 }
24712}
24713}
24714}
24715}
24716}
e930b1f5 24717}
b34f6357
DB
24718}
24719
24720 abuf->written = written;
24721 return vpc;
24722#undef FLD
24723}
24724
24725/* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24726
24727static SEM_PC
24728SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24729{
24730#define FLD(f) abuf->fields.sfmt_cmmachu.f
24731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24732 int UNUSED written = 0;
24733 IADDR UNUSED pc = abuf->addr;
24734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24735
e930b1f5 24736if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24737if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24738frvbf_media_acc_not_aligned (current_cpu);
24739} else {
24740if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24741{
24742 UHI tmp_argihi;
24743 UHI tmp_argilo;
24744 UHI tmp_argjhi;
24745 UHI tmp_argjlo;
24746{
b29791a8
DE
24747 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24748 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24749 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24750 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24751}
24752{
24753 DI tmp_tmp;
24754 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24755if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24756{
24757 {
24758 UDI opval = MAKEDI (255, 0xffffffff);
24759 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24760 written |= (1 << 13);
24761 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24762 }
24763frvbf_media_overflow (current_cpu, 8);
24764}
24765} else {
24766if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24767{
24768 {
24769 UDI opval = MAKEDI (0, 0);
24770 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24771 written |= (1 << 13);
24772 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24773 }
24774frvbf_media_overflow (current_cpu, 8);
24775}
24776} else {
24777 {
24778 UDI opval = tmp_tmp;
24779 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24780 written |= (1 << 13);
24781 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24782 }
24783}
24784}
24785}
24786{
24787 DI tmp_tmp;
b29791a8 24788 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24789if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24790{
24791 {
24792 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24793 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24794 written |= (1 << 14);
24795 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24796 }
24797frvbf_media_overflow (current_cpu, 4);
24798}
24799} else {
24800if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24801{
24802 {
24803 UDI opval = MAKEDI (0, 0);
b29791a8 24804 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24805 written |= (1 << 14);
24806 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24807 }
24808frvbf_media_overflow (current_cpu, 4);
24809}
24810} else {
24811 {
24812 UDI opval = tmp_tmp;
b29791a8 24813 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24814 written |= (1 << 14);
24815 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24816 }
24817}
24818}
24819}
24820}
24821}
e930b1f5 24822}
b34f6357
DB
24823}
24824
24825 abuf->written = written;
24826 return vpc;
24827#undef FLD
24828}
24829
24830/* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24831
24832static SEM_PC
24833SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24834{
24835#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24837 int UNUSED written = 0;
24838 IADDR UNUSED pc = abuf->addr;
24839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24840
e930b1f5 24841if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24842if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24843frvbf_media_acc_not_aligned (current_cpu);
24844} else {
24845if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24846frvbf_media_register_not_aligned (current_cpu);
24847} else {
24848{
24849 HI tmp_argihi;
24850 HI tmp_argilo;
24851 HI tmp_argjhi;
24852 HI tmp_argjlo;
24853{
b29791a8
DE
24854 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24855 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24856 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24857 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24858}
24859{
24860 DI tmp_tmp;
24861 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24862if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24863{
24864 {
24865 DI opval = MAKEDI (127, 0xffffffff);
24866 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24867 written |= (1 << 17);
24868 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24869 }
24870frvbf_media_overflow (current_cpu, 8);
24871}
24872} else {
24873if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24874{
24875 {
24876 DI opval = MAKEDI (0xffffff80, 0);
24877 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24878 written |= (1 << 17);
24879 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24880 }
24881frvbf_media_overflow (current_cpu, 8);
24882}
24883} else {
24884 {
24885 DI opval = tmp_tmp;
24886 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24887 written |= (1 << 17);
24888 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24889 }
24890}
24891}
24892}
24893{
24894 DI tmp_tmp;
b29791a8 24895 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24896if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24897{
24898 {
24899 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24900 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24901 written |= (1 << 18);
24902 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24903 }
24904frvbf_media_overflow (current_cpu, 4);
24905}
24906} else {
24907if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24908{
24909 {
24910 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24911 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24912 written |= (1 << 18);
24913 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24914 }
24915frvbf_media_overflow (current_cpu, 4);
24916}
24917} else {
24918 {
24919 DI opval = tmp_tmp;
b29791a8 24920 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24921 written |= (1 << 18);
24922 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24923 }
24924}
24925}
24926}
24927{
b29791a8
DE
24928 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24929 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24930 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24931 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24932}
24933{
24934 DI tmp_tmp;
b29791a8 24935 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
24936if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24937{
24938 {
24939 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24940 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24941 written |= (1 << 19);
24942 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24943 }
24944frvbf_media_overflow (current_cpu, 2);
24945}
24946} else {
24947if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24948{
24949 {
24950 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24951 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24952 written |= (1 << 19);
24953 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24954 }
24955frvbf_media_overflow (current_cpu, 2);
24956}
24957} else {
24958 {
24959 DI opval = tmp_tmp;
b29791a8 24960 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24961 written |= (1 << 19);
24962 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24963 }
24964}
24965}
24966}
24967{
24968 DI tmp_tmp;
b29791a8 24969 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24970if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24971{
24972 {
24973 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24974 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24975 written |= (1 << 20);
24976 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24977 }
24978frvbf_media_overflow (current_cpu, 1);
24979}
24980} else {
24981if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24982{
24983 {
24984 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24985 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24986 written |= (1 << 20);
24987 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24988 }
24989frvbf_media_overflow (current_cpu, 1);
24990}
24991} else {
24992 {
24993 DI opval = tmp_tmp;
b29791a8 24994 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24995 written |= (1 << 20);
24996 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24997 }
24998}
24999}
25000}
25001}
25002}
e930b1f5 25003}
b34f6357
DB
25004}
25005
25006 abuf->written = written;
25007 return vpc;
25008#undef FLD
25009}
25010
25011/* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
25012
25013static SEM_PC
25014SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25015{
25016#define FLD(f) abuf->fields.sfmt_cmqmachu.f
25017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25018 int UNUSED written = 0;
25019 IADDR UNUSED pc = abuf->addr;
25020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25021
e930b1f5 25022if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
25023if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25024frvbf_media_acc_not_aligned (current_cpu);
25025} else {
25026if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25027frvbf_media_register_not_aligned (current_cpu);
25028} else {
25029{
25030 UHI tmp_argihi;
25031 UHI tmp_argilo;
25032 UHI tmp_argjhi;
25033 UHI tmp_argjlo;
25034{
b29791a8
DE
25035 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25036 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25037 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25038 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25039}
25040{
25041 DI tmp_tmp;
25042 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25043if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25044{
25045 {
25046 UDI opval = MAKEDI (255, 0xffffffff);
25047 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25048 written |= (1 << 17);
25049 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25050 }
25051frvbf_media_overflow (current_cpu, 8);
25052}
25053} else {
25054if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25055{
25056 {
25057 UDI opval = MAKEDI (0, 0);
25058 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25059 written |= (1 << 17);
25060 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25061 }
25062frvbf_media_overflow (current_cpu, 8);
25063}
25064} else {
25065 {
25066 UDI opval = tmp_tmp;
25067 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25068 written |= (1 << 17);
25069 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25070 }
25071}
25072}
25073}
25074{
25075 DI tmp_tmp;
b29791a8 25076 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25077if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25078{
25079 {
25080 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25081 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25082 written |= (1 << 18);
25083 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25084 }
25085frvbf_media_overflow (current_cpu, 4);
25086}
25087} else {
25088if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25089{
25090 {
25091 UDI opval = MAKEDI (0, 0);
b29791a8 25092 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25093 written |= (1 << 18);
25094 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25095 }
25096frvbf_media_overflow (current_cpu, 4);
25097}
25098} else {
25099 {
25100 UDI opval = tmp_tmp;
b29791a8 25101 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25102 written |= (1 << 18);
25103 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25104 }
25105}
25106}
25107}
25108{
b29791a8
DE
25109 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25110 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25111 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25112 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25113}
25114{
25115 DI tmp_tmp;
b29791a8 25116 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
b34f6357
DB
25117if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25118{
25119 {
25120 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25121 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25122 written |= (1 << 19);
25123 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25124 }
25125frvbf_media_overflow (current_cpu, 2);
25126}
25127} else {
25128if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25129{
25130 {
25131 UDI opval = MAKEDI (0, 0);
b29791a8 25132 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25133 written |= (1 << 19);
25134 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25135 }
25136frvbf_media_overflow (current_cpu, 2);
25137}
25138} else {
25139 {
25140 UDI opval = tmp_tmp;
b29791a8 25141 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25142 written |= (1 << 19);
25143 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25144 }
25145}
25146}
25147}
25148{
25149 DI tmp_tmp;
b29791a8 25150 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25151if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25152{
25153 {
25154 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25155 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25156 written |= (1 << 20);
25157 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25158 }
25159frvbf_media_overflow (current_cpu, 1);
25160}
25161} else {
25162if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25163{
25164 {
25165 UDI opval = MAKEDI (0, 0);
b29791a8 25166 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25167 written |= (1 << 20);
25168 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25169 }
25170frvbf_media_overflow (current_cpu, 1);
25171}
25172} else {
25173 {
25174 UDI opval = tmp_tmp;
b29791a8 25175 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25176 written |= (1 << 20);
25177 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25178 }
25179}
25180}
25181}
25182}
25183}
e930b1f5 25184}
b34f6357
DB
25185}
25186
25187 abuf->written = written;
25188 return vpc;
25189#undef FLD
25190}
25191
25192/* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25193
25194static SEM_PC
25195SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25196{
25197#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25199 int UNUSED written = 0;
25200 IADDR UNUSED pc = abuf->addr;
25201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25202
e930b1f5 25203if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25204if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25205frvbf_media_acc_not_aligned (current_cpu);
25206} else {
25207if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25208frvbf_media_register_not_aligned (current_cpu);
25209} else {
25210if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25211{
25212 HI tmp_argihi;
25213 HI tmp_argilo;
25214 HI tmp_argjhi;
25215 HI tmp_argjlo;
25216{
b29791a8
DE
25217 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25218 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25219 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25220 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25221}
25222{
25223 DI tmp_tmp;
25224 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25225if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25226{
25227 {
25228 DI opval = MAKEDI (127, 0xffffffff);
25229 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25230 written |= (1 << 19);
25231 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25232 }
25233frvbf_media_overflow (current_cpu, 8);
25234}
25235} else {
25236if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25237{
25238 {
25239 DI opval = MAKEDI (0xffffff80, 0);
25240 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25241 written |= (1 << 19);
25242 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25243 }
25244frvbf_media_overflow (current_cpu, 8);
25245}
25246} else {
25247 {
25248 DI opval = tmp_tmp;
25249 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25250 written |= (1 << 19);
25251 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25252 }
25253}
25254}
25255}
25256{
25257 DI tmp_tmp;
b29791a8 25258 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25259if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25260{
25261 {
25262 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25263 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25264 written |= (1 << 20);
25265 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25266 }
25267frvbf_media_overflow (current_cpu, 4);
25268}
25269} else {
25270if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25271{
25272 {
25273 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25274 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25275 written |= (1 << 20);
25276 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25277 }
25278frvbf_media_overflow (current_cpu, 4);
25279}
25280} else {
25281 {
25282 DI opval = tmp_tmp;
b29791a8 25283 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25284 written |= (1 << 20);
25285 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25286 }
25287}
25288}
25289}
25290{
b29791a8
DE
25291 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25292 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25293 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25294 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25295}
25296{
25297 DI tmp_tmp;
b29791a8 25298 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25299if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25300{
25301 {
25302 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25303 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25304 written |= (1 << 21);
25305 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25306 }
25307frvbf_media_overflow (current_cpu, 2);
25308}
25309} else {
25310if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25311{
25312 {
25313 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25314 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25315 written |= (1 << 21);
25316 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25317 }
25318frvbf_media_overflow (current_cpu, 2);
25319}
25320} else {
25321 {
25322 DI opval = tmp_tmp;
b29791a8 25323 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25324 written |= (1 << 21);
25325 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25326 }
25327}
25328}
25329}
25330{
25331 DI tmp_tmp;
b29791a8 25332 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25333if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25334{
25335 {
25336 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25337 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25338 written |= (1 << 22);
25339 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25340 }
25341frvbf_media_overflow (current_cpu, 1);
25342}
25343} else {
25344if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25345{
25346 {
25347 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25348 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25349 written |= (1 << 22);
25350 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25351 }
25352frvbf_media_overflow (current_cpu, 1);
25353}
25354} else {
25355 {
25356 DI opval = tmp_tmp;
b29791a8 25357 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25358 written |= (1 << 22);
25359 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25360 }
25361}
25362}
25363}
25364}
25365}
25366}
e930b1f5 25367}
b34f6357
DB
25368}
25369
25370 abuf->written = written;
25371 return vpc;
25372#undef FLD
25373}
25374
25375/* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25376
25377static SEM_PC
25378SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25379{
25380#define FLD(f) abuf->fields.sfmt_cmqmachu.f
25381 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25382 int UNUSED written = 0;
25383 IADDR UNUSED pc = abuf->addr;
25384 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25385
e930b1f5 25386if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
25387if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25388frvbf_media_acc_not_aligned (current_cpu);
25389} else {
25390if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25391frvbf_media_register_not_aligned (current_cpu);
25392} else {
25393if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25394{
25395 UHI tmp_argihi;
25396 UHI tmp_argilo;
25397 UHI tmp_argjhi;
25398 UHI tmp_argjlo;
25399{
b29791a8
DE
25400 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25401 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25402 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25403 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25404}
25405{
25406 DI tmp_tmp;
25407 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25408if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25409{
25410 {
25411 UDI opval = MAKEDI (255, 0xffffffff);
25412 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25413 written |= (1 << 19);
25414 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25415 }
25416frvbf_media_overflow (current_cpu, 8);
25417}
25418} else {
25419if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25420{
25421 {
25422 UDI opval = MAKEDI (0, 0);
25423 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25424 written |= (1 << 19);
25425 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25426 }
25427frvbf_media_overflow (current_cpu, 8);
25428}
25429} else {
25430 {
25431 UDI opval = tmp_tmp;
25432 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25433 written |= (1 << 19);
25434 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25435 }
25436}
25437}
25438}
25439{
25440 DI tmp_tmp;
b29791a8 25441 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25442if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25443{
25444 {
25445 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25446 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25447 written |= (1 << 20);
25448 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25449 }
25450frvbf_media_overflow (current_cpu, 4);
25451}
25452} else {
25453if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25454{
25455 {
25456 UDI opval = MAKEDI (0, 0);
b29791a8 25457 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25458 written |= (1 << 20);
25459 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25460 }
25461frvbf_media_overflow (current_cpu, 4);
25462}
25463} else {
25464 {
25465 UDI opval = tmp_tmp;
b29791a8 25466 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25467 written |= (1 << 20);
25468 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25469 }
25470}
25471}
25472}
25473{
b29791a8
DE
25474 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25475 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25476 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25477 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25478}
25479{
25480 DI tmp_tmp;
b29791a8 25481 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
b34f6357
DB
25482if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25483{
25484 {
25485 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25486 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25487 written |= (1 << 21);
25488 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25489 }
25490frvbf_media_overflow (current_cpu, 2);
25491}
25492} else {
25493if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25494{
25495 {
25496 UDI opval = MAKEDI (0, 0);
b29791a8 25497 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25498 written |= (1 << 21);
25499 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25500 }
25501frvbf_media_overflow (current_cpu, 2);
25502}
25503} else {
25504 {
25505 UDI opval = tmp_tmp;
b29791a8 25506 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25507 written |= (1 << 21);
25508 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25509 }
25510}
25511}
25512}
25513{
25514 DI tmp_tmp;
b29791a8 25515 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25516if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25517{
25518 {
25519 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25520 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25521 written |= (1 << 22);
25522 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25523 }
25524frvbf_media_overflow (current_cpu, 1);
25525}
25526} else {
25527if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25528{
25529 {
25530 UDI opval = MAKEDI (0, 0);
b29791a8 25531 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25532 written |= (1 << 22);
25533 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25534 }
25535frvbf_media_overflow (current_cpu, 1);
25536}
25537} else {
25538 {
25539 UDI opval = tmp_tmp;
b29791a8 25540 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25541 written |= (1 << 22);
25542 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25543 }
25544}
25545}
25546}
25547}
25548}
25549}
e930b1f5 25550}
b34f6357
DB
25551}
25552
25553 abuf->written = written;
25554 return vpc;
25555#undef FLD
25556}
25557
25558/* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25559
25560static SEM_PC
25561SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25562{
25563#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25565 int UNUSED written = 0;
25566 IADDR UNUSED pc = abuf->addr;
25567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25568
e930b1f5 25569if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25570if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25571frvbf_media_acc_not_aligned (current_cpu);
25572} else {
25573if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25574frvbf_media_register_not_aligned (current_cpu);
25575} else {
25576{
25577 HI tmp_argihi;
25578 HI tmp_argilo;
25579 HI tmp_argjhi;
25580 HI tmp_argjlo;
25581{
b29791a8
DE
25582 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25583 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25584 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25585 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25586}
25587{
25588 DI tmp_tmp;
b29791a8 25589 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25590if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25591{
25592 {
25593 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25594 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25595 written |= (1 << 19);
25596 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25597 }
25598frvbf_media_overflow (current_cpu, 2);
25599}
25600} else {
25601if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25602{
25603 {
25604 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25605 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25606 written |= (1 << 19);
25607 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25608 }
25609frvbf_media_overflow (current_cpu, 2);
25610}
25611} else {
25612 {
25613 DI opval = tmp_tmp;
b29791a8 25614 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25615 written |= (1 << 19);
25616 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25617 }
25618}
25619}
25620}
25621{
25622 DI tmp_tmp;
b29791a8 25623 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25624if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25625{
25626 {
25627 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25628 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25629 written |= (1 << 20);
25630 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25631 }
25632frvbf_media_overflow (current_cpu, 1);
25633}
25634} else {
25635if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25636{
25637 {
25638 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25639 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25640 written |= (1 << 20);
25641 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25642 }
25643frvbf_media_overflow (current_cpu, 1);
25644}
25645} else {
25646 {
25647 DI opval = tmp_tmp;
b29791a8 25648 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25649 written |= (1 << 20);
25650 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25651 }
25652}
25653}
25654}
25655{
b29791a8
DE
25656 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25657 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25658 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25659 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25660}
25661{
25662 DI tmp_tmp;
25663 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25664if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25665{
25666 {
25667 DI opval = MAKEDI (127, 0xffffffff);
25668 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25669 written |= (1 << 17);
25670 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25671 }
25672frvbf_media_overflow (current_cpu, 8);
25673}
25674} else {
25675if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25676{
25677 {
25678 DI opval = MAKEDI (0xffffff80, 0);
25679 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25680 written |= (1 << 17);
25681 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25682 }
25683frvbf_media_overflow (current_cpu, 8);
25684}
25685} else {
25686 {
25687 DI opval = tmp_tmp;
25688 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25689 written |= (1 << 17);
25690 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25691 }
25692}
25693}
25694}
25695{
25696 DI tmp_tmp;
b29791a8 25697 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25698if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25699{
25700 {
25701 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25702 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25703 written |= (1 << 18);
25704 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25705 }
25706frvbf_media_overflow (current_cpu, 4);
25707}
25708} else {
25709if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25710{
25711 {
25712 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25713 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25714 written |= (1 << 18);
25715 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25716 }
25717frvbf_media_overflow (current_cpu, 4);
25718}
25719} else {
25720 {
25721 DI opval = tmp_tmp;
b29791a8 25722 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25723 written |= (1 << 18);
25724 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25725 }
25726}
25727}
25728}
25729}
25730}
e930b1f5 25731}
b34f6357
DB
25732}
25733
25734 abuf->written = written;
25735 return vpc;
25736#undef FLD
25737}
25738
25739/* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25740
25741static SEM_PC
25742SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25743{
25744#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25745 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25746 int UNUSED written = 0;
25747 IADDR UNUSED pc = abuf->addr;
25748 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25749
e930b1f5 25750if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25751if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25752frvbf_media_acc_not_aligned (current_cpu);
25753} else {
25754if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25755frvbf_media_register_not_aligned (current_cpu);
25756} else {
25757{
25758 HI tmp_argihi;
25759 HI tmp_argilo;
25760 HI tmp_argjhi;
25761 HI tmp_argjlo;
25762{
b29791a8
DE
25763 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25764 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25765 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25766 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25767}
25768{
25769 DI tmp_tmp;
b29791a8 25770 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25771if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25772{
25773 {
25774 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25775 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25776 written |= (1 << 19);
25777 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25778 }
25779frvbf_media_overflow (current_cpu, 2);
25780}
25781} else {
25782if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25783{
25784 {
25785 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25786 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25787 written |= (1 << 19);
25788 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25789 }
25790frvbf_media_overflow (current_cpu, 2);
25791}
25792} else {
25793 {
25794 DI opval = tmp_tmp;
b29791a8 25795 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25796 written |= (1 << 19);
25797 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25798 }
25799}
25800}
25801}
25802{
25803 DI tmp_tmp;
b29791a8 25804 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25805if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25806{
25807 {
25808 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25809 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25810 written |= (1 << 20);
25811 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25812 }
25813frvbf_media_overflow (current_cpu, 1);
25814}
25815} else {
25816if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25817{
25818 {
25819 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25820 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25821 written |= (1 << 20);
25822 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25823 }
25824frvbf_media_overflow (current_cpu, 1);
25825}
25826} else {
25827 {
25828 DI opval = tmp_tmp;
b29791a8 25829 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25830 written |= (1 << 20);
25831 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25832 }
25833}
25834}
25835}
25836{
b29791a8
DE
25837 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25838 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25839 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25840 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25841}
25842{
25843 DI tmp_tmp;
25844 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25845if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25846{
25847 {
25848 DI opval = MAKEDI (127, 0xffffffff);
25849 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25850 written |= (1 << 17);
25851 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25852 }
25853frvbf_media_overflow (current_cpu, 8);
25854}
25855} else {
25856if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25857{
25858 {
25859 DI opval = MAKEDI (0xffffff80, 0);
25860 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25861 written |= (1 << 17);
25862 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25863 }
25864frvbf_media_overflow (current_cpu, 8);
25865}
25866} else {
25867 {
25868 DI opval = tmp_tmp;
25869 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25870 written |= (1 << 17);
25871 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25872 }
25873}
25874}
25875}
25876{
25877 DI tmp_tmp;
b29791a8 25878 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25879if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25880{
25881 {
25882 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25883 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25884 written |= (1 << 18);
25885 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25886 }
25887frvbf_media_overflow (current_cpu, 4);
25888}
25889} else {
25890if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25891{
25892 {
25893 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25894 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25895 written |= (1 << 18);
25896 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25897 }
25898frvbf_media_overflow (current_cpu, 4);
25899}
25900} else {
25901 {
25902 DI opval = tmp_tmp;
b29791a8 25903 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25904 written |= (1 << 18);
25905 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25906 }
25907}
25908}
25909}
25910}
25911}
e930b1f5 25912}
b34f6357
DB
25913}
25914
25915 abuf->written = written;
25916 return vpc;
25917#undef FLD
25918}
25919
25920/* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25921
25922static SEM_PC
25923SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25924{
25925#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25926 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25927 int UNUSED written = 0;
25928 IADDR UNUSED pc = abuf->addr;
25929 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25930
e930b1f5 25931if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25932if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25933frvbf_media_acc_not_aligned (current_cpu);
25934} else {
25935if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25936frvbf_media_register_not_aligned (current_cpu);
25937} else {
25938{
25939 HI tmp_argihi;
25940 HI tmp_argilo;
25941 HI tmp_argjhi;
25942 HI tmp_argjlo;
25943{
b29791a8
DE
25944 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25945 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25946 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25947 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25948}
25949{
25950 DI tmp_tmp;
25951 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25952if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25953{
25954 {
25955 DI opval = MAKEDI (127, 0xffffffff);
25956 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25957 written |= (1 << 17);
25958 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25959 }
25960frvbf_media_overflow (current_cpu, 8);
25961}
25962} else {
25963if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25964{
25965 {
25966 DI opval = MAKEDI (0xffffff80, 0);
25967 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25968 written |= (1 << 17);
25969 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25970 }
25971frvbf_media_overflow (current_cpu, 8);
25972}
25973} else {
25974 {
25975 DI opval = tmp_tmp;
25976 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25977 written |= (1 << 17);
25978 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25979 }
25980}
25981}
25982}
25983{
25984 DI tmp_tmp;
b29791a8 25985 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25986if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25987{
25988 {
25989 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25990 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25991 written |= (1 << 18);
25992 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25993 }
25994frvbf_media_overflow (current_cpu, 4);
25995}
25996} else {
25997if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25998{
25999 {
26000 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26001 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26002 written |= (1 << 18);
26003 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26004 }
26005frvbf_media_overflow (current_cpu, 4);
26006}
26007} else {
26008 {
26009 DI opval = tmp_tmp;
b29791a8 26010 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26011 written |= (1 << 18);
26012 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26013 }
26014}
26015}
26016}
26017{
b29791a8
DE
26018 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26019 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26020 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26021 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26022}
26023{
26024 DI tmp_tmp;
b29791a8 26025 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
b34f6357
DB
26026if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26027{
26028 {
26029 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26030 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
26031 written |= (1 << 19);
26032 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26033 }
26034frvbf_media_overflow (current_cpu, 2);
26035}
26036} else {
26037if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26038{
26039 {
26040 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26041 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
26042 written |= (1 << 19);
26043 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26044 }
26045frvbf_media_overflow (current_cpu, 2);
26046}
26047} else {
26048 {
26049 DI opval = tmp_tmp;
b29791a8 26050 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
26051 written |= (1 << 19);
26052 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26053 }
26054}
26055}
26056}
26057{
26058 DI tmp_tmp;
b29791a8 26059 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
26060if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26061{
26062 {
26063 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26064 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
26065 written |= (1 << 20);
26066 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26067 }
26068frvbf_media_overflow (current_cpu, 1);
26069}
26070} else {
26071if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26072{
26073 {
26074 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26075 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
26076 written |= (1 << 20);
26077 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26078 }
26079frvbf_media_overflow (current_cpu, 1);
26080}
26081} else {
26082 {
26083 DI opval = tmp_tmp;
b29791a8 26084 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
26085 written |= (1 << 20);
26086 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26087 }
26088}
26089}
26090}
26091}
26092}
e930b1f5 26093}
b34f6357
DB
26094}
26095
26096 abuf->written = written;
26097 return vpc;
26098#undef FLD
26099}
26100
26101/* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26102
26103static SEM_PC
26104SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26105{
26106#define FLD(f) abuf->fields.sfmt_cmmachs.f
26107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26108 int UNUSED written = 0;
26109 IADDR UNUSED pc = abuf->addr;
26110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26111
e930b1f5 26112if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26113{
26114 HI tmp_argihi;
26115 HI tmp_argilo;
26116 HI tmp_argjhi;
26117 HI tmp_argjlo;
26118{
b29791a8
DE
26119 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26120 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26121 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26122 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26123}
26124{
26125 DI tmp_tmp1;
26126 DI tmp_tmp2;
26127 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26128 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26129 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26130if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26131{
26132 {
26133 DI opval = MAKEDI (127, 0xffffffff);
26134 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26135 written |= (1 << 9);
b34f6357
DB
26136 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26137 }
26138frvbf_media_overflow (current_cpu, 8);
26139}
26140} else {
26141if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26142{
26143 {
26144 DI opval = MAKEDI (0xffffff80, 0);
26145 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26146 written |= (1 << 9);
b34f6357
DB
26147 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26148 }
26149frvbf_media_overflow (current_cpu, 8);
26150}
26151} else {
26152 {
26153 DI opval = tmp_tmp1;
26154 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26155 written |= (1 << 9);
b34f6357
DB
26156 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26157 }
26158}
26159}
26160}
e930b1f5 26161}
b34f6357
DB
26162}
26163
26164 abuf->written = written;
26165 return vpc;
26166#undef FLD
26167}
26168
26169/* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26170
26171static SEM_PC
26172SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26173{
26174#define FLD(f) abuf->fields.sfmt_cmmachs.f
26175 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26176 int UNUSED written = 0;
26177 IADDR UNUSED pc = abuf->addr;
26178 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26179
e930b1f5 26180if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26181{
26182 UHI tmp_argihi;
26183 UHI tmp_argilo;
26184 UHI tmp_argjhi;
26185 UHI tmp_argjlo;
26186{
b29791a8
DE
26187 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26188 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26189 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26190 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26191}
26192{
26193 DI tmp_tmp1;
26194 DI tmp_tmp2;
26195 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26196 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26197 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26198if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26199{
26200 {
26201 DI opval = MAKEDI (255, 0xffffffff);
26202 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26203 written |= (1 << 9);
b34f6357
DB
26204 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26205 }
26206frvbf_media_overflow (current_cpu, 8);
26207}
26208} else {
26209if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26210{
26211 {
26212 DI opval = MAKEDI (0, 0);
26213 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26214 written |= (1 << 9);
b34f6357
DB
26215 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26216 }
26217frvbf_media_overflow (current_cpu, 8);
26218}
26219} else {
26220 {
26221 DI opval = tmp_tmp1;
26222 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26223 written |= (1 << 9);
b34f6357
DB
26224 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26225 }
26226}
26227}
26228}
e930b1f5 26229}
b34f6357
DB
26230}
26231
26232 abuf->written = written;
26233 return vpc;
26234#undef FLD
26235}
26236
26237/* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26238
26239static SEM_PC
26240SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26241{
26242#define FLD(f) abuf->fields.sfmt_cmmachs.f
26243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26244 int UNUSED written = 0;
26245 IADDR UNUSED pc = abuf->addr;
26246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26247
e930b1f5 26248if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26249{
26250 HI tmp_argihi;
26251 HI tmp_argilo;
26252 HI tmp_argjhi;
26253 HI tmp_argjlo;
26254{
b29791a8
DE
26255 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26256 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26257 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26258 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26259}
26260{
26261 DI tmp_tmp1;
26262 DI tmp_tmp2;
26263 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26264 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26265 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26266if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26267{
26268 {
26269 DI opval = MAKEDI (127, 0xffffffff);
26270 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26271 written |= (1 << 9);
b34f6357
DB
26272 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26273 }
26274frvbf_media_overflow (current_cpu, 8);
26275}
26276} else {
26277if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26278{
26279 {
26280 DI opval = MAKEDI (0xffffff80, 0);
26281 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26282 written |= (1 << 9);
b34f6357
DB
26283 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26284 }
26285frvbf_media_overflow (current_cpu, 8);
26286}
26287} else {
26288 {
26289 DI opval = tmp_tmp1;
26290 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26291 written |= (1 << 9);
b34f6357
DB
26292 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26293 }
26294}
26295}
26296}
e930b1f5 26297}
b34f6357
DB
26298}
26299
26300 abuf->written = written;
26301 return vpc;
26302#undef FLD
26303}
26304
26305/* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26306
26307static SEM_PC
26308SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26309{
26310#define FLD(f) abuf->fields.sfmt_cmmachs.f
26311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26312 int UNUSED written = 0;
26313 IADDR UNUSED pc = abuf->addr;
26314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26315
e930b1f5 26316if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26317{
26318 UHI tmp_argihi;
26319 UHI tmp_argilo;
26320 UHI tmp_argjhi;
26321 UHI tmp_argjlo;
26322{
b29791a8
DE
26323 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26324 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26325 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26326 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26327}
26328{
26329 DI tmp_tmp1;
26330 DI tmp_tmp2;
26331 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26332 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26333 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26334if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26335{
26336 {
26337 DI opval = MAKEDI (255, 0xffffffff);
26338 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26339 written |= (1 << 9);
b34f6357
DB
26340 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26341 }
26342frvbf_media_overflow (current_cpu, 8);
26343}
26344} else {
26345if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26346{
26347 {
26348 DI opval = MAKEDI (0, 0);
26349 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26350 written |= (1 << 9);
b34f6357
DB
26351 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26352 }
26353frvbf_media_overflow (current_cpu, 8);
26354}
26355} else {
26356 {
26357 DI opval = tmp_tmp1;
26358 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26359 written |= (1 << 9);
b34f6357
DB
26360 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26361 }
26362}
26363}
26364}
e930b1f5 26365}
b34f6357
DB
26366}
26367
26368 abuf->written = written;
26369 return vpc;
26370#undef FLD
26371}
26372
26373/* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26374
26375static SEM_PC
26376SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26377{
26378#define FLD(f) abuf->fields.sfmt_cmmachs.f
26379 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26380 int UNUSED written = 0;
26381 IADDR UNUSED pc = abuf->addr;
26382 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26383
26384if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26385if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26386{
26387 HI tmp_argihi;
26388 HI tmp_argilo;
26389 HI tmp_argjhi;
26390 HI tmp_argjlo;
26391{
b29791a8
DE
26392 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26393 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26394 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26395 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26396}
26397{
26398 DI tmp_tmp1;
26399 DI tmp_tmp2;
26400 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26401 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26402 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26403if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26404{
26405 {
26406 DI opval = MAKEDI (127, 0xffffffff);
26407 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26408 written |= (1 << 11);
b34f6357
DB
26409 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26410 }
26411frvbf_media_overflow (current_cpu, 8);
26412}
26413} else {
26414if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26415{
26416 {
26417 DI opval = MAKEDI (0xffffff80, 0);
26418 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26419 written |= (1 << 11);
b34f6357
DB
26420 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26421 }
26422frvbf_media_overflow (current_cpu, 8);
26423}
26424} else {
26425 {
26426 DI opval = tmp_tmp1;
26427 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26428 written |= (1 << 11);
b34f6357
DB
26429 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26430 }
26431}
26432}
26433}
26434}
e930b1f5 26435}
b34f6357
DB
26436}
26437
26438 abuf->written = written;
26439 return vpc;
26440#undef FLD
26441}
26442
26443/* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26444
26445static SEM_PC
26446SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26447{
26448#define FLD(f) abuf->fields.sfmt_cmmachs.f
26449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26450 int UNUSED written = 0;
26451 IADDR UNUSED pc = abuf->addr;
26452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26453
26454if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26455if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26456{
26457 UHI tmp_argihi;
26458 UHI tmp_argilo;
26459 UHI tmp_argjhi;
26460 UHI tmp_argjlo;
26461{
b29791a8
DE
26462 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26463 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26464 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26465 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26466}
26467{
26468 DI tmp_tmp1;
26469 DI tmp_tmp2;
26470 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26471 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26472 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26473if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26474{
26475 {
26476 DI opval = MAKEDI (255, 0xffffffff);
26477 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26478 written |= (1 << 11);
b34f6357
DB
26479 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26480 }
26481frvbf_media_overflow (current_cpu, 8);
26482}
26483} else {
26484if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26485{
26486 {
26487 DI opval = MAKEDI (0, 0);
26488 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26489 written |= (1 << 11);
b34f6357
DB
26490 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26491 }
26492frvbf_media_overflow (current_cpu, 8);
26493}
26494} else {
26495 {
26496 DI opval = tmp_tmp1;
26497 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26498 written |= (1 << 11);
b34f6357
DB
26499 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26500 }
26501}
26502}
26503}
26504}
e930b1f5 26505}
b34f6357
DB
26506}
26507
26508 abuf->written = written;
26509 return vpc;
26510#undef FLD
26511}
26512
26513/* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26514
26515static SEM_PC
26516SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26517{
26518#define FLD(f) abuf->fields.sfmt_cmmachs.f
26519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26520 int UNUSED written = 0;
26521 IADDR UNUSED pc = abuf->addr;
26522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26523
26524if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26525if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26526{
26527 HI tmp_argihi;
26528 HI tmp_argilo;
26529 HI tmp_argjhi;
26530 HI tmp_argjlo;
26531{
b29791a8
DE
26532 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26533 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26534 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26535 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26536}
26537{
26538 DI tmp_tmp1;
26539 DI tmp_tmp2;
26540 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26541 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26542 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26543if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26544{
26545 {
26546 DI opval = MAKEDI (127, 0xffffffff);
26547 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26548 written |= (1 << 11);
b34f6357
DB
26549 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26550 }
26551frvbf_media_overflow (current_cpu, 8);
26552}
26553} else {
26554if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26555{
26556 {
26557 DI opval = MAKEDI (0xffffff80, 0);
26558 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26559 written |= (1 << 11);
b34f6357
DB
26560 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26561 }
26562frvbf_media_overflow (current_cpu, 8);
26563}
26564} else {
26565 {
26566 DI opval = tmp_tmp1;
26567 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26568 written |= (1 << 11);
b34f6357
DB
26569 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26570 }
26571}
26572}
26573}
26574}
e930b1f5 26575}
b34f6357
DB
26576}
26577
26578 abuf->written = written;
26579 return vpc;
26580#undef FLD
26581}
26582
26583/* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26584
26585static SEM_PC
26586SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26587{
26588#define FLD(f) abuf->fields.sfmt_cmmachs.f
26589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26590 int UNUSED written = 0;
26591 IADDR UNUSED pc = abuf->addr;
26592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26593
26594if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26595if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26596{
26597 UHI tmp_argihi;
26598 UHI tmp_argilo;
26599 UHI tmp_argjhi;
26600 UHI tmp_argjlo;
26601{
b29791a8
DE
26602 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26603 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26604 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26605 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26606}
26607{
26608 DI tmp_tmp1;
26609 DI tmp_tmp2;
26610 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26611 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26612 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26613if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26614{
26615 {
26616 DI opval = MAKEDI (255, 0xffffffff);
26617 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26618 written |= (1 << 11);
b34f6357
DB
26619 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26620 }
26621frvbf_media_overflow (current_cpu, 8);
26622}
26623} else {
26624if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26625{
26626 {
26627 DI opval = MAKEDI (0, 0);
26628 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26629 written |= (1 << 11);
b34f6357
DB
26630 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26631 }
26632frvbf_media_overflow (current_cpu, 8);
26633}
26634} else {
26635 {
26636 DI opval = tmp_tmp1;
26637 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26638 written |= (1 << 11);
b34f6357
DB
26639 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26640 }
26641}
26642}
26643}
26644}
e930b1f5 26645}
b34f6357
DB
26646}
26647
26648 abuf->written = written;
26649 return vpc;
26650#undef FLD
26651}
26652
26653/* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26654
26655static SEM_PC
26656SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26657{
26658#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26660 int UNUSED written = 0;
26661 IADDR UNUSED pc = abuf->addr;
26662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26663
e930b1f5 26664if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26665if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26666frvbf_media_acc_not_aligned (current_cpu);
26667} else {
26668if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26669frvbf_media_register_not_aligned (current_cpu);
26670} else {
26671{
26672 HI tmp_argihi;
26673 HI tmp_argilo;
26674 HI tmp_argjhi;
26675 HI tmp_argjlo;
26676{
b29791a8
DE
26677 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26678 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26679 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26680 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26681}
26682{
26683 DI tmp_tmp1;
26684 DI tmp_tmp2;
26685 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26686 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26687 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26688if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26689{
26690 {
26691 DI opval = MAKEDI (127, 0xffffffff);
26692 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26693 written |= (1 << 13);
26694 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26695 }
26696frvbf_media_overflow (current_cpu, 8);
26697}
26698} else {
26699if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26700{
26701 {
26702 DI opval = MAKEDI (0xffffff80, 0);
26703 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26704 written |= (1 << 13);
26705 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26706 }
26707frvbf_media_overflow (current_cpu, 8);
26708}
26709} else {
26710 {
26711 DI opval = tmp_tmp1;
26712 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26713 written |= (1 << 13);
26714 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26715 }
26716}
26717}
26718}
26719{
b29791a8
DE
26720 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26721 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26722 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26723 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26724}
26725{
26726 DI tmp_tmp1;
26727 DI tmp_tmp2;
26728 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26729 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26730 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26731if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26732{
26733 {
26734 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26735 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26736 written |= (1 << 14);
26737 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26738 }
26739frvbf_media_overflow (current_cpu, 4);
26740}
26741} else {
26742if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26743{
26744 {
26745 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26746 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26747 written |= (1 << 14);
26748 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26749 }
26750frvbf_media_overflow (current_cpu, 4);
26751}
26752} else {
26753 {
26754 DI opval = tmp_tmp1;
b29791a8 26755 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26756 written |= (1 << 14);
26757 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26758 }
26759}
26760}
26761}
26762}
26763}
e930b1f5 26764}
b34f6357
DB
26765}
26766
26767 abuf->written = written;
26768 return vpc;
26769#undef FLD
26770}
26771
26772/* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26773
26774static SEM_PC
26775SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26776{
26777#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26779 int UNUSED written = 0;
26780 IADDR UNUSED pc = abuf->addr;
26781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26782
e930b1f5 26783if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26784if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26785frvbf_media_acc_not_aligned (current_cpu);
26786} else {
26787if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26788frvbf_media_register_not_aligned (current_cpu);
26789} else {
26790{
26791 UHI tmp_argihi;
26792 UHI tmp_argilo;
26793 UHI tmp_argjhi;
26794 UHI tmp_argjlo;
26795{
b29791a8
DE
26796 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26797 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26798 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26799 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26800}
26801{
26802 DI tmp_tmp1;
26803 DI tmp_tmp2;
26804 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26805 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26806 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26807if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26808{
26809 {
26810 DI opval = MAKEDI (255, 0xffffffff);
26811 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26812 written |= (1 << 13);
26813 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26814 }
26815frvbf_media_overflow (current_cpu, 8);
26816}
26817} else {
26818if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26819{
26820 {
26821 DI opval = MAKEDI (0, 0);
26822 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26823 written |= (1 << 13);
26824 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26825 }
26826frvbf_media_overflow (current_cpu, 8);
26827}
26828} else {
26829 {
26830 DI opval = tmp_tmp1;
26831 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26832 written |= (1 << 13);
26833 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26834 }
26835}
26836}
26837}
26838{
b29791a8
DE
26839 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26840 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26841 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26842 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26843}
26844{
26845 DI tmp_tmp1;
26846 DI tmp_tmp2;
26847 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26848 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26849 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26850if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26851{
26852 {
26853 DI opval = MAKEDI (255, 0xffffffff);
b29791a8 26854 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26855 written |= (1 << 14);
26856 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26857 }
26858frvbf_media_overflow (current_cpu, 4);
26859}
26860} else {
26861if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26862{
26863 {
26864 DI opval = MAKEDI (0, 0);
b29791a8 26865 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26866 written |= (1 << 14);
26867 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26868 }
26869frvbf_media_overflow (current_cpu, 4);
26870}
26871} else {
26872 {
26873 DI opval = tmp_tmp1;
b29791a8 26874 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26875 written |= (1 << 14);
26876 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26877 }
26878}
26879}
26880}
26881}
26882}
e930b1f5 26883}
b34f6357
DB
26884}
26885
26886 abuf->written = written;
26887 return vpc;
26888#undef FLD
26889}
26890
26891/* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26892
26893static SEM_PC
26894SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26895{
26896#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26898 int UNUSED written = 0;
26899 IADDR UNUSED pc = abuf->addr;
26900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26901
e930b1f5 26902if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26903if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26904frvbf_media_acc_not_aligned (current_cpu);
26905} else {
26906if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26907frvbf_media_register_not_aligned (current_cpu);
26908} else {
26909{
26910 HI tmp_argihi;
26911 HI tmp_argilo;
26912 HI tmp_argjhi;
26913 HI tmp_argjlo;
26914{
b29791a8
DE
26915 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26916 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26917 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26918 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26919}
26920{
26921 DI tmp_tmp1;
26922 DI tmp_tmp2;
26923 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26924 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26925 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26926if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26927{
26928 {
26929 DI opval = MAKEDI (127, 0xffffffff);
26930 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26931 written |= (1 << 13);
26932 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26933 }
26934frvbf_media_overflow (current_cpu, 8);
26935}
26936} else {
26937if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26938{
26939 {
26940 DI opval = MAKEDI (0xffffff80, 0);
26941 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26942 written |= (1 << 13);
26943 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26944 }
26945frvbf_media_overflow (current_cpu, 8);
26946}
26947} else {
26948 {
26949 DI opval = tmp_tmp1;
26950 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26951 written |= (1 << 13);
26952 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26953 }
26954}
26955}
26956}
26957{
b29791a8
DE
26958 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26959 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26960 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26961 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26962}
26963{
26964 DI tmp_tmp1;
26965 DI tmp_tmp2;
26966 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26967 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26968 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26969if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26970{
26971 {
26972 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26973 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26974 written |= (1 << 14);
26975 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26976 }
26977frvbf_media_overflow (current_cpu, 4);
26978}
26979} else {
26980if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26981{
26982 {
26983 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26984 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26985 written |= (1 << 14);
26986 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26987 }
26988frvbf_media_overflow (current_cpu, 4);
26989}
26990} else {
26991 {
26992 DI opval = tmp_tmp1;
b29791a8 26993 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26994 written |= (1 << 14);
26995 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26996 }
26997}
26998}
26999}
27000}
27001}
e930b1f5 27002}
b34f6357
DB
27003}
27004
27005 abuf->written = written;
27006 return vpc;
27007#undef FLD
27008}
27009
27010/* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
27011
27012static SEM_PC
27013SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27014{
27015#define FLD(f) abuf->fields.sfmt_cmqmachs.f
27016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27017 int UNUSED written = 0;
27018 IADDR UNUSED pc = abuf->addr;
27019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27020
e930b1f5 27021if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
27022if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
27023frvbf_media_acc_not_aligned (current_cpu);
27024} else {
27025if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
27026frvbf_media_register_not_aligned (current_cpu);
27027} else {
27028{
27029 UHI tmp_argihi;
27030 UHI tmp_argilo;
27031 UHI tmp_argjhi;
27032 UHI tmp_argjlo;
27033{
b29791a8
DE
27034 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27035 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27036 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27037 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
27038}
27039{
27040 DI tmp_tmp1;
27041 DI tmp_tmp2;
27042 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27043 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27044 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27045if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27046{
27047 {
27048 DI opval = MAKEDI (255, 0xffffffff);
27049 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27050 written |= (1 << 13);
27051 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27052 }
27053frvbf_media_overflow (current_cpu, 8);
27054}
27055} else {
27056if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27057{
27058 {
27059 DI opval = MAKEDI (0, 0);
27060 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27061 written |= (1 << 13);
27062 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27063 }
27064frvbf_media_overflow (current_cpu, 8);
27065}
27066} else {
27067 {
27068 DI opval = tmp_tmp1;
27069 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27070 written |= (1 << 13);
27071 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27072 }
27073}
27074}
27075}
27076{
b29791a8
DE
27077 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27078 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27079 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27080 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
27081}
27082{
27083 DI tmp_tmp1;
27084 DI tmp_tmp2;
27085 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27086 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27087 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27088if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27089{
27090 {
27091 DI opval = MAKEDI (255, 0xffffffff);
b29791a8 27092 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
27093 written |= (1 << 14);
27094 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27095 }
27096frvbf_media_overflow (current_cpu, 4);
27097}
27098} else {
27099if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27100{
27101 {
27102 DI opval = MAKEDI (0, 0);
b29791a8 27103 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
27104 written |= (1 << 14);
27105 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27106 }
27107frvbf_media_overflow (current_cpu, 4);
27108}
27109} else {
27110 {
27111 DI opval = tmp_tmp1;
b29791a8 27112 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
27113 written |= (1 << 14);
27114 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27115 }
27116}
27117}
27118}
27119}
27120}
e930b1f5 27121}
b34f6357
DB
27122}
27123
27124 abuf->written = written;
27125 return vpc;
27126#undef FLD
27127}
27128
27129/* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27130
27131static SEM_PC
27132SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27133{
27134#define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27136 int UNUSED written = 0;
27137 IADDR UNUSED pc = abuf->addr;
27138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27139
27140{
27141 UHI tmp_tmp;
27142if (ANDSI (FLD (f_u6), 1)) {
b29791a8 27143 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27144} else {
b29791a8 27145 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27146}
27147 {
27148 UHI opval = tmp_tmp;
b29791a8 27149 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27150 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27151 }
27152 {
27153 UHI opval = tmp_tmp;
b29791a8 27154 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27155 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27156 }
27157}
27158
27159 return vpc;
27160#undef FLD
27161}
27162
27163/* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27164
27165static SEM_PC
27166SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27167{
27168#define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27170 int UNUSED written = 0;
27171 IADDR UNUSED pc = abuf->addr;
27172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27173
27174if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27175{
27176 UHI tmp_tmp;
27177if (ANDSI (FLD (f_u6), 1)) {
b29791a8 27178 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27179} else {
b29791a8 27180 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27181}
27182 {
27183 UHI opval = tmp_tmp;
b29791a8 27184 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27185 written |= (1 << 7);
27186 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27187 }
27188 {
27189 UHI opval = tmp_tmp;
b29791a8 27190 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27191 written |= (1 << 8);
27192 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27193 }
27194}
27195}
27196
27197 abuf->written = written;
27198 return vpc;
27199#undef FLD
27200}
27201
27202/* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27203
27204static SEM_PC
27205SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27206{
27207#define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27209 int UNUSED written = 0;
27210 IADDR UNUSED pc = abuf->addr;
27211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27212
27213if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27214frvbf_media_register_not_aligned (current_cpu);
27215} else {
27216{
27217 UHI tmp_tmp;
27218 {
27219 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27220 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27221 written |= (1 << 6);
27222 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27223 }
27224if (ANDSI (FLD (f_u6), 1)) {
b29791a8 27225 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27226} else {
b29791a8 27227 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27228}
27229 {
27230 UHI opval = tmp_tmp;
b29791a8 27231 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27232 written |= (1 << 7);
27233 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27234 }
27235 {
27236 UHI opval = tmp_tmp;
b29791a8 27237 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27238 written |= (1 << 9);
27239 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27240 }
27241 {
27242 UHI opval = tmp_tmp;
b29791a8 27243 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27244 written |= (1 << 8);
27245 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27246 }
27247 {
27248 UHI opval = tmp_tmp;
b29791a8 27249 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27250 written |= (1 << 10);
27251 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27252 }
27253}
27254}
27255
27256 abuf->written = written;
27257 return vpc;
27258#undef FLD
27259}
27260
27261/* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27262
27263static SEM_PC
27264SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27265{
27266#define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27268 int UNUSED written = 0;
27269 IADDR UNUSED pc = abuf->addr;
27270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27271
27272if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27273frvbf_media_register_not_aligned (current_cpu);
27274} else {
27275if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27276{
27277 UHI tmp_tmp;
27278 {
27279 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27280 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27281 written |= (1 << 8);
27282 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27283 }
27284if (ANDSI (FLD (f_u6), 1)) {
b29791a8 27285 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27286} else {
b29791a8 27287 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27288}
27289 {
27290 UHI opval = tmp_tmp;
b29791a8 27291 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27292 written |= (1 << 9);
27293 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27294 }
27295 {
27296 UHI opval = tmp_tmp;
b29791a8 27297 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27298 written |= (1 << 11);
27299 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27300 }
27301 {
27302 UHI opval = tmp_tmp;
b29791a8 27303 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27304 written |= (1 << 10);
27305 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27306 }
27307 {
27308 UHI opval = tmp_tmp;
b29791a8 27309 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27310 written |= (1 << 12);
27311 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27312 }
27313}
27314}
27315}
27316
27317 abuf->written = written;
27318 return vpc;
27319#undef FLD
27320}
27321
27322/* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27323
27324static SEM_PC
27325SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27326{
27327#define FLD(f) abuf->fields.sfmt_cmaddhss.f
27328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27329 int UNUSED written = 0;
27330 IADDR UNUSED pc = abuf->addr;
27331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27332
27333{
27334 {
b29791a8
DE
27335 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27336 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27337 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27338 }
27339 {
b29791a8
DE
27340 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27341 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27342 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27343 }
27344}
27345
27346 return vpc;
27347#undef FLD
27348}
27349
27350/* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27351
27352static SEM_PC
27353SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27354{
27355#define FLD(f) abuf->fields.sfmt_mdpackh.f
27356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27357 int UNUSED written = 0;
27358 IADDR UNUSED pc = abuf->addr;
27359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27360
27361if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27362frvbf_media_register_not_aligned (current_cpu);
27363} else {
27364{
27365 {
27366 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27367 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27368 written |= (1 << 10);
27369 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27370 }
27371 {
27372 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27373 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27374 written |= (1 << 11);
27375 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27376 }
27377 {
27378 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27379 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27380 written |= (1 << 12);
27381 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27382 }
27383{
27384 {
b29791a8
DE
27385 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27386 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27387 written |= (1 << 13);
27388 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27389 }
27390 {
b29791a8
DE
27391 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27392 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27393 written |= (1 << 15);
27394 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27395 }
27396}
27397{
27398 {
b29791a8
DE
27399 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27400 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27401 written |= (1 << 14);
27402 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27403 }
27404 {
b29791a8
DE
27405 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27406 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27407 written |= (1 << 16);
27408 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27409 }
27410}
27411}
27412}
27413
27414 abuf->written = written;
27415 return vpc;
27416#undef FLD
27417}
27418
27419/* munpackh: munpackh$pack $FRinti,$FRintkeven */
27420
27421static SEM_PC
27422SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27423{
27424#define FLD(f) abuf->fields.sfmt_munpackh.f
27425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27426 int UNUSED written = 0;
27427 IADDR UNUSED pc = abuf->addr;
27428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27429
27430if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27431frvbf_media_register_not_aligned (current_cpu);
27432} else {
27433{
27434 {
27435 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27436 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27437 written |= (1 << 6);
27438 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27439 }
27440 {
27441 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27442 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27443 written |= (1 << 7);
27444 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27445 }
27446{
27447 {
b29791a8
DE
27448 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27449 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27450 written |= (1 << 8);
27451 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27452 }
27453 {
b29791a8
DE
27454 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27455 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27456 written |= (1 << 10);
27457 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27458 }
27459 {
b29791a8
DE
27460 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27461 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27462 written |= (1 << 9);
27463 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27464 }
27465 {
b29791a8
DE
27466 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27467 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27468 written |= (1 << 11);
27469 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27470 }
27471}
27472}
27473}
27474
27475 abuf->written = written;
27476 return vpc;
27477#undef FLD
27478}
27479
27480/* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27481
27482static SEM_PC
27483SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27484{
27485#define FLD(f) abuf->fields.sfmt_mdunpackh.f
27486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27487 int UNUSED written = 0;
27488 IADDR UNUSED pc = abuf->addr;
27489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27490
27491if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27492frvbf_media_register_not_aligned (current_cpu);
27493} else {
27494{
27495 {
27496 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27497 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27498 written |= (1 << 8);
27499 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27500 }
27501 {
27502 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27503 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27504 written |= (1 << 9);
27505 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27506 }
27507{
27508 {
b29791a8
DE
27509 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27510 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27511 written |= (1 << 10);
27512 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27513 }
27514 {
b29791a8
DE
27515 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27516 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27517 written |= (1 << 14);
27518 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27519 }
27520 {
b29791a8
DE
27521 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27522 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27523 written |= (1 << 12);
27524 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27525 }
27526 {
b29791a8
DE
27527 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27528 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27529 written |= (1 << 16);
27530 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27531 }
27532}
27533{
27534 {
b29791a8
DE
27535 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27536 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27537 written |= (1 << 11);
27538 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27539 }
27540 {
b29791a8
DE
27541 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27542 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27543 written |= (1 << 15);
27544 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27545 }
27546 {
b29791a8
DE
27547 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27548 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
b34f6357
DB
27549 written |= (1 << 13);
27550 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27551 }
27552 {
b29791a8
DE
27553 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27554 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
b34f6357
DB
27555 written |= (1 << 17);
27556 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27557 }
27558}
27559}
27560}
27561
27562 abuf->written = written;
27563 return vpc;
27564#undef FLD
27565}
27566
27567/* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27568
27569static SEM_PC
27570SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27571{
27572#define FLD(f) abuf->fields.sfmt_cmbtoh.f
27573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27574 int UNUSED written = 0;
27575 IADDR UNUSED pc = abuf->addr;
27576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27577
27578{
27579 {
27580 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27581 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27582 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27583 }
27584 {
27585 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27586 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27587 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27588 }
27589if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27590frvbf_media_register_not_aligned (current_cpu);
27591} else {
27592{
27593 {
b29791a8
DE
27594 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27595 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27596 written |= (1 << 10);
27597 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27598 }
27599 {
b29791a8
DE
27600 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27601 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27602 written |= (1 << 12);
27603 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27604 }
27605 {
b29791a8
DE
27606 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27607 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27608 written |= (1 << 11);
27609 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27610 }
27611 {
b29791a8
DE
27612 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27613 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27614 written |= (1 << 13);
27615 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27616 }
27617}
27618}
27619}
27620
27621 abuf->written = written;
27622 return vpc;
27623#undef FLD
27624}
27625
27626/* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27627
27628static SEM_PC
27629SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27630{
27631#define FLD(f) abuf->fields.sfmt_cmbtoh.f
27632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27633 int UNUSED written = 0;
27634 IADDR UNUSED pc = abuf->addr;
27635 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27636
27637{
27638 {
27639 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27640 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27641 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27642 }
27643 {
27644 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27645 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27646 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27647 }
27648if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27649frvbf_media_register_not_aligned (current_cpu);
27650} else {
27651if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27652{
27653 {
b29791a8
DE
27654 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27655 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27656 written |= (1 << 12);
27657 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27658 }
27659 {
b29791a8
DE
27660 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27661 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27662 written |= (1 << 14);
27663 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27664 }
27665 {
b29791a8
DE
27666 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27667 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27668 written |= (1 << 13);
27669 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27670 }
27671 {
b29791a8
DE
27672 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27673 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27674 written |= (1 << 15);
27675 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27676 }
27677}
27678}
27679}
27680}
27681
27682 abuf->written = written;
27683 return vpc;
27684#undef FLD
27685}
27686
27687/* mhtob: mhtob$pack $FRintjeven,$FRintk */
27688
27689static SEM_PC
27690SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27691{
27692#define FLD(f) abuf->fields.sfmt_cmhtob.f
27693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27694 int UNUSED written = 0;
27695 IADDR UNUSED pc = abuf->addr;
27696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27697
27698{
27699 {
27700 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27701 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27702 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27703 }
27704 {
27705 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27706 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27707 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27708 }
27709if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27710frvbf_media_register_not_aligned (current_cpu);
27711} else {
27712{
27713 {
b29791a8
DE
27714 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27715 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27716 written |= (1 << 13);
27717 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27718 }
27719 {
b29791a8
DE
27720 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27721 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27722 written |= (1 << 12);
27723 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27724 }
27725 {
b29791a8
DE
27726 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27727 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27728 written |= (1 << 11);
27729 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27730 }
27731 {
b29791a8
DE
27732 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27733 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27734 written |= (1 << 10);
27735 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27736 }
27737}
27738}
27739}
27740
27741 abuf->written = written;
27742 return vpc;
27743#undef FLD
27744}
27745
27746/* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27747
27748static SEM_PC
27749SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27750{
27751#define FLD(f) abuf->fields.sfmt_cmhtob.f
27752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27753 int UNUSED written = 0;
27754 IADDR UNUSED pc = abuf->addr;
27755 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27756
27757{
27758 {
27759 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27760 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27761 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27762 }
27763 {
27764 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27765 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27766 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27767 }
27768if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27769frvbf_media_register_not_aligned (current_cpu);
27770} else {
27771if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27772{
27773 {
b29791a8
DE
27774 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27775 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27776 written |= (1 << 15);
27777 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27778 }
27779 {
b29791a8
DE
27780 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27781 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27782 written |= (1 << 14);
27783 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27784 }
27785 {
b29791a8
DE
27786 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27787 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27788 written |= (1 << 13);
27789 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27790 }
27791 {
b29791a8
DE
27792 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27793 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27794 written |= (1 << 12);
27795 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27796 }
27797}
27798}
27799}
27800}
27801
27802 abuf->written = written;
27803 return vpc;
27804#undef FLD
27805}
27806
27807/* mbtohe: mbtohe$pack $FRintj,$FRintk */
27808
27809static SEM_PC
27810SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27811{
27812#define FLD(f) abuf->fields.sfmt_cmbtohe.f
27813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27814 int UNUSED written = 0;
27815 IADDR UNUSED pc = abuf->addr;
27816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27817
27818{
27819 {
27820 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27821 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27822 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27823 }
27824 {
27825 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27826 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27827 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27828 }
27829if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27830frvbf_media_register_not_aligned (current_cpu);
27831} else {
27832{
27833 {
b29791a8
DE
27834 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27835 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27836 written |= (1 << 10);
27837 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27838 }
27839 {
b29791a8
DE
27840 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27841 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27842 written |= (1 << 14);
27843 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27844 }
27845 {
b29791a8
DE
27846 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27847 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27848 written |= (1 << 11);
27849 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27850 }
27851 {
b29791a8
DE
27852 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27853 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27854 written |= (1 << 15);
27855 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27856 }
27857 {
b29791a8
DE
27858 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27859 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27860 written |= (1 << 12);
27861 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27862 }
27863 {
b29791a8
DE
27864 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27865 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27866 written |= (1 << 16);
27867 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27868 }
27869 {
b29791a8
DE
27870 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27871 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27872 written |= (1 << 13);
27873 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27874 }
27875 {
b29791a8
DE
27876 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27877 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27878 written |= (1 << 17);
27879 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27880 }
27881}
27882}
27883}
27884
27885 abuf->written = written;
27886 return vpc;
27887#undef FLD
27888}
27889
27890/* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27891
27892static SEM_PC
27893SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27894{
27895#define FLD(f) abuf->fields.sfmt_cmbtohe.f
27896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27897 int UNUSED written = 0;
27898 IADDR UNUSED pc = abuf->addr;
27899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27900
27901{
27902 {
27903 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27904 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27905 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27906 }
27907 {
27908 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27909 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27910 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27911 }
27912if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27913frvbf_media_register_not_aligned (current_cpu);
27914} else {
27915if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27916{
27917 {
b29791a8
DE
27918 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27919 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27920 written |= (1 << 12);
27921 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27922 }
27923 {
b29791a8
DE
27924 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27925 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27926 written |= (1 << 16);
27927 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27928 }
27929 {
b29791a8
DE
27930 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27931 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27932 written |= (1 << 13);
27933 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27934 }
27935 {
b29791a8
DE
27936 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27937 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27938 written |= (1 << 17);
27939 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27940 }
27941 {
b29791a8
DE
27942 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27943 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27944 written |= (1 << 14);
27945 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27946 }
27947 {
b29791a8
DE
27948 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27949 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27950 written |= (1 << 18);
27951 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27952 }
27953 {
b29791a8
DE
27954 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27955 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27956 written |= (1 << 15);
27957 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27958 }
27959 {
b29791a8
DE
27960 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27961 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27962 written |= (1 << 19);
27963 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27964 }
27965}
27966}
27967}
27968}
27969
27970 abuf->written = written;
27971 return vpc;
27972#undef FLD
27973}
27974
d03ea14f 27975/* mnop: mnop$pack */
b34f6357
DB
27976
27977static SEM_PC
d03ea14f 27978SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
b34f6357 27979{
2310652a 27980#define FLD(f) abuf->fields.sfmt_empty.f
d03ea14f
DB
27981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27982 int UNUSED written = 0;
27983 IADDR UNUSED pc = abuf->addr;
27984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27985
27986((void) 0); /*nop*/
27987
27988 return vpc;
27989#undef FLD
27990}
27991
27992/* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27993
27994static SEM_PC
27995SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27996{
27997#define FLD(f) abuf->fields.sfmt_mdasaccs.f
27998 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27999 int UNUSED written = 0;
28000 IADDR UNUSED pc = abuf->addr;
28001 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28002
28003frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
28004
28005 return vpc;
28006#undef FLD
28007}
28008
28009/* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
28010
28011static SEM_PC
28012SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28013{
28014#define FLD(f) abuf->fields.sfmt_mdasaccs.f
b34f6357
DB
28015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28016 int UNUSED written = 0;
28017 IADDR UNUSED pc = abuf->addr;
28018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28019
d03ea14f 28020frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
b34f6357
DB
28021
28022 return vpc;
28023#undef FLD
28024}
28025
28026/* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
28027
28028static SEM_PC
28029SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28030{
28031#define FLD(f) abuf->fields.sfmt_mcuti.f
28032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28033 int UNUSED written = 0;
28034 IADDR UNUSED pc = abuf->addr;
28035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28036
28037 {
28038 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
28039 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28040 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28041 }
28042
28043 return vpc;
28044#undef FLD
28045}
28046
28047/* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
28048
28049static SEM_PC
28050SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28051{
28052#define FLD(f) abuf->fields.sfmt_mrdaccg.f
28053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28054 int UNUSED written = 0;
28055 IADDR UNUSED pc = abuf->addr;
28056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28057
28058 {
28059 SI opval = GET_H_ACCG (FLD (f_ACCGi));
28060 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28061 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28062 }
28063
28064 return vpc;
28065#undef FLD
28066}
28067
28068/* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
28069
28070static SEM_PC
28071SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28072{
28073#define FLD(f) abuf->fields.sfmt_cmmachs.f
28074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28075 int UNUSED written = 0;
28076 IADDR UNUSED pc = abuf->addr;
28077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28078
28079 {
28080 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
28081 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
28082 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28083 }
28084
28085 return vpc;
28086#undef FLD
28087}
28088
28089/* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28090
28091static SEM_PC
28092SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28093{
28094#define FLD(f) abuf->fields.sfmt_mwtaccg.f
28095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28096 int UNUSED written = 0;
28097 IADDR UNUSED pc = abuf->addr;
28098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28099
1c453cd6
DB
28100{
28101frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
b34f6357
DB
28102 {
28103 USI opval = GET_H_FR_INT (FLD (f_FRi));
28104 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28105 TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28106 }
1c453cd6 28107}
b34f6357
DB
28108
28109 return vpc;
28110#undef FLD
28111}
28112
28113/* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28114
28115static SEM_PC
28116SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28117{
2310652a 28118#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
28119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28120 int UNUSED written = 0;
28121 IADDR UNUSED pc = abuf->addr;
28122 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28123
28124frvbf_media_cop (current_cpu, 1);
28125
28126 return vpc;
28127#undef FLD
28128}
28129
28130/* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28131
28132static SEM_PC
28133SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28134{
2310652a 28135#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
28136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28137 int UNUSED written = 0;
28138 IADDR UNUSED pc = abuf->addr;
28139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28140
28141frvbf_media_cop (current_cpu, 2);
28142
28143 return vpc;
28144#undef FLD
28145}
28146
28147/* fnop: fnop$pack */
28148
28149static SEM_PC
28150SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28151{
2310652a 28152#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
28153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28154 int UNUSED written = 0;
28155 IADDR UNUSED pc = abuf->addr;
28156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28157
28158((void) 0); /*nop*/
28159
28160 return vpc;
28161#undef FLD
28162}
28163
28164/* Table of all semantic fns. */
28165
28166static const struct sem_fn_desc sem_fns[] = {
28167 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28168 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28169 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28170 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28171 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28172 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28173 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28174 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28175 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28176 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28177 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28178 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28179 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28180 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28181 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28182 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28183 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28184 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
e930b1f5
DB
28185 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28186 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28187 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
b34f6357
DB
28188 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28189 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28190 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
e930b1f5
DB
28191 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28192 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
b34f6357
DB
28193 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28194 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28195 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28196 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28197 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28198 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28199 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28200 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28201 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28202 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28203 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28204 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28205 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28206 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28207 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28208 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28209 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28210 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28211 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28212 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28213 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28214 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28215 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28216 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28217 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28218 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28219 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28220 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28221 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28222 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28223 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28224 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28225 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28226 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28227 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28228 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28229 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
e930b1f5
DB
28230 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28231 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
b34f6357
DB
28232 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28233 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28234 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28235 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28236 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28237 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28238 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28239 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28240 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28241 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28242 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28243 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28244 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28245 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28246 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28247 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28248 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28249 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28250 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28251 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28252 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28253 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28254 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28255 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28256 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28257 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28258 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28259 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28260 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28261 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28262 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28263 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28264 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28265 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28266 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28267 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28268 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28269 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28270 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28271 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28272 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28273 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28274 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28275 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28276 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28277 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28278 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28279 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28280 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28281 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28282 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28283 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28284 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28285 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28286 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28287 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28288 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28289 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28290 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28291 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28292 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28293 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28294 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28295 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28296 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28297 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28298 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28299 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28300 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28301 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28302 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28303 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28304 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28305 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28306 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28307 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28308 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28309 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28310 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28311 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28312 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28313 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28314 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28315 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28316 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28317 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28318 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28319 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28320 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28321 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28322 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28323 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28324 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28325 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28326 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28327 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28328 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28329 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28330 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28331 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28332 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28333 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28334 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28335 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28336 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28337 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28338 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28339 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28340 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28341 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
b34f6357
DB
28342 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28343 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28344 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28345 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28346 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28347 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28348 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28349 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
b34f6357
DB
28350 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28351 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28352 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
b34f6357
DB
28353 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28354 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28355 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
b34f6357
DB
28356 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28357 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28358 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28359 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28360 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28361 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28362 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28363 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28364 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28365 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28366 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28367 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28368 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28369 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28370 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28371 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28372 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28373 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28374 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28375 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28376 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28377 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28378 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28379 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28380 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28381 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28382 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28383 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28384 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28385 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28386 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28387 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28388 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28389 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28390 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28391 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28392 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28393 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28394 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28395 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28396 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28397 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28398 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28399 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28400 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28401 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28402 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28403 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28404 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28405 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28406 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28407 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28408 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28409 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28410 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28411 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28412 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28413 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28414 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28415 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28416 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28417 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28418 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28419 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28420 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28421 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28422 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28423 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28424 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28425 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28426 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28427 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28428 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28429 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28430 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28431 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28432 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28433 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28434 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28435 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28436 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28437 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28438 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28439 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28440 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28441 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28442 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28443 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28444 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28445 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28446 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28447 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28448 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28449 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28450 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28451 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28452 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28453 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28454 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28455 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28456 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28457 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28458 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28459 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28460 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28461 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28462 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28463 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28464 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28465 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28466 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28467 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28468 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28469 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28470 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28471 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28472 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28473 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28474 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28475 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28476 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28477 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28478 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28479 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28480 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28481 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28482 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28483 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28484 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28485 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28486 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28487 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28488 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28489 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28490 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28491 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28492 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28493 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28494 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28495 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28496 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28497 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28498 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28499 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28500 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28501 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28502 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28503 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28504 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28505 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28506 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28507 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28508 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28509 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28510 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28511 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28512 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28513 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28514 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28515 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28516 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28517 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28518 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28519 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28520 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28521 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28522 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28523 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28524 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28525 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28526 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28527 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28528 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28529 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28530 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28531 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28532 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28533 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28534 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28535 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28536 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28537 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28538 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28539 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28540 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28541 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28542 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28543 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28544 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28545 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28546 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28547 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28548 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28549 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28550 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28551 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28552 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28553 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28554 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28555 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28556 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28557 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28558 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28559 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28560 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28561 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28562 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28563 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28564 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28565 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28566 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28567 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28568 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28569 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28570 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28571 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28572 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28573 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28574 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28575 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28576 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28577 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28578 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28579 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28580 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28581 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28582 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28583 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28584 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28585 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28586 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28587 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28588 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28589 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28590 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28591 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28592 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28593 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28594 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28595 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28596 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28597 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28598 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28599 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28600 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28601 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28602 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28603 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28604 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28605 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28606 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28607 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28608 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28609 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28610 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28611 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28612 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28613 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28614 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28615 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28616 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28617 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28618 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28619 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28620 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28621 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28622 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28623 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28624 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28625 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28626 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28627 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28628 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28629 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28630 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28631 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28632 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28633 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28634 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28635 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28636 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28637 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28638 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28639 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28640 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28641 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28642 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28643 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28644 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28645 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28646 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28647 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28648 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28649 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28650 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28651 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28652 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28653 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28654 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28655 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28656 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28657 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28658 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28659 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28660 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28661 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28662 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28663 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28664 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28665 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28666 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28667 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28668 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28669 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28670 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28671 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28672 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28673 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28674 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28675 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28676 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28677 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28678 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28679 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28680 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28681 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28682 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28683 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28684 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28685 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28686 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28687 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28688 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28689 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28690 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28691 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28692 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28693 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28694 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
676a64f4
RS
28695 { FRVBF_INSN_LRAI, SEM_FN_NAME (frvbf,lrai) },
28696 { FRVBF_INSN_LRAD, SEM_FN_NAME (frvbf,lrad) },
28697 { FRVBF_INSN_TLBPR, SEM_FN_NAME (frvbf,tlbpr) },
b34f6357
DB
28698 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28699 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28700 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28701 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28702 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28703 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28704 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28705 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28706 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28707 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28708 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28709 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28710 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28711 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28712 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28713 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28714 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28715 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28716 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28717 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28718 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28719 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28720 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28721 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28722 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28723 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28724 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28725 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28726 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28727 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28728 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28729 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28730 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28731 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28732 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28733 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28734 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28735 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28736 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28737 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28738 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28739 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28740 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28741 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28742 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28743 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28744 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28745 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28746 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28747 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28748 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28749 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28750 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28751 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28752 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28753 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28754 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28755 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28756 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28757 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28758 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28759 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28760 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28761 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28762 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28763 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28764 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28765 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28766 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28767 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28768 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28769 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28770 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28771 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28772 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28773 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28774 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28775 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28776 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28777 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28778 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28779 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28780 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28781 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28782 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28783 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28784 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28785 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28786 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28787 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28788 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28789 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28790 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28791 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28792 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28793 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28794 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28795 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28796 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28797 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28798 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28799 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28800 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28801 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28802 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28803 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28804 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28805 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28806 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28807 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28808 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28809 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28810 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28811 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28812 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28813 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28814 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28815 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28816 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28817 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28818 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28819 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28820 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28821 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28822 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28823 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28824 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28825 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28826 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28827 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28828 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28829 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28830 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28831 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28832 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28833 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28834 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28835 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28836 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28837 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28838 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28839 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28840 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28841 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28842 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28843 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28844 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
676a64f4
RS
28845 { FRVBF_INSN_MQLCLRHS, SEM_FN_NAME (frvbf,mqlclrhs) },
28846 { FRVBF_INSN_MQLMTHS, SEM_FN_NAME (frvbf,mqlmths) },
28847 { FRVBF_INSN_MQSLLHI, SEM_FN_NAME (frvbf,mqsllhi) },
28848 { FRVBF_INSN_MQSRAHI, SEM_FN_NAME (frvbf,mqsrahi) },
b34f6357
DB
28849 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28850 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28851 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28852 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28853 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28854 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28855 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28856 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28857 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28858 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28859 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28860 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28861 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28862 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28863 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28864 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28865 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28866 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28867 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28868 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28869 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28870 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28871 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28872 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28873 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28874 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28875 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28876 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28877 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28878 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28879 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28880 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28881 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28882 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28883 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28884 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28885 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28886 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28887 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28888 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28889 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28890 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28891 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28892 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28893 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28894 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28895 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28896 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28897 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28898 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28899 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28900 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28901 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28902 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28903 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28904 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28905 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
d03ea14f
DB
28906 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28907 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28908 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
b34f6357
DB
28909 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28910 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28911 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28912 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28913 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28914 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28915 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28916 { 0, 0 }
28917};
28918
28919/* Add the semantic fns to IDESC_TABLE. */
28920
28921void
28922SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28923{
28924 IDESC *idesc_table = CPU_IDESC (current_cpu);
28925 const struct sem_fn_desc *sf;
28926 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28927
28928 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28929 {
28930 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28931 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28932 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28933#if FAST_P
28934 if (valid_p)
28935 idesc_table[sf->index].sem_fast = sf->fn;
28936 else
28937 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28938#else
28939 if (valid_p)
28940 idesc_table[sf->index].sem_full = sf->fn;
28941 else
28942 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28943#endif
28944 }
28945}
28946
This page took 1.441678 seconds and 4 git commands to generate.