]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/frv/sem.c
Update years in copyright notice for the GDB files.
[thirdparty/binutils-gdb.git] / sim / frv / sem.c
CommitLineData
b34f6357
DB
1/* Simulator instruction semantics for frvbf.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
8acc9f48 5Copyright 1996-2013 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 19 You should have received a copy of the GNU General Public License along
51b318de 20 with this program; if not, see <http://www.gnu.org/licenses/>.
b34f6357
DB
21
22*/
23
24#define WANT_CPU frvbf
25#define WANT_CPU_FRVBF
26
27#include "sim-main.h"
28#include "cgen-mem.h"
29#include "cgen-ops.h"
30
31#undef GET_ATTR
b34f6357 32#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
b34f6357
DB
33
34/* This is used so that we can compile two copies of the semantic code,
35 one with full feature support and one without that runs fast(er).
36 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
37#if FAST_P
38#define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
39#undef TRACE_RESULT
40#define TRACE_RESULT(cpu, abuf, name, type, val)
41#else
42#define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
43#endif
44
45/* x-invalid: --invalid-- */
46
47static SEM_PC
48SEM_FN_NAME (frvbf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
49{
2310652a 50#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
51 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
52 int UNUSED written = 0;
53 IADDR UNUSED pc = abuf->addr;
54 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
55
56 {
57 /* Update the recorded pc in the cpu state struct.
58 Only necessary for WITH_SCACHE case, but to avoid the
59 conditional compilation .... */
60 SET_H_PC (pc);
61 /* Virtual insns have zero size. Overwrite vpc with address of next insn
62 using the default-insn-bitsize spec. When executing insns in parallel
63 we may want to queue the fault and continue execution. */
64 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
65 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
66 }
67
68 return vpc;
69#undef FLD
70}
71
72/* x-after: --after-- */
73
74static SEM_PC
75SEM_FN_NAME (frvbf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
76{
2310652a 77#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
78 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
79 int UNUSED written = 0;
80 IADDR UNUSED pc = abuf->addr;
81 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
82
83 {
84#if WITH_SCACHE_PBB_FRVBF
85 frvbf_pbb_after (current_cpu, sem_arg);
86#endif
87 }
88
89 return vpc;
90#undef FLD
91}
92
93/* x-before: --before-- */
94
95static SEM_PC
96SEM_FN_NAME (frvbf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
97{
2310652a 98#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
99 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
100 int UNUSED written = 0;
101 IADDR UNUSED pc = abuf->addr;
102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
103
104 {
105#if WITH_SCACHE_PBB_FRVBF
106 frvbf_pbb_before (current_cpu, sem_arg);
107#endif
108 }
109
110 return vpc;
111#undef FLD
112}
113
114/* x-cti-chain: --cti-chain-- */
115
116static SEM_PC
117SEM_FN_NAME (frvbf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
118{
2310652a 119#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
120 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
121 int UNUSED written = 0;
122 IADDR UNUSED pc = abuf->addr;
123 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
124
125 {
126#if WITH_SCACHE_PBB_FRVBF
127#ifdef DEFINE_SWITCH
128 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
129 pbb_br_type, pbb_br_npc);
130 BREAK (sem);
131#else
132 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
133 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
134 CPU_PBB_BR_TYPE (current_cpu),
135 CPU_PBB_BR_NPC (current_cpu));
136#endif
137#endif
138 }
139
140 return vpc;
141#undef FLD
142}
143
144/* x-chain: --chain-- */
145
146static SEM_PC
147SEM_FN_NAME (frvbf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
148{
2310652a 149#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
150 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
151 int UNUSED written = 0;
152 IADDR UNUSED pc = abuf->addr;
153 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
154
155 {
156#if WITH_SCACHE_PBB_FRVBF
157 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
158#ifdef DEFINE_SWITCH
159 BREAK (sem);
160#endif
161#endif
162 }
163
164 return vpc;
165#undef FLD
166}
167
168/* x-begin: --begin-- */
169
170static SEM_PC
171SEM_FN_NAME (frvbf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
172{
2310652a 173#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
175 int UNUSED written = 0;
176 IADDR UNUSED pc = abuf->addr;
177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
178
179 {
180#if WITH_SCACHE_PBB_FRVBF
181#if defined DEFINE_SWITCH || defined FAST_P
182 /* In the switch case FAST_P is a constant, allowing several optimizations
183 in any called inline functions. */
184 vpc = frvbf_pbb_begin (current_cpu, FAST_P);
185#else
186#if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
187 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
188#else
189 vpc = frvbf_pbb_begin (current_cpu, 0);
190#endif
191#endif
192#endif
193 }
194
195 return vpc;
196#undef FLD
197}
198
199/* add: add$pack $GRi,$GRj,$GRk */
200
201static SEM_PC
202SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
203{
204#define FLD(f) abuf->fields.sfmt_addcc.f
205 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
206 int UNUSED written = 0;
207 IADDR UNUSED pc = abuf->addr;
208 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
209
210 {
211 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
212 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
213 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
214 }
215
216 return vpc;
217#undef FLD
218}
219
220/* sub: sub$pack $GRi,$GRj,$GRk */
221
222static SEM_PC
223SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
224{
225#define FLD(f) abuf->fields.sfmt_addcc.f
226 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
227 int UNUSED written = 0;
228 IADDR UNUSED pc = abuf->addr;
229 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
230
231 {
232 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
233 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
234 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
235 }
236
237 return vpc;
238#undef FLD
239}
240
241/* and: and$pack $GRi,$GRj,$GRk */
242
243static SEM_PC
244SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
245{
246#define FLD(f) abuf->fields.sfmt_addcc.f
247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
248 int UNUSED written = 0;
249 IADDR UNUSED pc = abuf->addr;
250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
251
252 {
253 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
254 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
255 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
256 }
257
258 return vpc;
259#undef FLD
260}
261
262/* or: or$pack $GRi,$GRj,$GRk */
263
264static SEM_PC
265SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
266{
267#define FLD(f) abuf->fields.sfmt_addcc.f
268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
269 int UNUSED written = 0;
270 IADDR UNUSED pc = abuf->addr;
271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
272
273 {
274 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
275 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
276 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
277 }
278
279 return vpc;
280#undef FLD
281}
282
283/* xor: xor$pack $GRi,$GRj,$GRk */
284
285static SEM_PC
286SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
287{
288#define FLD(f) abuf->fields.sfmt_addcc.f
289 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
290 int UNUSED written = 0;
291 IADDR UNUSED pc = abuf->addr;
292 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
293
294 {
295 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
296 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
297 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
298 }
299
300 return vpc;
301#undef FLD
302}
303
304/* not: not$pack $GRj,$GRk */
305
306static SEM_PC
307SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
308{
e930b1f5 309#define FLD(f) abuf->fields.sfmt_scutss.f
b34f6357
DB
310 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
311 int UNUSED written = 0;
312 IADDR UNUSED pc = abuf->addr;
313 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
314
315 {
316 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
317 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
318 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
319 }
320
321 return vpc;
322#undef FLD
323}
324
325/* sdiv: sdiv$pack $GRi,$GRj,$GRk */
326
327static SEM_PC
328SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
329{
330#define FLD(f) abuf->fields.sfmt_addcc.f
331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
332 int UNUSED written = 0;
333 IADDR UNUSED pc = abuf->addr;
334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
335
336{
337frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
338; /*clobber*/
339}
340
341 return vpc;
342#undef FLD
343}
344
345/* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
346
347static SEM_PC
348SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
349{
350#define FLD(f) abuf->fields.sfmt_addcc.f
351 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
352 int UNUSED written = 0;
353 IADDR UNUSED pc = abuf->addr;
354 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
355
356{
357frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
358; /*clobber*/
359}
360
361 return vpc;
362#undef FLD
363}
364
365/* udiv: udiv$pack $GRi,$GRj,$GRk */
366
367static SEM_PC
368SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
369{
370#define FLD(f) abuf->fields.sfmt_addcc.f
371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
372 int UNUSED written = 0;
373 IADDR UNUSED pc = abuf->addr;
374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
375
376{
377frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
378; /*clobber*/
379}
380
381 return vpc;
382#undef FLD
383}
384
385/* nudiv: nudiv$pack $GRi,$GRj,$GRk */
386
387static SEM_PC
388SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
389{
390#define FLD(f) abuf->fields.sfmt_addcc.f
391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
392 int UNUSED written = 0;
393 IADDR UNUSED pc = abuf->addr;
394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
395
396{
397frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
398; /*clobber*/
399}
400
401 return vpc;
402#undef FLD
403}
404
405/* smul: smul$pack $GRi,$GRj,$GRdoublek */
406
407static SEM_PC
408SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
409{
410#define FLD(f) abuf->fields.sfmt_smulcc.f
411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
412 int UNUSED written = 0;
413 IADDR UNUSED pc = abuf->addr;
414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
415
416 {
417 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
418 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
419 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
420 }
421
422 return vpc;
423#undef FLD
424}
425
426/* umul: umul$pack $GRi,$GRj,$GRdoublek */
427
428static SEM_PC
429SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
430{
431#define FLD(f) abuf->fields.sfmt_smulcc.f
432 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
433 int UNUSED written = 0;
434 IADDR UNUSED pc = abuf->addr;
435 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
436
437 {
438 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
439 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
440 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
441 }
442
443 return vpc;
444#undef FLD
445}
446
e930b1f5
DB
447/* smu: smu$pack $GRi,$GRj */
448
449static SEM_PC
450SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
451{
452#define FLD(f) abuf->fields.sfmt_smass.f
453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
454 int UNUSED written = 0;
455 IADDR UNUSED pc = abuf->addr;
456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
457
458 {
459 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
460 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
461 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
462 }
463
464 return vpc;
465#undef FLD
466}
467
468/* smass: smass$pack $GRi,$GRj */
469
470static SEM_PC
471SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
472{
473#define FLD(f) abuf->fields.sfmt_smass.f
474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
475 int UNUSED written = 0;
476 IADDR UNUSED pc = abuf->addr;
477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
478
479 {
bce3bbcb 480 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
481 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
482 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
483 }
484
485 return vpc;
486#undef FLD
487}
488
489/* smsss: smsss$pack $GRi,$GRj */
490
491static SEM_PC
492SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
493{
494#define FLD(f) abuf->fields.sfmt_smass.f
495 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
496 int UNUSED written = 0;
497 IADDR UNUSED pc = abuf->addr;
498 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
499
500 {
bce3bbcb 501 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
502 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
503 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
504 }
505
506 return vpc;
507#undef FLD
508}
509
b34f6357
DB
510/* sll: sll$pack $GRi,$GRj,$GRk */
511
512static SEM_PC
513SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
514{
515#define FLD(f) abuf->fields.sfmt_addcc.f
516 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
517 int UNUSED written = 0;
518 IADDR UNUSED pc = abuf->addr;
519 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
520
521 {
522 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
523 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
524 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
525 }
526
527 return vpc;
528#undef FLD
529}
530
531/* srl: srl$pack $GRi,$GRj,$GRk */
532
533static SEM_PC
534SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
535{
536#define FLD(f) abuf->fields.sfmt_addcc.f
537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
538 int UNUSED written = 0;
539 IADDR UNUSED pc = abuf->addr;
540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
541
542 {
543 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
544 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
545 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
546 }
547
548 return vpc;
549#undef FLD
550}
551
552/* sra: sra$pack $GRi,$GRj,$GRk */
553
554static SEM_PC
555SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
556{
557#define FLD(f) abuf->fields.sfmt_addcc.f
558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
559 int UNUSED written = 0;
560 IADDR UNUSED pc = abuf->addr;
561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
562
563 {
564 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
565 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
566 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
567 }
568
569 return vpc;
570#undef FLD
571}
572
e930b1f5
DB
573/* slass: slass$pack $GRi,$GRj,$GRk */
574
575static SEM_PC
576SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
577{
578#define FLD(f) abuf->fields.sfmt_addcc.f
579 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
580 int UNUSED written = 0;
581 IADDR UNUSED pc = abuf->addr;
582 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
583
584 {
585 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
586 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
587 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
588 }
589
590 return vpc;
591#undef FLD
592}
593
594/* scutss: scutss$pack $GRj,$GRk */
595
596static SEM_PC
597SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
598{
599#define FLD(f) abuf->fields.sfmt_scutss.f
600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
601 int UNUSED written = 0;
602 IADDR UNUSED pc = abuf->addr;
603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
604
605 {
606 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
607 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
608 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
609 }
610
611 return vpc;
612#undef FLD
613}
614
b34f6357
DB
615/* scan: scan$pack $GRi,$GRj,$GRk */
616
617static SEM_PC
618SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
619{
620#define FLD(f) abuf->fields.sfmt_addcc.f
621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
622 int UNUSED written = 0;
623 IADDR UNUSED pc = abuf->addr;
624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
625
626{
627 SI tmp_tmp1;
628 SI tmp_tmp2;
629 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
630 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
631 {
632 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
633 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
634 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
635 }
636}
637
638 return vpc;
639#undef FLD
640}
641
642/* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
643
644static SEM_PC
645SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
646{
647#define FLD(f) abuf->fields.sfmt_cswap.f
648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
649 int UNUSED written = 0;
650 IADDR UNUSED pc = abuf->addr;
651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
652
653if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
654 {
655 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
656 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
657 written |= (1 << 4);
658 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
659 }
660}
661
662 abuf->written = written;
663 return vpc;
664#undef FLD
665}
666
667/* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
668
669static SEM_PC
670SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
671{
672#define FLD(f) abuf->fields.sfmt_cswap.f
673 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
674 int UNUSED written = 0;
675 IADDR UNUSED pc = abuf->addr;
676 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
677
678if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
679 {
680 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
681 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
682 written |= (1 << 4);
683 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
684 }
685}
686
687 abuf->written = written;
688 return vpc;
689#undef FLD
690}
691
692/* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
693
694static SEM_PC
695SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
696{
697#define FLD(f) abuf->fields.sfmt_cswap.f
698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
699 int UNUSED written = 0;
700 IADDR UNUSED pc = abuf->addr;
701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
702
703if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
704 {
705 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
706 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
707 written |= (1 << 4);
708 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
709 }
710}
711
712 abuf->written = written;
713 return vpc;
714#undef FLD
715}
716
717/* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
718
719static SEM_PC
720SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
721{
722#define FLD(f) abuf->fields.sfmt_cswap.f
723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
724 int UNUSED written = 0;
725 IADDR UNUSED pc = abuf->addr;
726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
727
728if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
729 {
730 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
731 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
732 written |= (1 << 4);
733 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
734 }
735}
736
737 abuf->written = written;
738 return vpc;
739#undef FLD
740}
741
742/* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
743
744static SEM_PC
745SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
746{
747#define FLD(f) abuf->fields.sfmt_cswap.f
748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
749 int UNUSED written = 0;
750 IADDR UNUSED pc = abuf->addr;
751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
752
753if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
754 {
755 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
756 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
757 written |= (1 << 4);
758 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
759 }
760}
761
762 abuf->written = written;
763 return vpc;
764#undef FLD
765}
766
767/* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
768
769static SEM_PC
770SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
771{
772#define FLD(f) abuf->fields.sfmt_cswap.f
773 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
774 int UNUSED written = 0;
775 IADDR UNUSED pc = abuf->addr;
776 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
777
778if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
779 {
780 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
781 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
782 written |= (1 << 3);
783 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
784 }
785}
786
787 abuf->written = written;
788 return vpc;
789#undef FLD
790}
791
792/* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
793
794static SEM_PC
795SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
796{
797#define FLD(f) abuf->fields.sfmt_clddu.f
798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
799 int UNUSED written = 0;
800 IADDR UNUSED pc = abuf->addr;
801 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
802
803if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
804 {
805 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
806 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
807 written |= (1 << 4);
808 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
809 }
810}
811
812 abuf->written = written;
813 return vpc;
814#undef FLD
815}
816
817/* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
818
819static SEM_PC
820SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
821{
822#define FLD(f) abuf->fields.sfmt_cswap.f
823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
824 int UNUSED written = 0;
825 IADDR UNUSED pc = abuf->addr;
826 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
827
828if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
829{
830frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
831; /*clobber*/
832}
833}
834
835 abuf->written = written;
836 return vpc;
837#undef FLD
838}
839
840/* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
841
842static SEM_PC
843SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
844{
845#define FLD(f) abuf->fields.sfmt_cswap.f
846 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
847 int UNUSED written = 0;
848 IADDR UNUSED pc = abuf->addr;
849 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
850
851if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
852{
853frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
854; /*clobber*/
855}
856}
857
858 abuf->written = written;
859 return vpc;
860#undef FLD
861}
862
863/* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
864
865static SEM_PC
866SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
867{
868#define FLD(f) abuf->fields.sfmt_cswap.f
869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
870 int UNUSED written = 0;
871 IADDR UNUSED pc = abuf->addr;
872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
873
874if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
875 {
876 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
877 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
878 written |= (1 << 4);
879 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
880 }
881}
882
883 abuf->written = written;
884 return vpc;
885#undef FLD
886}
887
888/* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
889
890static SEM_PC
891SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
892{
893#define FLD(f) abuf->fields.sfmt_cswap.f
894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
895 int UNUSED written = 0;
896 IADDR UNUSED pc = abuf->addr;
897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
898
899if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
900 {
901 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
902 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
903 written |= (1 << 4);
904 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
905 }
906}
907
908 abuf->written = written;
909 return vpc;
910#undef FLD
911}
912
913/* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
914
915static SEM_PC
916SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
917{
918#define FLD(f) abuf->fields.sfmt_cswap.f
919 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
920 int UNUSED written = 0;
921 IADDR UNUSED pc = abuf->addr;
922 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
923
924if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
925 {
926 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
927 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
928 written |= (1 << 4);
929 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
930 }
931}
932
933 abuf->written = written;
934 return vpc;
935#undef FLD
936}
937
938/* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
939
940static SEM_PC
941SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
942{
943#define FLD(f) abuf->fields.sfmt_cswap.f
944 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
945 int UNUSED written = 0;
946 IADDR UNUSED pc = abuf->addr;
947 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
948
949if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
950{
951 SI tmp_tmp1;
952 SI tmp_tmp2;
953 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
954 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
955 {
956 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
957 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
958 written |= (1 << 4);
959 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
960 }
961}
962}
963
964 abuf->written = written;
965 return vpc;
966#undef FLD
967}
968
969/* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
970
971static SEM_PC
972SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
973{
974#define FLD(f) abuf->fields.sfmt_addcc.f
975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
976 int UNUSED written = 0;
977 IADDR UNUSED pc = abuf->addr;
978 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
979
980{
981 BI tmp_tmp;
982 QI tmp_cc;
983 SI tmp_result;
984 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
985 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
986if (EQBI (tmp_tmp, 0)) {
987 tmp_cc = ANDQI (tmp_cc, 13);
988} else {
989 tmp_cc = ORQI (tmp_cc, 2);
990}
991 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
992if (EQBI (tmp_tmp, 0)) {
993 tmp_cc = ANDQI (tmp_cc, 14);
994} else {
995 tmp_cc = ORQI (tmp_cc, 1);
996}
997 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
998if (EQSI (tmp_result, 0)) {
999 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1000} else {
1001if (LTSI (tmp_result, 0)) {
1002 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1003} else {
1004 tmp_cc = ANDQI (tmp_cc, 3);
1005}
1006}
1007 {
1008 SI opval = tmp_result;
1009 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1010 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1011 }
1012 {
1013 UQI opval = tmp_cc;
1014 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1015 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1016 }
1017}
1018
1019 return vpc;
1020#undef FLD
1021}
1022
1023/* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1024
1025static SEM_PC
1026SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1027{
1028#define FLD(f) abuf->fields.sfmt_addcc.f
1029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1030 int UNUSED written = 0;
1031 IADDR UNUSED pc = abuf->addr;
1032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1033
1034{
1035 BI tmp_tmp;
1036 QI tmp_cc;
1037 SI tmp_result;
1038 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1039 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1040if (EQBI (tmp_tmp, 0)) {
1041 tmp_cc = ANDQI (tmp_cc, 13);
1042} else {
1043 tmp_cc = ORQI (tmp_cc, 2);
1044}
1045 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1046if (EQBI (tmp_tmp, 0)) {
1047 tmp_cc = ANDQI (tmp_cc, 14);
1048} else {
1049 tmp_cc = ORQI (tmp_cc, 1);
1050}
1051 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1052if (EQSI (tmp_result, 0)) {
1053 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1054} else {
1055if (LTSI (tmp_result, 0)) {
1056 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1057} else {
1058 tmp_cc = ANDQI (tmp_cc, 3);
1059}
1060}
1061 {
1062 SI opval = tmp_result;
1063 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1064 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1065 }
1066 {
1067 UQI opval = tmp_cc;
1068 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1069 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1070 }
1071}
1072
1073 return vpc;
1074#undef FLD
1075}
1076
1077/* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1078
1079static SEM_PC
1080SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1081{
1082#define FLD(f) abuf->fields.sfmt_addcc.f
1083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1084 int UNUSED written = 0;
1085 IADDR UNUSED pc = abuf->addr;
1086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1087
1088{
1089 SI tmp_tmp;
1090 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1091 {
1092 SI opval = tmp_tmp;
1093 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1094 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1095 }
1096if (EQSI (tmp_tmp, 0)) {
1097 {
1098 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1099 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1100 written |= (1 << 4);
1101 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1102 }
1103} else {
1104if (LTSI (tmp_tmp, 0)) {
1105 {
1106 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1107 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1108 written |= (1 << 4);
1109 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1110 }
1111} else {
1112 {
1113 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1114 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1115 written |= (1 << 4);
1116 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1117 }
1118}
1119}
1120}
1121
1122 abuf->written = written;
1123 return vpc;
1124#undef FLD
1125}
1126
1127/* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1128
1129static SEM_PC
1130SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1131{
1132#define FLD(f) abuf->fields.sfmt_addcc.f
1133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1134 int UNUSED written = 0;
1135 IADDR UNUSED pc = abuf->addr;
1136 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1137
1138{
1139 SI tmp_tmp;
1140 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1141 {
1142 SI opval = tmp_tmp;
1143 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1144 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1145 }
1146if (EQSI (tmp_tmp, 0)) {
1147 {
1148 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1149 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1150 written |= (1 << 4);
1151 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1152 }
1153} else {
1154if (LTSI (tmp_tmp, 0)) {
1155 {
1156 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1157 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1158 written |= (1 << 4);
1159 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1160 }
1161} else {
1162 {
1163 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1164 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1165 written |= (1 << 4);
1166 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1167 }
1168}
1169}
1170}
1171
1172 abuf->written = written;
1173 return vpc;
1174#undef FLD
1175}
1176
1177/* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1178
1179static SEM_PC
1180SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1181{
1182#define FLD(f) abuf->fields.sfmt_addcc.f
1183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1184 int UNUSED written = 0;
1185 IADDR UNUSED pc = abuf->addr;
1186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1187
1188{
1189 SI tmp_tmp;
1190 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1191 {
1192 SI opval = tmp_tmp;
1193 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1194 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1195 }
1196if (EQSI (tmp_tmp, 0)) {
1197 {
1198 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1199 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1200 written |= (1 << 4);
1201 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1202 }
1203} else {
1204if (LTSI (tmp_tmp, 0)) {
1205 {
1206 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1207 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1208 written |= (1 << 4);
1209 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1210 }
1211} else {
1212 {
1213 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1214 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1215 written |= (1 << 4);
1216 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1217 }
1218}
1219}
1220}
1221
1222 abuf->written = written;
1223 return vpc;
1224#undef FLD
1225}
1226
1227/* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1228
1229static SEM_PC
1230SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1231{
1232#define FLD(f) abuf->fields.sfmt_addcc.f
1233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1234 int UNUSED written = 0;
1235 IADDR UNUSED pc = abuf->addr;
1236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1237
1238{
1239 SI tmp_shift;
1240 SI tmp_tmp;
1241 QI tmp_cc;
1242 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1243 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)]));
1244 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1245 {
1246 SI opval = tmp_tmp;
1247 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1248 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1249 }
1250if (EQSI (tmp_tmp, 0)) {
1251 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1252} else {
1253if (LTSI (tmp_tmp, 0)) {
1254 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1255} else {
1256 tmp_cc = ANDQI (tmp_cc, 3);
1257}
1258}
1259 {
1260 UQI opval = tmp_cc;
1261 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1262 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1263 }
1264}
1265
1266 return vpc;
1267#undef FLD
1268}
1269
1270/* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1271
1272static SEM_PC
1273SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1274{
1275#define FLD(f) abuf->fields.sfmt_addcc.f
1276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1277 int UNUSED written = 0;
1278 IADDR UNUSED pc = abuf->addr;
1279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1280
1281{
1282 SI tmp_shift;
1283 SI tmp_tmp;
1284 QI tmp_cc;
1285 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1286 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)]));
1287 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1288 {
1289 SI opval = tmp_tmp;
1290 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1291 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1292 }
1293if (EQSI (tmp_tmp, 0)) {
1294 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1295} else {
1296if (LTSI (tmp_tmp, 0)) {
1297 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1298} else {
1299 tmp_cc = ANDQI (tmp_cc, 3);
1300}
1301}
1302 {
1303 UQI opval = tmp_cc;
1304 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1305 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1306 }
1307}
1308
1309 return vpc;
1310#undef FLD
1311}
1312
1313/* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1314
1315static SEM_PC
1316SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1317{
1318#define FLD(f) abuf->fields.sfmt_addcc.f
1319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1320 int UNUSED written = 0;
1321 IADDR UNUSED pc = abuf->addr;
1322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1323
1324{
1325 SI tmp_shift;
1326 SI tmp_tmp;
1327 QI tmp_cc;
1328 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1329 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)]));
1330 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1331 {
1332 SI opval = tmp_tmp;
1333 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1334 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1335 }
1336if (EQSI (tmp_tmp, 0)) {
1337 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1338} else {
1339if (LTSI (tmp_tmp, 0)) {
1340 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1341} else {
1342 tmp_cc = ANDQI (tmp_cc, 3);
1343}
1344}
1345 {
1346 UQI opval = tmp_cc;
1347 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1348 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1349 }
1350}
1351
1352 return vpc;
1353#undef FLD
1354}
1355
1356/* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1357
1358static SEM_PC
1359SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1360{
1361#define FLD(f) abuf->fields.sfmt_smulcc.f
1362 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1363 int UNUSED written = 0;
1364 IADDR UNUSED pc = abuf->addr;
1365 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1366
1367{
1368 DI tmp_tmp;
1369 QI tmp_cc;
1370 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1371 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1372if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1373 tmp_cc = ANDQI (tmp_cc, 7);
1374} else {
1375 tmp_cc = ORQI (tmp_cc, 8);
1376}
1377if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1378 tmp_cc = ANDQI (tmp_cc, 11);
1379} else {
1380 tmp_cc = ORQI (tmp_cc, 4);
1381}
1382 {
1383 DI opval = tmp_tmp;
1384 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1385 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1386 }
1387 {
1388 UQI opval = tmp_cc;
1389 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1390 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1391 }
1392}
1393
1394 return vpc;
1395#undef FLD
1396}
1397
1398/* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1399
1400static SEM_PC
1401SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1402{
1403#define FLD(f) abuf->fields.sfmt_smulcc.f
1404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1405 int UNUSED written = 0;
1406 IADDR UNUSED pc = abuf->addr;
1407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1408
1409{
1410 DI tmp_tmp;
1411 QI tmp_cc;
1412 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1413 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1414if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1415 tmp_cc = ANDQI (tmp_cc, 7);
1416} else {
1417 tmp_cc = ORQI (tmp_cc, 8);
1418}
1419if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1420 tmp_cc = ANDQI (tmp_cc, 11);
1421} else {
1422 tmp_cc = ORQI (tmp_cc, 4);
1423}
1424 {
1425 DI opval = tmp_tmp;
1426 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1427 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1428 }
1429 {
1430 UQI opval = tmp_cc;
1431 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1432 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1433 }
1434}
1435
1436 return vpc;
1437#undef FLD
1438}
1439
1440/* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1441
1442static SEM_PC
1443SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1444{
1445#define FLD(f) abuf->fields.sfmt_caddcc.f
1446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1447 int UNUSED written = 0;
1448 IADDR UNUSED pc = abuf->addr;
1449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1450
1451if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1452{
1453 BI tmp_tmp;
1454 QI tmp_cc;
1455 SI tmp_result;
b29791a8 1456 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
1457 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1458if (EQBI (tmp_tmp, 0)) {
1459 tmp_cc = ANDQI (tmp_cc, 13);
1460} else {
1461 tmp_cc = ORQI (tmp_cc, 2);
1462}
1463 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1464if (EQBI (tmp_tmp, 0)) {
1465 tmp_cc = ANDQI (tmp_cc, 14);
1466} else {
1467 tmp_cc = ORQI (tmp_cc, 1);
1468}
1469 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1470if (EQSI (tmp_result, 0)) {
1471 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1472} else {
1473if (LTSI (tmp_result, 0)) {
1474 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1475} else {
1476 tmp_cc = ANDQI (tmp_cc, 3);
1477}
1478}
1479 {
1480 SI opval = tmp_result;
1481 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1482 written |= (1 << 6);
1483 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1484 }
1485 {
1486 UQI opval = tmp_cc;
b29791a8 1487 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1488 written |= (1 << 7);
1489 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1490 }
1491}
1492}
1493
1494 abuf->written = written;
1495 return vpc;
1496#undef FLD
1497}
1498
1499/* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1500
1501static SEM_PC
1502SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1503{
1504#define FLD(f) abuf->fields.sfmt_caddcc.f
1505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1506 int UNUSED written = 0;
1507 IADDR UNUSED pc = abuf->addr;
1508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1509
1510if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1511{
1512 BI tmp_tmp;
1513 QI tmp_cc;
1514 SI tmp_result;
b29791a8 1515 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
1516 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1517if (EQBI (tmp_tmp, 0)) {
1518 tmp_cc = ANDQI (tmp_cc, 13);
1519} else {
1520 tmp_cc = ORQI (tmp_cc, 2);
1521}
1522 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1523if (EQBI (tmp_tmp, 0)) {
1524 tmp_cc = ANDQI (tmp_cc, 14);
1525} else {
1526 tmp_cc = ORQI (tmp_cc, 1);
1527}
1528 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1529if (EQSI (tmp_result, 0)) {
1530 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1531} else {
1532if (LTSI (tmp_result, 0)) {
1533 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1534} else {
1535 tmp_cc = ANDQI (tmp_cc, 3);
1536}
1537}
1538 {
1539 SI opval = tmp_result;
1540 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1541 written |= (1 << 6);
1542 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1543 }
1544 {
1545 UQI opval = tmp_cc;
b29791a8 1546 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1547 written |= (1 << 7);
1548 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1549 }
1550}
1551}
1552
1553 abuf->written = written;
1554 return vpc;
1555#undef FLD
1556}
1557
1558/* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1559
1560static SEM_PC
1561SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1562{
1563#define FLD(f) abuf->fields.sfmt_csmulcc.f
1564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1565 int UNUSED written = 0;
1566 IADDR UNUSED pc = abuf->addr;
1567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1568
1569if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1570{
1571 DI tmp_tmp;
1572 QI tmp_cc;
b29791a8 1573 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
b34f6357
DB
1574 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1575if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1576 tmp_cc = ANDQI (tmp_cc, 7);
1577} else {
1578 tmp_cc = ORQI (tmp_cc, 8);
1579}
1580if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1581 tmp_cc = ANDQI (tmp_cc, 11);
1582} else {
1583 tmp_cc = ORQI (tmp_cc, 4);
1584}
1585 {
1586 DI opval = tmp_tmp;
1587 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1588 written |= (1 << 6);
1589 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1590 }
1591 {
1592 UQI opval = tmp_cc;
b29791a8 1593 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1594 written |= (1 << 7);
1595 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1596 }
1597}
1598}
1599
1600 abuf->written = written;
1601 return vpc;
1602#undef FLD
1603}
1604
1605/* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1606
1607static SEM_PC
1608SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1609{
1610#define FLD(f) abuf->fields.sfmt_caddcc.f
1611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1612 int UNUSED written = 0;
1613 IADDR UNUSED pc = abuf->addr;
1614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1615
1616if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1617{
1618 SI tmp_tmp;
1619 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1620 {
1621 SI opval = tmp_tmp;
1622 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1623 written |= (1 << 6);
1624 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1625 }
1626if (EQSI (tmp_tmp, 0)) {
1627 {
b29791a8
DE
1628 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1629 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1630 written |= (1 << 7);
1631 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1632 }
1633} else {
1634if (LTSI (tmp_tmp, 0)) {
1635 {
b29791a8
DE
1636 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1637 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1638 written |= (1 << 7);
1639 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1640 }
1641} else {
1642 {
b29791a8
DE
1643 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1644 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1645 written |= (1 << 7);
1646 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1647 }
1648}
1649}
1650}
1651}
1652
1653 abuf->written = written;
1654 return vpc;
1655#undef FLD
1656}
1657
1658/* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1659
1660static SEM_PC
1661SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1662{
1663#define FLD(f) abuf->fields.sfmt_caddcc.f
1664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1665 int UNUSED written = 0;
1666 IADDR UNUSED pc = abuf->addr;
1667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1668
1669if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1670{
1671 SI tmp_tmp;
1672 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1673 {
1674 SI opval = tmp_tmp;
1675 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1676 written |= (1 << 6);
1677 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1678 }
1679if (EQSI (tmp_tmp, 0)) {
1680 {
b29791a8
DE
1681 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1682 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1683 written |= (1 << 7);
1684 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1685 }
1686} else {
1687if (LTSI (tmp_tmp, 0)) {
1688 {
b29791a8
DE
1689 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1690 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1691 written |= (1 << 7);
1692 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1693 }
1694} else {
1695 {
b29791a8
DE
1696 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1697 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1698 written |= (1 << 7);
1699 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1700 }
1701}
1702}
1703}
1704}
1705
1706 abuf->written = written;
1707 return vpc;
1708#undef FLD
1709}
1710
1711/* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1712
1713static SEM_PC
1714SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1715{
1716#define FLD(f) abuf->fields.sfmt_caddcc.f
1717 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1718 int UNUSED written = 0;
1719 IADDR UNUSED pc = abuf->addr;
1720 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1721
1722if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1723{
1724 SI tmp_tmp;
1725 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1726 {
1727 SI opval = tmp_tmp;
1728 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1729 written |= (1 << 6);
1730 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1731 }
1732if (EQSI (tmp_tmp, 0)) {
1733 {
b29791a8
DE
1734 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1735 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1736 written |= (1 << 7);
1737 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1738 }
1739} else {
1740if (LTSI (tmp_tmp, 0)) {
1741 {
b29791a8
DE
1742 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1743 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1744 written |= (1 << 7);
1745 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1746 }
1747} else {
1748 {
b29791a8
DE
1749 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1750 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1751 written |= (1 << 7);
1752 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1753 }
1754}
1755}
1756}
1757}
1758
1759 abuf->written = written;
1760 return vpc;
1761#undef FLD
1762}
1763
1764/* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1765
1766static SEM_PC
1767SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1768{
1769#define FLD(f) abuf->fields.sfmt_caddcc.f
1770 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1771 int UNUSED written = 0;
1772 IADDR UNUSED pc = abuf->addr;
1773 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1774
1775if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1776{
1777 SI tmp_shift;
1778 SI tmp_tmp;
1779 QI tmp_cc;
1780 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
b29791a8 1781 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
1782 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1783 {
1784 SI opval = tmp_tmp;
1785 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1786 written |= (1 << 6);
1787 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1788 }
1789if (EQSI (tmp_tmp, 0)) {
1790 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1791} else {
1792if (LTSI (tmp_tmp, 0)) {
1793 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1794} else {
1795 tmp_cc = ANDQI (tmp_cc, 3);
1796}
1797}
1798 {
1799 UQI opval = tmp_cc;
b29791a8 1800 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1801 written |= (1 << 7);
1802 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1803 }
1804}
1805}
1806
1807 abuf->written = written;
1808 return vpc;
1809#undef FLD
1810}
1811
1812/* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1813
1814static SEM_PC
1815SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1816{
1817#define FLD(f) abuf->fields.sfmt_caddcc.f
1818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1819 int UNUSED written = 0;
1820 IADDR UNUSED pc = abuf->addr;
1821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1822
1823if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1824{
1825 SI tmp_shift;
1826 SI tmp_tmp;
1827 QI tmp_cc;
1828 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
b29791a8 1829 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
1830 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1831 {
1832 SI opval = tmp_tmp;
1833 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1834 written |= (1 << 6);
1835 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1836 }
1837if (EQSI (tmp_tmp, 0)) {
1838 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1839} else {
1840if (LTSI (tmp_tmp, 0)) {
1841 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1842} else {
1843 tmp_cc = ANDQI (tmp_cc, 3);
1844}
1845}
1846 {
1847 UQI opval = tmp_cc;
b29791a8 1848 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1849 written |= (1 << 7);
1850 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1851 }
1852}
1853}
1854
1855 abuf->written = written;
1856 return vpc;
1857#undef FLD
1858}
1859
1860/* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1861
1862static SEM_PC
1863SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1864{
1865#define FLD(f) abuf->fields.sfmt_caddcc.f
1866 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1867 int UNUSED written = 0;
1868 IADDR UNUSED pc = abuf->addr;
1869 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1870
1871if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1872{
1873 SI tmp_shift;
1874 SI tmp_tmp;
1875 QI tmp_cc;
1876 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
b29791a8 1877 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
1878 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1879 {
1880 SI opval = tmp_tmp;
1881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1882 written |= (1 << 6);
1883 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1884 }
1885if (EQSI (tmp_tmp, 0)) {
1886 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1887} else {
1888if (LTSI (tmp_tmp, 0)) {
1889 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1890} else {
1891 tmp_cc = ANDQI (tmp_cc, 3);
1892}
1893}
1894 {
1895 UQI opval = tmp_cc;
b29791a8 1896 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
b34f6357
DB
1897 written |= (1 << 7);
1898 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1899 }
1900}
1901}
1902
1903 abuf->written = written;
1904 return vpc;
1905#undef FLD
1906}
1907
1908/* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1909
1910static SEM_PC
1911SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1912{
1913#define FLD(f) abuf->fields.sfmt_addcc.f
1914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1915 int UNUSED written = 0;
1916 IADDR UNUSED pc = abuf->addr;
1917 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1918
1919 {
1920 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)));
1921 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1922 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1923 }
1924
1925 return vpc;
1926#undef FLD
1927}
1928
1929/* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1930
1931static SEM_PC
1932SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1933{
1934#define FLD(f) abuf->fields.sfmt_addcc.f
1935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1936 int UNUSED written = 0;
1937 IADDR UNUSED pc = abuf->addr;
1938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1939
1940 {
1941 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)));
1942 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1943 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1944 }
1945
1946 return vpc;
1947#undef FLD
1948}
1949
1950/* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1951
1952static SEM_PC
1953SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1954{
1955#define FLD(f) abuf->fields.sfmt_addcc.f
1956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1957 int UNUSED written = 0;
1958 IADDR UNUSED pc = abuf->addr;
1959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1960
1961{
1962 SI tmp_tmp;
1963 QI tmp_cc;
1964 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1965 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
b29791a8 1966if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
1967 tmp_cc = ANDQI (tmp_cc, 13);
1968} else {
1969 tmp_cc = ORQI (tmp_cc, 2);
1970}
b29791a8 1971if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
1972 tmp_cc = ANDQI (tmp_cc, 14);
1973} else {
1974 tmp_cc = ORQI (tmp_cc, 1);
1975}
1976if (EQSI (tmp_tmp, 0)) {
1977 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1978} else {
1979if (LTSI (tmp_tmp, 0)) {
1980 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1981} else {
1982 tmp_cc = ANDQI (tmp_cc, 3);
1983}
1984}
1985 {
1986 SI opval = tmp_tmp;
1987 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1988 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1989 }
1990 {
1991 UQI opval = tmp_cc;
1992 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1993 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1994 }
1995}
1996
1997 return vpc;
1998#undef FLD
1999}
2000
2001/* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2002
2003static SEM_PC
2004SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2005{
2006#define FLD(f) abuf->fields.sfmt_addcc.f
2007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2008 int UNUSED written = 0;
2009 IADDR UNUSED pc = abuf->addr;
2010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2011
2012{
2013 SI tmp_tmp;
2014 QI tmp_cc;
2015 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2016 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
b29791a8 2017if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2018 tmp_cc = ANDQI (tmp_cc, 13);
2019} else {
2020 tmp_cc = ORQI (tmp_cc, 2);
2021}
b29791a8 2022if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2023 tmp_cc = ANDQI (tmp_cc, 14);
2024} else {
2025 tmp_cc = ORQI (tmp_cc, 1);
2026}
2027if (EQSI (tmp_tmp, 0)) {
2028 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2029} else {
2030if (LTSI (tmp_tmp, 0)) {
2031 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2032} else {
2033 tmp_cc = ANDQI (tmp_cc, 3);
2034}
2035}
2036 {
2037 SI opval = tmp_tmp;
2038 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2039 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2040 }
2041 {
2042 UQI opval = tmp_cc;
2043 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2044 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2045 }
2046}
2047
2048 return vpc;
2049#undef FLD
2050}
2051
e930b1f5
DB
2052/* addss: addss$pack $GRi,$GRj,$GRk */
2053
2054static SEM_PC
2055SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2056{
2057#define FLD(f) abuf->fields.sfmt_addcc.f
2058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2059 int UNUSED written = 0;
2060 IADDR UNUSED pc = abuf->addr;
2061 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2062
2063{
2064 {
2065 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2066 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2067 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2068 }
2069if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2070 {
2071 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2072 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2073 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2074 }
2075}
2076}
2077
2078 return vpc;
2079#undef FLD
2080}
2081
2082/* subss: subss$pack $GRi,$GRj,$GRk */
2083
2084static SEM_PC
2085SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2086{
2087#define FLD(f) abuf->fields.sfmt_addcc.f
2088 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2089 int UNUSED written = 0;
2090 IADDR UNUSED pc = abuf->addr;
2091 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2092
2093{
2094 {
2095 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2096 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2097 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2098 }
2099if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2100 {
2101 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2102 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2103 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2104 }
2105}
2106}
2107
2108 return vpc;
2109#undef FLD
2110}
2111
b34f6357
DB
2112/* addi: addi$pack $GRi,$s12,$GRk */
2113
2114static SEM_PC
2115SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2116{
2117#define FLD(f) abuf->fields.sfmt_swapi.f
2118 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2119 int UNUSED written = 0;
2120 IADDR UNUSED pc = abuf->addr;
2121 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2122
2123 {
2124 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2125 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2126 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2127 }
2128
2129 return vpc;
2130#undef FLD
2131}
2132
2133/* subi: subi$pack $GRi,$s12,$GRk */
2134
2135static SEM_PC
2136SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2137{
2138#define FLD(f) abuf->fields.sfmt_swapi.f
2139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2140 int UNUSED written = 0;
2141 IADDR UNUSED pc = abuf->addr;
2142 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2143
2144 {
2145 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2146 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2147 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2148 }
2149
2150 return vpc;
2151#undef FLD
2152}
2153
2154/* andi: andi$pack $GRi,$s12,$GRk */
2155
2156static SEM_PC
2157SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2158{
2159#define FLD(f) abuf->fields.sfmt_swapi.f
2160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2161 int UNUSED written = 0;
2162 IADDR UNUSED pc = abuf->addr;
2163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2164
2165 {
2166 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2167 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2168 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2169 }
2170
2171 return vpc;
2172#undef FLD
2173}
2174
2175/* ori: ori$pack $GRi,$s12,$GRk */
2176
2177static SEM_PC
2178SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2179{
2180#define FLD(f) abuf->fields.sfmt_swapi.f
2181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2182 int UNUSED written = 0;
2183 IADDR UNUSED pc = abuf->addr;
2184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2185
2186 {
2187 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2188 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2189 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2190 }
2191
2192 return vpc;
2193#undef FLD
2194}
2195
2196/* xori: xori$pack $GRi,$s12,$GRk */
2197
2198static SEM_PC
2199SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2200{
2201#define FLD(f) abuf->fields.sfmt_swapi.f
2202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2203 int UNUSED written = 0;
2204 IADDR UNUSED pc = abuf->addr;
2205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2206
2207 {
2208 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2209 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2210 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2211 }
2212
2213 return vpc;
2214#undef FLD
2215}
2216
2217/* sdivi: sdivi$pack $GRi,$s12,$GRk */
2218
2219static SEM_PC
2220SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2221{
2222#define FLD(f) abuf->fields.sfmt_swapi.f
2223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2224 int UNUSED written = 0;
2225 IADDR UNUSED pc = abuf->addr;
2226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2227
2228{
2229frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2230; /*clobber*/
2231}
2232
2233 return vpc;
2234#undef FLD
2235}
2236
2237/* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2238
2239static SEM_PC
2240SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2241{
2242#define FLD(f) abuf->fields.sfmt_swapi.f
2243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2244 int UNUSED written = 0;
2245 IADDR UNUSED pc = abuf->addr;
2246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2247
2248{
2249frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2250; /*clobber*/
2251}
2252
2253 return vpc;
2254#undef FLD
2255}
2256
2257/* udivi: udivi$pack $GRi,$s12,$GRk */
2258
2259static SEM_PC
2260SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2261{
2262#define FLD(f) abuf->fields.sfmt_swapi.f
2263 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2264 int UNUSED written = 0;
2265 IADDR UNUSED pc = abuf->addr;
2266 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2267
2268{
2269frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2270; /*clobber*/
2271}
2272
2273 return vpc;
2274#undef FLD
2275}
2276
2277/* nudivi: nudivi$pack $GRi,$s12,$GRk */
2278
2279static SEM_PC
2280SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2281{
2282#define FLD(f) abuf->fields.sfmt_swapi.f
2283 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2284 int UNUSED written = 0;
2285 IADDR UNUSED pc = abuf->addr;
2286 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2287
2288{
2289frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2290; /*clobber*/
2291}
2292
2293 return vpc;
2294#undef FLD
2295}
2296
2297/* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2298
2299static SEM_PC
2300SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2301{
2302#define FLD(f) abuf->fields.sfmt_smuli.f
2303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2304 int UNUSED written = 0;
2305 IADDR UNUSED pc = abuf->addr;
2306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2307
2308 {
2309 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2310 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2311 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2312 }
2313
2314 return vpc;
2315#undef FLD
2316}
2317
2318/* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2319
2320static SEM_PC
2321SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2322{
2323#define FLD(f) abuf->fields.sfmt_smuli.f
2324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2325 int UNUSED written = 0;
2326 IADDR UNUSED pc = abuf->addr;
2327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2328
2329 {
2330 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2331 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2332 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2333 }
2334
2335 return vpc;
2336#undef FLD
2337}
2338
2339/* slli: slli$pack $GRi,$s12,$GRk */
2340
2341static SEM_PC
2342SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2343{
2344#define FLD(f) abuf->fields.sfmt_swapi.f
2345 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2346 int UNUSED written = 0;
2347 IADDR UNUSED pc = abuf->addr;
2348 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2349
2350 {
2351 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2352 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2353 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2354 }
2355
2356 return vpc;
2357#undef FLD
2358}
2359
2360/* srli: srli$pack $GRi,$s12,$GRk */
2361
2362static SEM_PC
2363SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2364{
2365#define FLD(f) abuf->fields.sfmt_swapi.f
2366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2367 int UNUSED written = 0;
2368 IADDR UNUSED pc = abuf->addr;
2369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2370
2371 {
2372 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2373 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2374 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2375 }
2376
2377 return vpc;
2378#undef FLD
2379}
2380
2381/* srai: srai$pack $GRi,$s12,$GRk */
2382
2383static SEM_PC
2384SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2385{
2386#define FLD(f) abuf->fields.sfmt_swapi.f
2387 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2388 int UNUSED written = 0;
2389 IADDR UNUSED pc = abuf->addr;
2390 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2391
2392 {
2393 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2394 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2395 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2396 }
2397
2398 return vpc;
2399#undef FLD
2400}
2401
2402/* scani: scani$pack $GRi,$s12,$GRk */
2403
2404static SEM_PC
2405SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2406{
2407#define FLD(f) abuf->fields.sfmt_swapi.f
2408 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2409 int UNUSED written = 0;
2410 IADDR UNUSED pc = abuf->addr;
2411 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2412
2413{
2414 SI tmp_tmp1;
2415 SI tmp_tmp2;
2416 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2417 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2418 {
2419 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2420 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2421 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2422 }
2423}
2424
2425 return vpc;
2426#undef FLD
2427}
2428
2429/* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2430
2431static SEM_PC
2432SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2433{
2434#define FLD(f) abuf->fields.sfmt_addicc.f
2435 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2436 int UNUSED written = 0;
2437 IADDR UNUSED pc = abuf->addr;
2438 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2439
2440{
2441 BI tmp_tmp;
2442 QI tmp_cc;
2443 SI tmp_result;
2444 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2445 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2446if (EQBI (tmp_tmp, 0)) {
2447 tmp_cc = ANDQI (tmp_cc, 13);
2448} else {
2449 tmp_cc = ORQI (tmp_cc, 2);
2450}
2451 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2452if (EQBI (tmp_tmp, 0)) {
2453 tmp_cc = ANDQI (tmp_cc, 14);
2454} else {
2455 tmp_cc = ORQI (tmp_cc, 1);
2456}
2457 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2458if (EQSI (tmp_result, 0)) {
2459 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2460} else {
2461if (LTSI (tmp_result, 0)) {
2462 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2463} else {
2464 tmp_cc = ANDQI (tmp_cc, 3);
2465}
2466}
2467 {
2468 SI opval = tmp_result;
2469 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2470 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2471 }
2472 {
2473 UQI opval = tmp_cc;
2474 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2475 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2476 }
2477}
2478
2479 return vpc;
2480#undef FLD
2481}
2482
2483/* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2484
2485static SEM_PC
2486SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2487{
2488#define FLD(f) abuf->fields.sfmt_addicc.f
2489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2490 int UNUSED written = 0;
2491 IADDR UNUSED pc = abuf->addr;
2492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2493
2494{
2495 BI tmp_tmp;
2496 QI tmp_cc;
2497 SI tmp_result;
2498 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2499 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2500if (EQBI (tmp_tmp, 0)) {
2501 tmp_cc = ANDQI (tmp_cc, 13);
2502} else {
2503 tmp_cc = ORQI (tmp_cc, 2);
2504}
2505 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2506if (EQBI (tmp_tmp, 0)) {
2507 tmp_cc = ANDQI (tmp_cc, 14);
2508} else {
2509 tmp_cc = ORQI (tmp_cc, 1);
2510}
2511 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2512if (EQSI (tmp_result, 0)) {
2513 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2514} else {
2515if (LTSI (tmp_result, 0)) {
2516 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2517} else {
2518 tmp_cc = ANDQI (tmp_cc, 3);
2519}
2520}
2521 {
2522 SI opval = tmp_result;
2523 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2524 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2525 }
2526 {
2527 UQI opval = tmp_cc;
2528 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2529 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2530 }
2531}
2532
2533 return vpc;
2534#undef FLD
2535}
2536
2537/* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2538
2539static SEM_PC
2540SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2541{
2542#define FLD(f) abuf->fields.sfmt_addicc.f
2543 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2544 int UNUSED written = 0;
2545 IADDR UNUSED pc = abuf->addr;
2546 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2547
2548{
2549 SI tmp_tmp;
2550 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2551 {
2552 SI opval = tmp_tmp;
2553 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2554 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2555 }
2556if (EQSI (tmp_tmp, 0)) {
2557 {
2558 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2559 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2560 written |= (1 << 4);
2561 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2562 }
2563} else {
2564if (LTSI (tmp_tmp, 0)) {
2565 {
2566 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2567 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2568 written |= (1 << 4);
2569 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2570 }
2571} else {
2572 {
2573 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2574 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2575 written |= (1 << 4);
2576 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2577 }
2578}
2579}
2580}
2581
2582 abuf->written = written;
2583 return vpc;
2584#undef FLD
2585}
2586
2587/* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2588
2589static SEM_PC
2590SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2591{
2592#define FLD(f) abuf->fields.sfmt_addicc.f
2593 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2594 int UNUSED written = 0;
2595 IADDR UNUSED pc = abuf->addr;
2596 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2597
2598{
2599 SI tmp_tmp;
2600 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2601 {
2602 SI opval = tmp_tmp;
2603 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2604 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2605 }
2606if (EQSI (tmp_tmp, 0)) {
2607 {
2608 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2609 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2610 written |= (1 << 4);
2611 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2612 }
2613} else {
2614if (LTSI (tmp_tmp, 0)) {
2615 {
2616 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2617 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2618 written |= (1 << 4);
2619 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2620 }
2621} else {
2622 {
2623 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2624 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2625 written |= (1 << 4);
2626 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2627 }
2628}
2629}
2630}
2631
2632 abuf->written = written;
2633 return vpc;
2634#undef FLD
2635}
2636
2637/* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2638
2639static SEM_PC
2640SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2641{
2642#define FLD(f) abuf->fields.sfmt_addicc.f
2643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2644 int UNUSED written = 0;
2645 IADDR UNUSED pc = abuf->addr;
2646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2647
2648{
2649 SI tmp_tmp;
2650 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2651 {
2652 SI opval = tmp_tmp;
2653 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2655 }
2656if (EQSI (tmp_tmp, 0)) {
2657 {
2658 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2659 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2660 written |= (1 << 4);
2661 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2662 }
2663} else {
2664if (LTSI (tmp_tmp, 0)) {
2665 {
2666 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2667 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2668 written |= (1 << 4);
2669 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2670 }
2671} else {
2672 {
2673 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2674 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2675 written |= (1 << 4);
2676 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2677 }
2678}
2679}
2680}
2681
2682 abuf->written = written;
2683 return vpc;
2684#undef FLD
2685}
2686
2687/* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2688
2689static SEM_PC
2690SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2691{
2692#define FLD(f) abuf->fields.sfmt_smulicc.f
2693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2694 int UNUSED written = 0;
2695 IADDR UNUSED pc = abuf->addr;
2696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2697
2698{
2699 DI tmp_tmp;
2700 QI tmp_cc;
2701 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2702 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2703if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2704 tmp_cc = ANDQI (tmp_cc, 7);
2705} else {
2706 tmp_cc = ORQI (tmp_cc, 8);
2707}
2708if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2709 tmp_cc = ANDQI (tmp_cc, 11);
2710} else {
2711 tmp_cc = ORQI (tmp_cc, 4);
2712}
2713 {
2714 DI opval = tmp_tmp;
2715 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2716 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2717 }
2718 {
2719 UQI opval = tmp_cc;
2720 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2721 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2722 }
2723}
2724
2725 return vpc;
2726#undef FLD
2727}
2728
2729/* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2730
2731static SEM_PC
2732SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2733{
2734#define FLD(f) abuf->fields.sfmt_smulicc.f
2735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2736 int UNUSED written = 0;
2737 IADDR UNUSED pc = abuf->addr;
2738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2739
2740{
2741 DI tmp_tmp;
2742 QI tmp_cc;
2743 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2744 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2745if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2746 tmp_cc = ANDQI (tmp_cc, 7);
2747} else {
2748 tmp_cc = ORQI (tmp_cc, 8);
2749}
2750if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2751 tmp_cc = ANDQI (tmp_cc, 11);
2752} else {
2753 tmp_cc = ORQI (tmp_cc, 4);
2754}
2755 {
2756 DI opval = tmp_tmp;
2757 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2758 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2759 }
2760 {
2761 UQI opval = tmp_cc;
2762 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2763 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2764 }
2765}
2766
2767 return vpc;
2768#undef FLD
2769}
2770
2771/* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2772
2773static SEM_PC
2774SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2775{
2776#define FLD(f) abuf->fields.sfmt_addicc.f
2777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2778 int UNUSED written = 0;
2779 IADDR UNUSED pc = abuf->addr;
2780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2781
2782{
2783 SI tmp_shift;
2784 SI tmp_tmp;
2785 QI tmp_cc;
2786 tmp_shift = ANDSI (FLD (f_s10), 31);
2787 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)]));
2788 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2789 {
2790 SI opval = tmp_tmp;
2791 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2792 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2793 }
2794if (EQSI (tmp_tmp, 0)) {
2795 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2796} else {
2797if (LTSI (tmp_tmp, 0)) {
2798 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2799} else {
2800 tmp_cc = ANDQI (tmp_cc, 3);
2801}
2802}
2803 {
2804 UQI opval = tmp_cc;
2805 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2806 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2807 }
2808}
2809
2810 return vpc;
2811#undef FLD
2812}
2813
2814/* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2815
2816static SEM_PC
2817SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2818{
2819#define FLD(f) abuf->fields.sfmt_addicc.f
2820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2821 int UNUSED written = 0;
2822 IADDR UNUSED pc = abuf->addr;
2823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2824
2825{
2826 SI tmp_shift;
2827 SI tmp_tmp;
2828 QI tmp_cc;
2829 tmp_shift = ANDSI (FLD (f_s10), 31);
2830 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)]));
2831 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2832 {
2833 SI opval = tmp_tmp;
2834 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2835 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2836 }
2837if (EQSI (tmp_tmp, 0)) {
2838 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2839} else {
2840if (LTSI (tmp_tmp, 0)) {
2841 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2842} else {
2843 tmp_cc = ANDQI (tmp_cc, 3);
2844}
2845}
2846 {
2847 UQI opval = tmp_cc;
2848 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2849 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2850 }
2851}
2852
2853 return vpc;
2854#undef FLD
2855}
2856
2857/* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2858
2859static SEM_PC
2860SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2861{
2862#define FLD(f) abuf->fields.sfmt_addicc.f
2863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2864 int UNUSED written = 0;
2865 IADDR UNUSED pc = abuf->addr;
2866 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2867
2868{
2869 SI tmp_shift;
2870 SI tmp_tmp;
2871 QI tmp_cc;
2872 tmp_shift = ANDSI (FLD (f_s10), 31);
2873 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)]));
2874 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2875 {
2876 SI opval = tmp_tmp;
2877 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2878 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2879 }
2880if (EQSI (tmp_tmp, 0)) {
2881 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2882} else {
2883if (LTSI (tmp_tmp, 0)) {
2884 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2885} else {
2886 tmp_cc = ANDQI (tmp_cc, 3);
2887}
2888}
2889 {
2890 UQI opval = tmp_cc;
2891 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2892 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2893 }
2894}
2895
2896 return vpc;
2897#undef FLD
2898}
2899
2900/* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2901
2902static SEM_PC
2903SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2904{
2905#define FLD(f) abuf->fields.sfmt_addicc.f
2906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2907 int UNUSED written = 0;
2908 IADDR UNUSED pc = abuf->addr;
2909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2910
2911 {
2912 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2913 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2914 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2915 }
2916
2917 return vpc;
2918#undef FLD
2919}
2920
2921/* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2922
2923static SEM_PC
2924SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2925{
2926#define FLD(f) abuf->fields.sfmt_addicc.f
2927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2928 int UNUSED written = 0;
2929 IADDR UNUSED pc = abuf->addr;
2930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2931
2932 {
2933 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2934 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2935 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2936 }
2937
2938 return vpc;
2939#undef FLD
2940}
2941
2942/* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2943
2944static SEM_PC
2945SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2946{
2947#define FLD(f) abuf->fields.sfmt_addicc.f
2948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2949 int UNUSED written = 0;
2950 IADDR UNUSED pc = abuf->addr;
2951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2952
2953{
2954 SI tmp_tmp;
2955 QI tmp_cc;
2956 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2957 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
b29791a8 2958if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2959 tmp_cc = ANDQI (tmp_cc, 13);
2960} else {
2961 tmp_cc = ORQI (tmp_cc, 2);
2962}
b29791a8 2963if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
2964 tmp_cc = ANDQI (tmp_cc, 14);
2965} else {
2966 tmp_cc = ORQI (tmp_cc, 1);
2967}
2968if (EQSI (tmp_tmp, 0)) {
2969 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2970} else {
2971if (LTSI (tmp_tmp, 0)) {
2972 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2973} else {
2974 tmp_cc = ANDQI (tmp_cc, 3);
2975}
2976}
2977 {
2978 SI opval = tmp_tmp;
2979 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2980 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2981 }
2982 {
2983 UQI opval = tmp_cc;
2984 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2985 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2986 }
2987}
2988
2989 return vpc;
2990#undef FLD
2991}
2992
2993/* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2994
2995static SEM_PC
2996SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2997{
2998#define FLD(f) abuf->fields.sfmt_addicc.f
2999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3000 int UNUSED written = 0;
3001 IADDR UNUSED pc = abuf->addr;
3002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3003
3004{
3005 SI tmp_tmp;
3006 QI tmp_cc;
3007 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3008 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
b29791a8 3009if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
3010 tmp_cc = ANDQI (tmp_cc, 13);
3011} else {
3012 tmp_cc = ORQI (tmp_cc, 2);
3013}
b29791a8 3014if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
b34f6357
DB
3015 tmp_cc = ANDQI (tmp_cc, 14);
3016} else {
3017 tmp_cc = ORQI (tmp_cc, 1);
3018}
3019if (EQSI (tmp_tmp, 0)) {
3020 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3021} else {
3022if (LTSI (tmp_tmp, 0)) {
3023 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3024} else {
3025 tmp_cc = ANDQI (tmp_cc, 3);
3026}
3027}
3028 {
3029 SI opval = tmp_tmp;
3030 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3031 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3032 }
3033 {
3034 UQI opval = tmp_cc;
3035 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3036 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3037 }
3038}
3039
3040 return vpc;
3041#undef FLD
3042}
3043
3044/* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3045
3046static SEM_PC
3047SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3048{
3049#define FLD(f) abuf->fields.sfmt_smulcc.f
3050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3051 int UNUSED written = 0;
3052 IADDR UNUSED pc = abuf->addr;
3053 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3054
3055{
3056 QI tmp_cc;
3057if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3058 tmp_cc = ANDQI (tmp_cc, 7);
3059} else {
3060 tmp_cc = ORQI (tmp_cc, 8);
3061}
3062if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3063 tmp_cc = ANDQI (tmp_cc, 11);
3064} else {
3065 tmp_cc = ORQI (tmp_cc, 4);
3066}
3067if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3068 tmp_cc = ANDQI (tmp_cc, 13);
3069} else {
3070 tmp_cc = ORQI (tmp_cc, 2);
3071}
3072if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3073 tmp_cc = ANDQI (tmp_cc, 14);
3074} else {
3075 tmp_cc = ORQI (tmp_cc, 1);
3076}
3077 {
3078 UQI opval = tmp_cc;
3079 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3080 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3081 }
3082}
3083
3084 return vpc;
3085#undef FLD
3086}
3087
3088/* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3089
3090static SEM_PC
3091SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3092{
3093#define FLD(f) abuf->fields.sfmt_smulcc.f
3094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3095 int UNUSED written = 0;
3096 IADDR UNUSED pc = abuf->addr;
3097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3098
3099{
3100 QI tmp_cc;
3101 tmp_cc = 0;
3102if (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)) {
3103 tmp_cc = ANDQI (tmp_cc, 14);
3104} else {
3105 tmp_cc = ORQI (tmp_cc, 1);
3106}
3107 {
3108 UQI opval = tmp_cc;
3109 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3110 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3111 }
3112}
3113
3114 return vpc;
3115#undef FLD
3116}
3117
3118/* setlo: setlo$pack $ulo16,$GRklo */
3119
3120static SEM_PC
3121SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3122{
3123#define FLD(f) abuf->fields.sfmt_setlo.f
3124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3125 int UNUSED written = 0;
3126 IADDR UNUSED pc = abuf->addr;
3127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3128
3129 {
3130 UHI opval = FLD (f_u16);
3131 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3132 TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3133 }
3134
3135 return vpc;
3136#undef FLD
3137}
3138
3139/* sethi: sethi$pack $uhi16,$GRkhi */
3140
3141static SEM_PC
3142SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3143{
3144#define FLD(f) abuf->fields.sfmt_sethi.f
3145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3146 int UNUSED written = 0;
3147 IADDR UNUSED pc = abuf->addr;
3148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3149
3150 {
3151 UHI opval = FLD (f_u16);
3152 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3153 TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3154 }
3155
3156 return vpc;
3157#undef FLD
3158}
3159
3160/* setlos: setlos$pack $slo16,$GRk */
3161
3162static SEM_PC
3163SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3164{
3165#define FLD(f) abuf->fields.sfmt_setlos.f
3166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3167 int UNUSED written = 0;
3168 IADDR UNUSED pc = abuf->addr;
3169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3170
3171 {
3172 SI opval = FLD (f_s16);
3173 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3174 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3175 }
3176
3177 return vpc;
3178#undef FLD
3179}
3180
3181/* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3182
3183static SEM_PC
3184SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3185{
3186#define FLD(f) abuf->fields.sfmt_addcc.f
3187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3188 int UNUSED written = 0;
3189 IADDR UNUSED pc = abuf->addr;
3190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3191
3192 {
3193 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3194 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3195 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3196 }
3197
3198 return vpc;
3199#undef FLD
3200}
3201
3202/* ldub: ldub$pack @($GRi,$GRj),$GRk */
3203
3204static SEM_PC
3205SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3206{
3207#define FLD(f) abuf->fields.sfmt_addcc.f
3208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3209 int UNUSED written = 0;
3210 IADDR UNUSED pc = abuf->addr;
3211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3212
3213 {
3214 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3215 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3216 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3217 }
3218
3219 return vpc;
3220#undef FLD
3221}
3222
3223/* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3224
3225static SEM_PC
3226SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3227{
3228#define FLD(f) abuf->fields.sfmt_addcc.f
3229 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3230 int UNUSED written = 0;
3231 IADDR UNUSED pc = abuf->addr;
3232 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3233
3234 {
3235 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3236 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3237 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3238 }
3239
3240 return vpc;
3241#undef FLD
3242}
3243
3244/* lduh: lduh$pack @($GRi,$GRj),$GRk */
3245
3246static SEM_PC
3247SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3248{
3249#define FLD(f) abuf->fields.sfmt_addcc.f
3250 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3251 int UNUSED written = 0;
3252 IADDR UNUSED pc = abuf->addr;
3253 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3254
3255 {
3256 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3257 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3258 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3259 }
3260
3261 return vpc;
3262#undef FLD
3263}
3264
79e59fe6 3265/* ld: ld$pack $ldann($GRi,$GRj),$GRk */
b34f6357
DB
3266
3267static SEM_PC
3268SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3269{
3270#define FLD(f) abuf->fields.sfmt_addcc.f
3271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3272 int UNUSED written = 0;
3273 IADDR UNUSED pc = abuf->addr;
3274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3275
3276 {
3277 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3278 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3279 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3280 }
3281
3282 return vpc;
3283#undef FLD
3284}
3285
3286/* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3287
3288static SEM_PC
3289SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3290{
3291#define FLD(f) abuf->fields.sfmt_cldbfu.f
3292 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3293 int UNUSED written = 0;
3294 IADDR UNUSED pc = abuf->addr;
3295 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3296
3297 {
3298 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3299 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3300 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3301 }
3302
3303 return vpc;
3304#undef FLD
3305}
3306
3307/* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3308
3309static SEM_PC
3310SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3311{
3312#define FLD(f) abuf->fields.sfmt_cldbfu.f
3313 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3314 int UNUSED written = 0;
3315 IADDR UNUSED pc = abuf->addr;
3316 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3317
3318 {
3319 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3320 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3321 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3322 }
3323
3324 return vpc;
3325#undef FLD
3326}
3327
3328/* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3329
3330static SEM_PC
3331SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3332{
3333#define FLD(f) abuf->fields.sfmt_cldbfu.f
3334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3335 int UNUSED written = 0;
3336 IADDR UNUSED pc = abuf->addr;
3337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3338
3339 {
3340 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3341 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3342 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3343 }
3344
3345 return vpc;
3346#undef FLD
3347}
3348
3349/* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3350
3351static SEM_PC
3352SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3353{
3354#define FLD(f) abuf->fields.sfmt_ldcu.f
3355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3356 int UNUSED written = 0;
3357 IADDR UNUSED pc = abuf->addr;
3358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3359
3360 {
3361 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3362 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3363 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3364 }
3365
3366 return vpc;
3367#undef FLD
3368}
3369
3370/* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3371
3372static SEM_PC
3373SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3374{
3375#define FLD(f) abuf->fields.sfmt_addcc.f
3376 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3377 int UNUSED written = 0;
3378 IADDR UNUSED pc = abuf->addr;
3379 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3380
3381{
3382 BI tmp_do_op;
3383 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3384if (tmp_do_op) {
3385 {
3386 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3387 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3388 written |= (1 << 6);
3389 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3390 }
3391}
3392}
3393
3394 abuf->written = written;
3395 return vpc;
3396#undef FLD
3397}
3398
3399/* nldub: nldub$pack @($GRi,$GRj),$GRk */
3400
3401static SEM_PC
3402SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3403{
3404#define FLD(f) abuf->fields.sfmt_addcc.f
3405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3406 int UNUSED written = 0;
3407 IADDR UNUSED pc = abuf->addr;
3408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3409
3410{
3411 BI tmp_do_op;
3412 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3413if (tmp_do_op) {
3414 {
3415 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3416 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3417 written |= (1 << 6);
3418 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3419 }
3420}
3421}
3422
3423 abuf->written = written;
3424 return vpc;
3425#undef FLD
3426}
3427
3428/* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3429
3430static SEM_PC
3431SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3432{
3433#define FLD(f) abuf->fields.sfmt_addcc.f
3434 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3435 int UNUSED written = 0;
3436 IADDR UNUSED pc = abuf->addr;
3437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3438
3439{
3440 BI tmp_do_op;
3441 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3442if (tmp_do_op) {
3443 {
3444 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3445 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3446 written |= (1 << 6);
3447 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3448 }
3449}
3450}
3451
3452 abuf->written = written;
3453 return vpc;
3454#undef FLD
3455}
3456
3457/* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3458
3459static SEM_PC
3460SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3461{
3462#define FLD(f) abuf->fields.sfmt_addcc.f
3463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3464 int UNUSED written = 0;
3465 IADDR UNUSED pc = abuf->addr;
3466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3467
3468{
3469 BI tmp_do_op;
3470 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3471if (tmp_do_op) {
3472 {
3473 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3474 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3475 written |= (1 << 6);
3476 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3477 }
3478}
3479}
3480
3481 abuf->written = written;
3482 return vpc;
3483#undef FLD
3484}
3485
3486/* nld: nld$pack @($GRi,$GRj),$GRk */
3487
3488static SEM_PC
3489SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3490{
3491#define FLD(f) abuf->fields.sfmt_addcc.f
3492 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3493 int UNUSED written = 0;
3494 IADDR UNUSED pc = abuf->addr;
3495 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3496
3497{
3498 BI tmp_do_op;
3499 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3500if (tmp_do_op) {
3501 {
3502 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3503 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3504 written |= (1 << 6);
3505 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3506 }
3507}
3508}
3509
3510 abuf->written = written;
3511 return vpc;
3512#undef FLD
3513}
3514
3515/* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3516
3517static SEM_PC
3518SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3519{
3520#define FLD(f) abuf->fields.sfmt_cldbfu.f
3521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3522 int UNUSED written = 0;
3523 IADDR UNUSED pc = abuf->addr;
3524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3525
3526{
3527 BI tmp_do_op;
3528 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3529if (tmp_do_op) {
3530 {
3531 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3532 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3533 written |= (1 << 6);
3534 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3535 }
3536}
3537}
3538
3539 abuf->written = written;
3540 return vpc;
3541#undef FLD
3542}
3543
3544/* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3545
3546static SEM_PC
3547SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3548{
3549#define FLD(f) abuf->fields.sfmt_cldbfu.f
3550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3551 int UNUSED written = 0;
3552 IADDR UNUSED pc = abuf->addr;
3553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3554
3555{
3556 BI tmp_do_op;
3557 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3558if (tmp_do_op) {
3559 {
3560 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3561 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3562 written |= (1 << 6);
3563 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3564 }
3565}
3566}
3567
3568 abuf->written = written;
3569 return vpc;
3570#undef FLD
3571}
3572
3573/* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3574
3575static SEM_PC
3576SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3577{
3578#define FLD(f) abuf->fields.sfmt_cldbfu.f
3579 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3580 int UNUSED written = 0;
3581 IADDR UNUSED pc = abuf->addr;
3582 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3583
3584{
3585 BI tmp_do_op;
3586 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3587if (tmp_do_op) {
3588 {
3589 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3590 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3591 written |= (1 << 6);
3592 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3593 }
3594}
3595}
3596
3597 abuf->written = written;
3598 return vpc;
3599#undef FLD
3600}
3601
79e59fe6 3602/* ldd: ldd$pack $lddann($GRi,$GRj),$GRdoublek */
b34f6357
DB
3603
3604static SEM_PC
3605SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3606{
3607#define FLD(f) abuf->fields.sfmt_smulcc.f
3608 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3609 int UNUSED written = 0;
3610 IADDR UNUSED pc = abuf->addr;
3611 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3612
3613{
3614 SI tmp_address;
3615if (NESI (FLD (f_GRk), 0)) {
3616{
3617 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3618 {
3619 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3620 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3621 written |= (1 << 4);
3622 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3623 }
3624}
3625}
3626}
3627
3628 abuf->written = written;
3629 return vpc;
3630#undef FLD
3631}
3632
3633/* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3634
3635static SEM_PC
3636SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3637{
3638#define FLD(f) abuf->fields.sfmt_clddfu.f
3639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3640 int UNUSED written = 0;
3641 IADDR UNUSED pc = abuf->addr;
3642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3643
3644{
3645 SI tmp_address;
3646{
3647 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3648 {
3649 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3650 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3651 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3652 }
3653}
3654}
3655
3656 return vpc;
3657#undef FLD
3658}
3659
3660/* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3661
3662static SEM_PC
3663SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3664{
3665#define FLD(f) abuf->fields.sfmt_lddcu.f
3666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3667 int UNUSED written = 0;
3668 IADDR UNUSED pc = abuf->addr;
3669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3670
3671{
3672 SI tmp_address;
3673{
3674 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3675 {
3676 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3677 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3678 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3679 }
3680}
3681}
3682
3683 return vpc;
3684#undef FLD
3685}
3686
3687/* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3688
3689static SEM_PC
3690SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3691{
3692#define FLD(f) abuf->fields.sfmt_smulcc.f
3693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3694 int UNUSED written = 0;
3695 IADDR UNUSED pc = abuf->addr;
3696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3697
3698{
3699 SI tmp_address;
3700{
3701 BI tmp_do_op;
3702 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3703if (tmp_do_op) {
3704if (NESI (FLD (f_GRk), 0)) {
3705{
3706 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3707 {
3708 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3709 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3710 written |= (1 << 6);
3711 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3712 }
3713}
3714}
3715}
3716}
3717}
3718
3719 abuf->written = written;
3720 return vpc;
3721#undef FLD
3722}
3723
3724/* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3725
3726static SEM_PC
3727SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3728{
3729#define FLD(f) abuf->fields.sfmt_clddfu.f
3730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3731 int UNUSED written = 0;
3732 IADDR UNUSED pc = abuf->addr;
3733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3734
3735{
3736 SI tmp_address;
3737{
3738 BI tmp_do_op;
3739 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3740if (tmp_do_op) {
3741{
3742 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3743 {
3744 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3745 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3746 written |= (1 << 6);
3747 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3748 }
3749}
3750}
3751}
3752}
3753
3754 abuf->written = written;
3755 return vpc;
3756#undef FLD
3757}
3758
3759/* ldq: ldq$pack @($GRi,$GRj),$GRk */
3760
3761static SEM_PC
3762SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3763{
3764#define FLD(f) abuf->fields.sfmt_smulcc.f
3765 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3766 int UNUSED written = 0;
3767 IADDR UNUSED pc = abuf->addr;
3768 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3769
3770{
3771 SI tmp_address;
3772{
3773 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3774frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3775}
3776}
3777
3778 return vpc;
3779#undef FLD
3780}
3781
3782/* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3783
3784static SEM_PC
3785SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3786{
3787#define FLD(f) abuf->fields.sfmt_cstdfu.f
3788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3789 int UNUSED written = 0;
3790 IADDR UNUSED pc = abuf->addr;
3791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3792
3793{
3794 SI tmp_address;
3795{
3796 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3797frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3798}
3799}
3800
3801 return vpc;
3802#undef FLD
3803}
3804
3805/* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3806
3807static SEM_PC
3808SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3809{
3810#define FLD(f) abuf->fields.sfmt_stdcu.f
3811 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3812 int UNUSED written = 0;
3813 IADDR UNUSED pc = abuf->addr;
3814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3815
3816{
3817 SI tmp_address;
3818{
3819 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3820frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3821}
3822}
3823
3824 return vpc;
3825#undef FLD
3826}
3827
3828/* nldq: nldq$pack @($GRi,$GRj),$GRk */
3829
3830static SEM_PC
3831SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3832{
3833#define FLD(f) abuf->fields.sfmt_smulcc.f
3834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3835 int UNUSED written = 0;
3836 IADDR UNUSED pc = abuf->addr;
3837 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3838
3839{
3840 SI tmp_address;
3841{
3842 BI tmp_do_op;
3843 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3844if (tmp_do_op) {
3845{
3846 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3847frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3848}
3849}
3850}
3851}
3852
3853 return vpc;
3854#undef FLD
3855}
3856
3857/* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3858
3859static SEM_PC
3860SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3861{
3862#define FLD(f) abuf->fields.sfmt_cstdfu.f
3863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3864 int UNUSED written = 0;
3865 IADDR UNUSED pc = abuf->addr;
3866 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3867
3868{
3869 SI tmp_address;
3870{
3871 BI tmp_do_op;
3872 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3873if (tmp_do_op) {
3874{
3875 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3876frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3877}
3878}
3879}
3880}
3881
3882 return vpc;
3883#undef FLD
3884}
3885
3886/* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3887
3888static SEM_PC
3889SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3890{
3891#define FLD(f) abuf->fields.sfmt_cldsbu.f
3892 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3893 int UNUSED written = 0;
3894 IADDR UNUSED pc = abuf->addr;
3895 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3896
3897{
3898 USI tmp_address;
3899 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3900 {
3901 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3902 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3903 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3904 }
3905if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3906{
3907 {
3908 SI opval = tmp_address;
3909 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3910 written |= (1 << 5);
3911 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3912 }
3913frvbf_force_update (current_cpu);
3914}
3915}
3916}
3917
3918 abuf->written = written;
3919 return vpc;
3920#undef FLD
3921}
3922
3923/* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3924
3925static SEM_PC
3926SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3927{
3928#define FLD(f) abuf->fields.sfmt_cldsbu.f
3929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3930 int UNUSED written = 0;
3931 IADDR UNUSED pc = abuf->addr;
3932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3933
3934{
3935 USI tmp_address;
3936 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3937 {
3938 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3940 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3941 }
3942if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3943{
3944 {
3945 SI opval = tmp_address;
3946 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3947 written |= (1 << 5);
3948 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3949 }
3950frvbf_force_update (current_cpu);
3951}
3952}
3953}
3954
3955 abuf->written = written;
3956 return vpc;
3957#undef FLD
3958}
3959
3960/* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3961
3962static SEM_PC
3963SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3964{
3965#define FLD(f) abuf->fields.sfmt_cldsbu.f
3966 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3967 int UNUSED written = 0;
3968 IADDR UNUSED pc = abuf->addr;
3969 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3970
3971{
3972 USI tmp_address;
3973 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3974 {
3975 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3976 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3977 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3978 }
3979if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3980{
3981 {
3982 SI opval = tmp_address;
3983 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3984 written |= (1 << 5);
3985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3986 }
3987frvbf_force_update (current_cpu);
3988}
3989}
3990}
3991
3992 abuf->written = written;
3993 return vpc;
3994#undef FLD
3995}
3996
3997/* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
3998
3999static SEM_PC
4000SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4001{
4002#define FLD(f) abuf->fields.sfmt_cldsbu.f
4003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4004 int UNUSED written = 0;
4005 IADDR UNUSED pc = abuf->addr;
4006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4007
4008{
4009 USI tmp_address;
4010 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4011 {
4012 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4013 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4014 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4015 }
4016if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4017{
4018 {
4019 SI opval = tmp_address;
4020 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4021 written |= (1 << 5);
4022 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4023 }
4024frvbf_force_update (current_cpu);
4025}
4026}
4027}
4028
4029 abuf->written = written;
4030 return vpc;
4031#undef FLD
4032}
4033
4034/* ldu: ldu$pack @($GRi,$GRj),$GRk */
4035
4036static SEM_PC
4037SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4038{
4039#define FLD(f) abuf->fields.sfmt_cldsbu.f
4040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4041 int UNUSED written = 0;
4042 IADDR UNUSED pc = abuf->addr;
4043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4044
4045{
4046 USI tmp_address;
4047 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4048 {
4049 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4050 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4051 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4052 }
4053if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4054{
4055 {
4056 SI opval = tmp_address;
4057 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4058 written |= (1 << 5);
4059 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4060 }
4061frvbf_force_update (current_cpu);
4062}
4063}
4064}
4065
4066 abuf->written = written;
4067 return vpc;
4068#undef FLD
4069}
4070
4071/* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4072
4073static SEM_PC
4074SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4075{
4076#define FLD(f) abuf->fields.sfmt_cldsbu.f
4077 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4078 int UNUSED written = 0;
4079 IADDR UNUSED pc = abuf->addr;
4080 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4081
4082{
4083 BI tmp_do_op;
4084 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4085if (tmp_do_op) {
4086{
4087 USI tmp_address;
4088 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4089 {
4090 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4091 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4092 written |= (1 << 7);
4093 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4094 }
4095if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4096{
4097 {
4098 SI opval = tmp_address;
4099 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4100 written |= (1 << 6);
4101 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4102 }
4103frvbf_force_update (current_cpu);
4104}
4105}
4106}
4107}
4108}
4109
4110 abuf->written = written;
4111 return vpc;
4112#undef FLD
4113}
4114
4115/* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4116
4117static SEM_PC
4118SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4119{
4120#define FLD(f) abuf->fields.sfmt_cldsbu.f
4121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4122 int UNUSED written = 0;
4123 IADDR UNUSED pc = abuf->addr;
4124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4125
4126{
4127 BI tmp_do_op;
4128 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4129if (tmp_do_op) {
4130{
4131 USI tmp_address;
4132 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4133 {
4134 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4135 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4136 written |= (1 << 7);
4137 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4138 }
4139if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4140{
4141 {
4142 SI opval = tmp_address;
4143 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4144 written |= (1 << 6);
4145 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4146 }
4147frvbf_force_update (current_cpu);
4148}
4149}
4150}
4151}
4152}
4153
4154 abuf->written = written;
4155 return vpc;
4156#undef FLD
4157}
4158
4159/* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4160
4161static SEM_PC
4162SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4163{
4164#define FLD(f) abuf->fields.sfmt_cldsbu.f
4165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4166 int UNUSED written = 0;
4167 IADDR UNUSED pc = abuf->addr;
4168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4169
4170{
4171 BI tmp_do_op;
4172 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4173if (tmp_do_op) {
4174{
4175 USI tmp_address;
4176 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4177 {
4178 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4179 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4180 written |= (1 << 7);
4181 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4182 }
4183if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4184{
4185 {
4186 SI opval = tmp_address;
4187 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4188 written |= (1 << 6);
4189 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4190 }
4191frvbf_force_update (current_cpu);
4192}
4193}
4194}
4195}
4196}
4197
4198 abuf->written = written;
4199 return vpc;
4200#undef FLD
4201}
4202
4203/* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4204
4205static SEM_PC
4206SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4207{
4208#define FLD(f) abuf->fields.sfmt_cldsbu.f
4209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4210 int UNUSED written = 0;
4211 IADDR UNUSED pc = abuf->addr;
4212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4213
4214{
4215 BI tmp_do_op;
4216 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4217if (tmp_do_op) {
4218{
4219 USI tmp_address;
4220 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4221 {
4222 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4223 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4224 written |= (1 << 7);
4225 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4226 }
4227if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4228{
4229 {
4230 SI opval = tmp_address;
4231 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4232 written |= (1 << 6);
4233 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4234 }
4235frvbf_force_update (current_cpu);
4236}
4237}
4238}
4239}
4240}
4241
4242 abuf->written = written;
4243 return vpc;
4244#undef FLD
4245}
4246
4247/* nldu: nldu$pack @($GRi,$GRj),$GRk */
4248
4249static SEM_PC
4250SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4251{
4252#define FLD(f) abuf->fields.sfmt_cldsbu.f
4253 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4254 int UNUSED written = 0;
4255 IADDR UNUSED pc = abuf->addr;
4256 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4257
4258{
4259 BI tmp_do_op;
4260 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4261if (tmp_do_op) {
4262{
4263 USI tmp_address;
4264 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4265 {
4266 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4267 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4268 written |= (1 << 7);
4269 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4270 }
4271if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4272{
4273 {
4274 SI opval = tmp_address;
4275 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4276 written |= (1 << 6);
4277 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4278 }
4279frvbf_force_update (current_cpu);
4280}
4281}
4282}
4283}
4284}
4285
4286 abuf->written = written;
4287 return vpc;
4288#undef FLD
4289}
4290
4291/* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4292
4293static SEM_PC
4294SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4295{
4296#define FLD(f) abuf->fields.sfmt_cldbfu.f
4297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4298 int UNUSED written = 0;
4299 IADDR UNUSED pc = abuf->addr;
4300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4301
4302{
4303 USI tmp_address;
4304 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4305 {
4306 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4307 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4308 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4309 }
4310 {
4311 SI opval = tmp_address;
4312 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4313 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4314 }
4315frvbf_force_update (current_cpu);
4316}
4317
4318 return vpc;
4319#undef FLD
4320}
4321
4322/* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4323
4324static SEM_PC
4325SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4326{
4327#define FLD(f) abuf->fields.sfmt_cldbfu.f
4328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4329 int UNUSED written = 0;
4330 IADDR UNUSED pc = abuf->addr;
4331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4332
4333{
4334 USI tmp_address;
4335 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4336 {
4337 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4338 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4339 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4340 }
4341 {
4342 SI opval = tmp_address;
4343 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4344 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4345 }
4346frvbf_force_update (current_cpu);
4347}
4348
4349 return vpc;
4350#undef FLD
4351}
4352
4353/* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4354
4355static SEM_PC
4356SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4357{
4358#define FLD(f) abuf->fields.sfmt_cldbfu.f
4359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4360 int UNUSED written = 0;
4361 IADDR UNUSED pc = abuf->addr;
4362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4363
4364{
4365 USI tmp_address;
4366 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4367 {
4368 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4369 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4370 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4371 }
4372 {
4373 SI opval = tmp_address;
4374 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4375 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4376 }
4377frvbf_force_update (current_cpu);
4378}
4379
4380 return vpc;
4381#undef FLD
4382}
4383
4384/* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4385
4386static SEM_PC
4387SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4388{
4389#define FLD(f) abuf->fields.sfmt_ldcu.f
4390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4391 int UNUSED written = 0;
4392 IADDR UNUSED pc = abuf->addr;
4393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4394
4395{
4396 USI tmp_address;
4397 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4398 {
4399 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4400 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4401 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4402 }
4403 {
4404 SI opval = tmp_address;
4405 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4406 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4407 }
4408frvbf_force_update (current_cpu);
4409}
4410
4411 return vpc;
4412#undef FLD
4413}
4414
4415/* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4416
4417static SEM_PC
4418SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4419{
4420#define FLD(f) abuf->fields.sfmt_cldbfu.f
4421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4422 int UNUSED written = 0;
4423 IADDR UNUSED pc = abuf->addr;
4424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4425
4426{
4427 BI tmp_do_op;
4428 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4429if (tmp_do_op) {
4430{
4431 USI tmp_address;
4432 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4433 {
4434 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4435 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4436 written |= (1 << 6);
4437 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4438 }
4439 {
4440 SI opval = tmp_address;
4441 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4442 written |= (1 << 7);
4443 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4444 }
4445frvbf_force_update (current_cpu);
4446}
4447}
4448}
4449
4450 abuf->written = written;
4451 return vpc;
4452#undef FLD
4453}
4454
4455/* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4456
4457static SEM_PC
4458SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4459{
4460#define FLD(f) abuf->fields.sfmt_cldbfu.f
4461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4462 int UNUSED written = 0;
4463 IADDR UNUSED pc = abuf->addr;
4464 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4465
4466{
4467 BI tmp_do_op;
4468 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4469if (tmp_do_op) {
4470{
4471 USI tmp_address;
4472 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4473 {
4474 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4475 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4476 written |= (1 << 6);
4477 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4478 }
4479 {
4480 SI opval = tmp_address;
4481 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4482 written |= (1 << 7);
4483 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4484 }
4485frvbf_force_update (current_cpu);
4486}
4487}
4488}
4489
4490 abuf->written = written;
4491 return vpc;
4492#undef FLD
4493}
4494
4495/* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4496
4497static SEM_PC
4498SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4499{
4500#define FLD(f) abuf->fields.sfmt_cldbfu.f
4501 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4502 int UNUSED written = 0;
4503 IADDR UNUSED pc = abuf->addr;
4504 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4505
4506{
4507 BI tmp_do_op;
4508 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4509if (tmp_do_op) {
4510{
4511 USI tmp_address;
4512 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4513 {
4514 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4515 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4516 written |= (1 << 6);
4517 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4518 }
4519 {
4520 SI opval = tmp_address;
4521 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4522 written |= (1 << 7);
4523 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4524 }
4525frvbf_force_update (current_cpu);
4526}
4527}
4528}
4529
4530 abuf->written = written;
4531 return vpc;
4532#undef FLD
4533}
4534
4535/* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4536
4537static SEM_PC
4538SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4539{
4540#define FLD(f) abuf->fields.sfmt_clddu.f
4541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4542 int UNUSED written = 0;
4543 IADDR UNUSED pc = abuf->addr;
4544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4545
4546{
4547 SI tmp_address;
4548if (NESI (FLD (f_GRk), 0)) {
4549{
4550 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4551 {
4552 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4553 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4554 written |= (1 << 5);
4555 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4556 }
4557}
4558}
4559if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4560{
4561 {
4562 SI opval = tmp_address;
4563 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4564 written |= (1 << 6);
4565 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4566 }
4567frvbf_force_update (current_cpu);
4568}
4569}
4570}
4571
4572 abuf->written = written;
4573 return vpc;
4574#undef FLD
4575}
4576
4577/* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4578
4579static SEM_PC
4580SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4581{
4582#define FLD(f) abuf->fields.sfmt_clddu.f
4583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4584 int UNUSED written = 0;
4585 IADDR UNUSED pc = abuf->addr;
4586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4587
4588{
4589 BI tmp_do_op;
4590 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4591if (tmp_do_op) {
4592{
4593 SI tmp_address;
4594if (NESI (FLD (f_GRk), 0)) {
4595{
4596 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4597 {
4598 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4599 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4600 written |= (1 << 6);
4601 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4602 }
4603}
4604}
4605if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4606{
4607 {
4608 SI opval = tmp_address;
4609 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4610 written |= (1 << 7);
4611 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4612 }
4613frvbf_force_update (current_cpu);
4614}
4615}
4616}
4617}
4618}
4619
4620 abuf->written = written;
4621 return vpc;
4622#undef FLD
4623}
4624
4625/* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4626
4627static SEM_PC
4628SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4629{
4630#define FLD(f) abuf->fields.sfmt_clddfu.f
4631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4632 int UNUSED written = 0;
4633 IADDR UNUSED pc = abuf->addr;
4634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4635
4636{
4637 SI tmp_address;
4638{
4639 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4640 {
4641 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4642 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4643 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4644 }
4645}
4646 {
4647 SI opval = tmp_address;
4648 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4649 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4650 }
4651frvbf_force_update (current_cpu);
4652}
4653
4654 return vpc;
4655#undef FLD
4656}
4657
4658/* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4659
4660static SEM_PC
4661SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4662{
4663#define FLD(f) abuf->fields.sfmt_lddcu.f
4664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4665 int UNUSED written = 0;
4666 IADDR UNUSED pc = abuf->addr;
4667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4668
4669{
4670 SI tmp_address;
4671{
4672 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4673 {
4674 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4675 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4676 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4677 }
4678}
4679 {
4680 SI opval = tmp_address;
4681 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4682 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4683 }
4684frvbf_force_update (current_cpu);
4685}
4686
4687 return vpc;
4688#undef FLD
4689}
4690
4691/* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4692
4693static SEM_PC
4694SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4695{
4696#define FLD(f) abuf->fields.sfmt_clddfu.f
4697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4698 int UNUSED written = 0;
4699 IADDR UNUSED pc = abuf->addr;
4700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4701
4702{
4703 BI tmp_do_op;
4704 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4705if (tmp_do_op) {
4706{
4707 SI tmp_address;
4708{
4709 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4710 {
4711 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4712 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4713 written |= (1 << 6);
4714 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4715 }
4716}
4717 {
4718 SI opval = tmp_address;
4719 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4720 written |= (1 << 7);
4721 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4722 }
4723frvbf_force_update (current_cpu);
4724}
4725}
4726}
4727
4728 abuf->written = written;
4729 return vpc;
4730#undef FLD
4731}
4732
4733/* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4734
4735static SEM_PC
4736SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4737{
4738#define FLD(f) abuf->fields.sfmt_cstdu.f
4739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4740 int UNUSED written = 0;
4741 IADDR UNUSED pc = abuf->addr;
4742 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4743
4744{
4745 SI tmp_address;
4746{
4747 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4748frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4749}
4750if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4751{
4752 {
4753 SI opval = tmp_address;
4754 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4755 written |= (1 << 5);
4756 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4757 }
4758frvbf_force_update (current_cpu);
4759}
4760}
4761}
4762
4763 abuf->written = written;
4764 return vpc;
4765#undef FLD
4766}
4767
4768/* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4769
4770static SEM_PC
4771SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4772{
4773#define FLD(f) abuf->fields.sfmt_cstdu.f
4774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4775 int UNUSED written = 0;
4776 IADDR UNUSED pc = abuf->addr;
4777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4778
4779{
4780 BI tmp_do_op;
4781 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4782if (tmp_do_op) {
4783{
4784 SI tmp_address;
4785{
4786 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4787frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4788}
4789if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4790{
4791 {
4792 SI opval = tmp_address;
4793 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4794 written |= (1 << 6);
4795 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4796 }
4797frvbf_force_update (current_cpu);
4798}
4799}
4800}
4801}
4802}
4803
4804 abuf->written = written;
4805 return vpc;
4806#undef FLD
4807}
4808
4809/* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4810
4811static SEM_PC
4812SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4813{
4814#define FLD(f) abuf->fields.sfmt_cstdfu.f
4815 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4816 int UNUSED written = 0;
4817 IADDR UNUSED pc = abuf->addr;
4818 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4819
4820{
4821 SI tmp_address;
4822{
4823 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4824frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4825}
4826 {
4827 SI opval = tmp_address;
4828 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4829 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4830 }
4831frvbf_force_update (current_cpu);
4832}
4833
4834 return vpc;
4835#undef FLD
4836}
4837
4838/* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4839
4840static SEM_PC
4841SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4842{
4843#define FLD(f) abuf->fields.sfmt_stdcu.f
4844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4845 int UNUSED written = 0;
4846 IADDR UNUSED pc = abuf->addr;
4847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4848
4849{
4850 SI tmp_address;
4851{
4852 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4853frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4854}
4855 {
4856 SI opval = tmp_address;
4857 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4858 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4859 }
4860frvbf_force_update (current_cpu);
4861}
4862
4863 return vpc;
4864#undef FLD
4865}
4866
4867/* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4868
4869static SEM_PC
4870SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4871{
4872#define FLD(f) abuf->fields.sfmt_cstdfu.f
4873 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4874 int UNUSED written = 0;
4875 IADDR UNUSED pc = abuf->addr;
4876 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4877
4878{
4879 BI tmp_do_op;
4880 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4881if (tmp_do_op) {
4882{
4883 SI tmp_address;
4884{
4885 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4886frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4887}
4888 {
4889 SI opval = tmp_address;
4890 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4891 written |= (1 << 6);
4892 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4893 }
4894frvbf_force_update (current_cpu);
4895}
4896}
4897}
4898
4899 abuf->written = written;
4900 return vpc;
4901#undef FLD
4902}
4903
4904/* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4905
4906static SEM_PC
4907SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4908{
4909#define FLD(f) abuf->fields.sfmt_swapi.f
4910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4911 int UNUSED written = 0;
4912 IADDR UNUSED pc = abuf->addr;
4913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4914
4915 {
4916 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4917 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4918 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4919 }
4920
4921 return vpc;
4922#undef FLD
4923}
4924
4925/* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4926
4927static SEM_PC
4928SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4929{
4930#define FLD(f) abuf->fields.sfmt_swapi.f
4931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4932 int UNUSED written = 0;
4933 IADDR UNUSED pc = abuf->addr;
4934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4935
4936 {
4937 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4938 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4939 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4940 }
4941
4942 return vpc;
4943#undef FLD
4944}
4945
4946/* ldi: ldi$pack @($GRi,$d12),$GRk */
4947
4948static SEM_PC
4949SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4950{
4951#define FLD(f) abuf->fields.sfmt_swapi.f
4952 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4953 int UNUSED written = 0;
4954 IADDR UNUSED pc = abuf->addr;
4955 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4956
4957 {
4958 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4959 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4960 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4961 }
4962
4963 return vpc;
4964#undef FLD
4965}
4966
4967/* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4968
4969static SEM_PC
4970SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4971{
4972#define FLD(f) abuf->fields.sfmt_swapi.f
4973 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4974 int UNUSED written = 0;
4975 IADDR UNUSED pc = abuf->addr;
4976 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4977
4978 {
4979 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4981 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4982 }
4983
4984 return vpc;
4985#undef FLD
4986}
4987
4988/* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4989
4990static SEM_PC
4991SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4992{
4993#define FLD(f) abuf->fields.sfmt_swapi.f
4994 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4995 int UNUSED written = 0;
4996 IADDR UNUSED pc = abuf->addr;
4997 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4998
4999 {
5000 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5001 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5002 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5003 }
5004
5005 return vpc;
5006#undef FLD
5007}
5008
5009/* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5010
5011static SEM_PC
5012SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5013{
5014#define FLD(f) abuf->fields.sfmt_ldbfi.f
5015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5016 int UNUSED written = 0;
5017 IADDR UNUSED pc = abuf->addr;
5018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5019
5020 {
5021 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5022 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5023 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5024 }
5025
5026 return vpc;
5027#undef FLD
5028}
5029
5030/* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5031
5032static SEM_PC
5033SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5034{
5035#define FLD(f) abuf->fields.sfmt_ldbfi.f
5036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5037 int UNUSED written = 0;
5038 IADDR UNUSED pc = abuf->addr;
5039 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5040
5041 {
5042 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5043 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5044 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5045 }
5046
5047 return vpc;
5048#undef FLD
5049}
5050
5051/* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5052
5053static SEM_PC
5054SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5055{
5056#define FLD(f) abuf->fields.sfmt_ldbfi.f
5057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5058 int UNUSED written = 0;
5059 IADDR UNUSED pc = abuf->addr;
5060 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5061
5062 {
5063 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5064 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5065 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5066 }
5067
5068 return vpc;
5069#undef FLD
5070}
5071
5072/* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5073
5074static SEM_PC
5075SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5076{
5077#define FLD(f) abuf->fields.sfmt_swapi.f
5078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5079 int UNUSED written = 0;
5080 IADDR UNUSED pc = abuf->addr;
5081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5082
5083{
5084 BI tmp_do_op;
5085 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5086if (tmp_do_op) {
5087 {
5088 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5089 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5090 written |= (1 << 5);
5091 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5092 }
5093}
5094}
5095
5096 abuf->written = written;
5097 return vpc;
5098#undef FLD
5099}
5100
5101/* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5102
5103static SEM_PC
5104SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5105{
5106#define FLD(f) abuf->fields.sfmt_swapi.f
5107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5108 int UNUSED written = 0;
5109 IADDR UNUSED pc = abuf->addr;
5110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5111
5112{
5113 BI tmp_do_op;
5114 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5115if (tmp_do_op) {
5116 {
5117 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5118 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5119 written |= (1 << 5);
5120 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5121 }
5122}
5123}
5124
5125 abuf->written = written;
5126 return vpc;
5127#undef FLD
5128}
5129
5130/* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5131
5132static SEM_PC
5133SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5134{
5135#define FLD(f) abuf->fields.sfmt_swapi.f
5136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5137 int UNUSED written = 0;
5138 IADDR UNUSED pc = abuf->addr;
5139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5140
5141{
5142 BI tmp_do_op;
5143 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5144if (tmp_do_op) {
5145 {
5146 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5148 written |= (1 << 5);
5149 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5150 }
5151}
5152}
5153
5154 abuf->written = written;
5155 return vpc;
5156#undef FLD
5157}
5158
5159/* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5160
5161static SEM_PC
5162SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5163{
5164#define FLD(f) abuf->fields.sfmt_swapi.f
5165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5166 int UNUSED written = 0;
5167 IADDR UNUSED pc = abuf->addr;
5168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5169
5170{
5171 BI tmp_do_op;
5172 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5173if (tmp_do_op) {
5174 {
5175 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5176 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5177 written |= (1 << 5);
5178 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5179 }
5180}
5181}
5182
5183 abuf->written = written;
5184 return vpc;
5185#undef FLD
5186}
5187
5188/* nldi: nldi$pack @($GRi,$d12),$GRk */
5189
5190static SEM_PC
5191SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5192{
5193#define FLD(f) abuf->fields.sfmt_swapi.f
5194 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5195 int UNUSED written = 0;
5196 IADDR UNUSED pc = abuf->addr;
5197 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5198
5199{
5200 BI tmp_do_op;
5201 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5202if (tmp_do_op) {
5203 {
5204 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5205 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5206 written |= (1 << 5);
5207 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5208 }
5209}
5210}
5211
5212 abuf->written = written;
5213 return vpc;
5214#undef FLD
5215}
5216
5217/* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5218
5219static SEM_PC
5220SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5221{
5222#define FLD(f) abuf->fields.sfmt_ldbfi.f
5223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5224 int UNUSED written = 0;
5225 IADDR UNUSED pc = abuf->addr;
5226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5227
5228{
5229 BI tmp_do_op;
5230 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5231if (tmp_do_op) {
5232 {
5233 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5234 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5235 written |= (1 << 5);
5236 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5237 }
5238}
5239}
5240
5241 abuf->written = written;
5242 return vpc;
5243#undef FLD
5244}
5245
5246/* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5247
5248static SEM_PC
5249SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5250{
5251#define FLD(f) abuf->fields.sfmt_ldbfi.f
5252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5253 int UNUSED written = 0;
5254 IADDR UNUSED pc = abuf->addr;
5255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5256
5257{
5258 BI tmp_do_op;
5259 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5260if (tmp_do_op) {
5261 {
5262 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5263 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5264 written |= (1 << 5);
5265 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5266 }
5267}
5268}
5269
5270 abuf->written = written;
5271 return vpc;
5272#undef FLD
5273}
5274
5275/* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5276
5277static SEM_PC
5278SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5279{
5280#define FLD(f) abuf->fields.sfmt_ldbfi.f
5281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5282 int UNUSED written = 0;
5283 IADDR UNUSED pc = abuf->addr;
5284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5285
5286{
5287 BI tmp_do_op;
5288 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5289if (tmp_do_op) {
5290 {
5291 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5292 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5293 written |= (1 << 5);
5294 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5295 }
5296}
5297}
5298
5299 abuf->written = written;
5300 return vpc;
5301#undef FLD
5302}
5303
5304/* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5305
5306static SEM_PC
5307SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5308{
5309#define FLD(f) abuf->fields.sfmt_smuli.f
5310 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5311 int UNUSED written = 0;
5312 IADDR UNUSED pc = abuf->addr;
5313 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5314
5315{
5316 SI tmp_address;
5317if (NESI (FLD (f_GRk), 0)) {
5318{
5319 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5320 {
5321 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5322 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5323 written |= (1 << 4);
5324 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5325 }
5326}
5327}
5328}
5329
5330 abuf->written = written;
5331 return vpc;
5332#undef FLD
5333}
5334
5335/* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5336
5337static SEM_PC
5338SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5339{
5340#define FLD(f) abuf->fields.sfmt_lddfi.f
5341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5342 int UNUSED written = 0;
5343 IADDR UNUSED pc = abuf->addr;
5344 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5345
5346{
5347 SI tmp_address;
5348{
5349 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5350 {
5351 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5352 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5353 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5354 }
5355}
5356}
5357
5358 return vpc;
5359#undef FLD
5360}
5361
5362/* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5363
5364static SEM_PC
5365SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5366{
5367#define FLD(f) abuf->fields.sfmt_smuli.f
5368 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5369 int UNUSED written = 0;
5370 IADDR UNUSED pc = abuf->addr;
5371 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5372
5373{
5374 SI tmp_address;
5375{
5376 BI tmp_do_op;
5377 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5378if (tmp_do_op) {
5379if (NESI (FLD (f_GRk), 0)) {
5380{
5381 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5382 {
5383 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5384 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5385 written |= (1 << 5);
5386 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5387 }
5388}
5389}
5390}
5391}
5392}
5393
5394 abuf->written = written;
5395 return vpc;
5396#undef FLD
5397}
5398
5399/* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5400
5401static SEM_PC
5402SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5403{
5404#define FLD(f) abuf->fields.sfmt_lddfi.f
5405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5406 int UNUSED written = 0;
5407 IADDR UNUSED pc = abuf->addr;
5408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5409
5410{
5411 SI tmp_address;
5412{
5413 BI tmp_do_op;
5414 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5415if (tmp_do_op) {
5416{
5417 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5418 {
5419 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5420 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5421 written |= (1 << 5);
5422 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5423 }
5424}
5425}
5426}
5427}
5428
5429 abuf->written = written;
5430 return vpc;
5431#undef FLD
5432}
5433
5434/* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5435
5436static SEM_PC
5437SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5438{
5439#define FLD(f) abuf->fields.sfmt_stdi.f
5440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5441 int UNUSED written = 0;
5442 IADDR UNUSED pc = abuf->addr;
5443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5444
5445{
5446 SI tmp_address;
5447{
5448 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5449frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5450}
5451}
5452
5453 return vpc;
5454#undef FLD
5455}
5456
5457/* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5458
5459static SEM_PC
5460SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5461{
5462#define FLD(f) abuf->fields.sfmt_stdfi.f
5463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5464 int UNUSED written = 0;
5465 IADDR UNUSED pc = abuf->addr;
5466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5467
5468{
5469 SI tmp_address;
5470{
5471 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5472frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5473}
5474}
5475
5476 return vpc;
5477#undef FLD
5478}
5479
b34f6357
DB
5480/* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5481
5482static SEM_PC
5483SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5484{
5485#define FLD(f) abuf->fields.sfmt_stdfi.f
5486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5487 int UNUSED written = 0;
5488 IADDR UNUSED pc = abuf->addr;
5489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5490
5491{
5492 SI tmp_address;
5493{
5494 BI tmp_do_op;
5495 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5496if (tmp_do_op) {
5497{
5498 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5499frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5500}
5501}
5502}
5503}
5504
5505 return vpc;
5506#undef FLD
5507}
5508
5509/* stb: stb$pack $GRk,@($GRi,$GRj) */
5510
5511static SEM_PC
5512SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5513{
5514#define FLD(f) abuf->fields.sfmt_cswap.f
5515 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5516 int UNUSED written = 0;
5517 IADDR UNUSED pc = abuf->addr;
5518 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5519
5520frvbf_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)));
5521
5522 return vpc;
5523#undef FLD
5524}
5525
5526/* sth: sth$pack $GRk,@($GRi,$GRj) */
5527
5528static SEM_PC
5529SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5530{
5531#define FLD(f) abuf->fields.sfmt_cswap.f
5532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5533 int UNUSED written = 0;
5534 IADDR UNUSED pc = abuf->addr;
5535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5536
5537frvbf_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)));
5538
5539 return vpc;
5540#undef FLD
5541}
5542
5543/* st: st$pack $GRk,@($GRi,$GRj) */
5544
5545static SEM_PC
5546SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5547{
5548#define FLD(f) abuf->fields.sfmt_cswap.f
5549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5550 int UNUSED written = 0;
5551 IADDR UNUSED pc = abuf->addr;
5552 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5553
5554frvbf_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)));
5555
5556 return vpc;
5557#undef FLD
5558}
5559
5560/* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5561
5562static SEM_PC
5563SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5564{
5565#define FLD(f) abuf->fields.sfmt_cstbfu.f
5566 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5567 int UNUSED written = 0;
5568 IADDR UNUSED pc = abuf->addr;
5569 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5570
5571frvbf_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)));
5572
5573 return vpc;
5574#undef FLD
5575}
5576
5577/* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5578
5579static SEM_PC
5580SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5581{
5582#define FLD(f) abuf->fields.sfmt_cstbfu.f
5583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5584 int UNUSED written = 0;
5585 IADDR UNUSED pc = abuf->addr;
5586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5587
5588frvbf_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)));
5589
5590 return vpc;
5591#undef FLD
5592}
5593
5594/* stf: stf$pack $FRintk,@($GRi,$GRj) */
5595
5596static SEM_PC
5597SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5598{
5599#define FLD(f) abuf->fields.sfmt_cstbfu.f
5600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5601 int UNUSED written = 0;
5602 IADDR UNUSED pc = abuf->addr;
5603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5604
5605frvbf_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)));
5606
5607 return vpc;
5608#undef FLD
5609}
5610
5611/* stc: stc$pack $CPRk,@($GRi,$GRj) */
5612
5613static SEM_PC
5614SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5615{
5616#define FLD(f) abuf->fields.sfmt_stcu.f
5617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5618 int UNUSED written = 0;
5619 IADDR UNUSED pc = abuf->addr;
5620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5621
5622frvbf_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)]));
5623
5624 return vpc;
5625#undef FLD
5626}
5627
29a79ca0 5628/* std: std$pack $GRdoublek,@($GRi,$GRj) */
b34f6357
DB
5629
5630static SEM_PC
5631SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5632{
5633#define FLD(f) abuf->fields.sfmt_cstdu.f
5634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5635 int UNUSED written = 0;
5636 IADDR UNUSED pc = abuf->addr;
5637 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5638
5639{
5640 SI tmp_address;
5641{
5642 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5643frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5644}
5645}
5646
5647 return vpc;
5648#undef FLD
5649}
5650
29a79ca0 5651/* stdf: stdf$pack $FRdoublek,@($GRi,$GRj) */
b34f6357
DB
5652
5653static SEM_PC
5654SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5655{
5656#define FLD(f) abuf->fields.sfmt_cstdfu.f
5657 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5658 int UNUSED written = 0;
5659 IADDR UNUSED pc = abuf->addr;
5660 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5661
5662{
5663 SI tmp_address;
5664{
5665 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5666frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5667}
5668}
5669
5670 return vpc;
5671#undef FLD
5672}
5673
29a79ca0 5674/* stdc: stdc$pack $CPRdoublek,@($GRi,$GRj) */
b34f6357
DB
5675
5676static SEM_PC
5677SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5678{
5679#define FLD(f) abuf->fields.sfmt_stdcu.f
5680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5681 int UNUSED written = 0;
5682 IADDR UNUSED pc = abuf->addr;
5683 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5684
5685{
5686 SI tmp_address;
5687{
5688 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5689frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5690}
5691}
5692
5693 return vpc;
5694#undef FLD
5695}
5696
b34f6357
DB
5697/* stq: stq$pack $GRk,@($GRi,$GRj) */
5698
5699static SEM_PC
5700SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5701{
5702#define FLD(f) abuf->fields.sfmt_smulcc.f
5703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5704 int UNUSED written = 0;
5705 IADDR UNUSED pc = abuf->addr;
5706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5707
5708{
5709 SI tmp_address;
5710{
5711 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5712frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5713}
5714}
5715
5716 return vpc;
5717#undef FLD
5718}
5719
5720/* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5721
5722static SEM_PC
5723SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5724{
5725#define FLD(f) abuf->fields.sfmt_cstdfu.f
5726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5727 int UNUSED written = 0;
5728 IADDR UNUSED pc = abuf->addr;
5729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5730
5731{
5732 SI tmp_address;
5733{
5734 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5735frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5736}
5737}
5738
5739 return vpc;
5740#undef FLD
5741}
5742
5743/* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5744
5745static SEM_PC
5746SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5747{
5748#define FLD(f) abuf->fields.sfmt_stdcu.f
5749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5750 int UNUSED written = 0;
5751 IADDR UNUSED pc = abuf->addr;
5752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5753
5754{
5755 SI tmp_address;
5756{
5757 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5758frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5759}
5760}
5761
5762 return vpc;
5763#undef FLD
5764}
5765
b34f6357
DB
5766/* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5767
5768static SEM_PC
5769SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5770{
5771#define FLD(f) abuf->fields.sfmt_cstbu.f
5772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5773 int UNUSED written = 0;
5774 IADDR UNUSED pc = abuf->addr;
5775 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5776
5777{
5778 USI tmp_address;
5779 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5780frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5781 {
5782 SI opval = tmp_address;
5783 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5784 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5785 }
5786}
5787
5788 return vpc;
5789#undef FLD
5790}
5791
5792/* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5793
5794static SEM_PC
5795SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5796{
5797#define FLD(f) abuf->fields.sfmt_cstbu.f
5798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5799 int UNUSED written = 0;
5800 IADDR UNUSED pc = abuf->addr;
5801 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5802
5803{
5804 USI tmp_address;
5805 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5806frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5807 {
5808 SI opval = tmp_address;
5809 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5810 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5811 }
5812}
5813
5814 return vpc;
5815#undef FLD
5816}
5817
5818/* stu: stu$pack $GRk,@($GRi,$GRj) */
5819
5820static SEM_PC
5821SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5822{
5823#define FLD(f) abuf->fields.sfmt_cstbu.f
5824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5825 int UNUSED written = 0;
5826 IADDR UNUSED pc = abuf->addr;
5827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5828
5829{
5830 USI tmp_address;
5831 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5832frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5833 {
5834 SI opval = tmp_address;
5835 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5836 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5837 }
5838}
5839
5840 return vpc;
5841#undef FLD
5842}
5843
5844/* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5845
5846static SEM_PC
5847SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5848{
5849#define FLD(f) abuf->fields.sfmt_cstbfu.f
5850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5851 int UNUSED written = 0;
5852 IADDR UNUSED pc = abuf->addr;
5853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5854
5855{
5856 USI tmp_address;
5857 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5858frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5859 {
5860 SI opval = tmp_address;
5861 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5862 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5863 }
5864}
5865
5866 return vpc;
5867#undef FLD
5868}
5869
5870/* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5871
5872static SEM_PC
5873SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5874{
5875#define FLD(f) abuf->fields.sfmt_cstbfu.f
5876 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5877 int UNUSED written = 0;
5878 IADDR UNUSED pc = abuf->addr;
5879 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5880
5881{
5882 USI tmp_address;
5883 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5884frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5885 {
5886 SI opval = tmp_address;
5887 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5888 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5889 }
5890}
5891
5892 return vpc;
5893#undef FLD
5894}
5895
5896/* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5897
5898static SEM_PC
5899SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5900{
5901#define FLD(f) abuf->fields.sfmt_cstbfu.f
5902 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5903 int UNUSED written = 0;
5904 IADDR UNUSED pc = abuf->addr;
5905 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5906
5907{
5908 USI tmp_address;
5909 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5910frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5911 {
5912 SI opval = tmp_address;
5913 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5914 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5915 }
5916}
5917
5918 return vpc;
5919#undef FLD
5920}
5921
5922/* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
5923
5924static SEM_PC
5925SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5926{
5927#define FLD(f) abuf->fields.sfmt_stcu.f
5928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5929 int UNUSED written = 0;
5930 IADDR UNUSED pc = abuf->addr;
5931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5932
5933{
5934 USI tmp_address;
5935 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5936frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
5937 {
5938 SI opval = tmp_address;
5939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5940 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5941 }
5942}
5943
5944 return vpc;
5945#undef FLD
5946}
5947
29a79ca0 5948/* stdu: stdu$pack $GRdoublek,@($GRi,$GRj) */
b34f6357
DB
5949
5950static SEM_PC
5951SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5952{
5953#define FLD(f) abuf->fields.sfmt_cstdu.f
5954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5955 int UNUSED written = 0;
5956 IADDR UNUSED pc = abuf->addr;
5957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5958
5959{
5960 SI tmp_address;
5961{
5962 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5963frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5964}
5965 {
5966 SI opval = tmp_address;
5967 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5968 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5969 }
5970}
5971
5972 return vpc;
5973#undef FLD
5974}
5975
29a79ca0 5976/* stdfu: stdfu$pack $FRdoublek,@($GRi,$GRj) */
b34f6357
DB
5977
5978static SEM_PC
5979SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5980{
5981#define FLD(f) abuf->fields.sfmt_cstdfu.f
5982 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5983 int UNUSED written = 0;
5984 IADDR UNUSED pc = abuf->addr;
5985 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5986
5987{
5988 SI tmp_address;
5989{
5990 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5991frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5992}
5993 {
5994 SI opval = tmp_address;
5995 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5996 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5997 }
5998}
5999
6000 return vpc;
6001#undef FLD
6002}
6003
29a79ca0 6004/* stdcu: stdcu$pack $CPRdoublek,@($GRi,$GRj) */
b34f6357
DB
6005
6006static SEM_PC
6007SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6008{
6009#define FLD(f) abuf->fields.sfmt_stdcu.f
6010 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6011 int UNUSED written = 0;
6012 IADDR UNUSED pc = abuf->addr;
6013 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6014
6015{
6016 SI tmp_address;
6017{
6018 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6019frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6020}
6021 {
6022 SI opval = tmp_address;
6023 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6024 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6025 }
6026}
6027
6028 return vpc;
6029#undef FLD
6030}
6031
6032/* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6033
6034static SEM_PC
6035SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6036{
6037#define FLD(f) abuf->fields.sfmt_cstdu.f
6038 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6039 int UNUSED written = 0;
6040 IADDR UNUSED pc = abuf->addr;
6041 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6042
6043{
6044 SI tmp_address;
6045{
6046 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6047frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6048}
6049 {
6050 SI opval = tmp_address;
6051 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6052 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6053 }
6054}
6055
6056 return vpc;
6057#undef FLD
6058}
6059
6060/* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6061
6062static SEM_PC
6063SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6064{
6065#define FLD(f) abuf->fields.sfmt_cstdfu.f
6066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6067 int UNUSED written = 0;
6068 IADDR UNUSED pc = abuf->addr;
6069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6070
6071{
6072 SI tmp_address;
6073{
6074 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6075frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6076}
6077 {
6078 SI opval = tmp_address;
6079 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6080 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6081 }
6082}
6083
6084 return vpc;
6085#undef FLD
6086}
6087
6088/* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6089
6090static SEM_PC
6091SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6092{
6093#define FLD(f) abuf->fields.sfmt_stdcu.f
6094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6095 int UNUSED written = 0;
6096 IADDR UNUSED pc = abuf->addr;
6097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6098
6099{
6100 SI tmp_address;
6101{
6102 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6103frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6104}
6105 {
6106 SI opval = tmp_address;
6107 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6108 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6109 }
6110}
6111
6112 return vpc;
6113#undef FLD
6114}
6115
6116/* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6117
6118static SEM_PC
6119SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6120{
6121#define FLD(f) abuf->fields.sfmt_cswap.f
6122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6123 int UNUSED written = 0;
6124 IADDR UNUSED pc = abuf->addr;
6125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6126
6127if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6128 {
6129 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6130 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6131 written |= (1 << 5);
6132 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6133 }
6134}
6135
6136 abuf->written = written;
6137 return vpc;
6138#undef FLD
6139}
6140
6141/* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6142
6143static SEM_PC
6144SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6145{
6146#define FLD(f) abuf->fields.sfmt_cswap.f
6147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6148 int UNUSED written = 0;
6149 IADDR UNUSED pc = abuf->addr;
6150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6151
6152if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6153 {
6154 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6155 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6156 written |= (1 << 5);
6157 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6158 }
6159}
6160
6161 abuf->written = written;
6162 return vpc;
6163#undef FLD
6164}
6165
6166/* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6167
6168static SEM_PC
6169SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6170{
6171#define FLD(f) abuf->fields.sfmt_cswap.f
6172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6173 int UNUSED written = 0;
6174 IADDR UNUSED pc = abuf->addr;
6175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6176
6177if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6178 {
6179 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6180 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6181 written |= (1 << 5);
6182 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6183 }
6184}
6185
6186 abuf->written = written;
6187 return vpc;
6188#undef FLD
6189}
6190
6191/* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6192
6193static SEM_PC
6194SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6195{
6196#define FLD(f) abuf->fields.sfmt_cswap.f
6197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6198 int UNUSED written = 0;
6199 IADDR UNUSED pc = abuf->addr;
6200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6201
6202if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6203 {
6204 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6205 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6206 written |= (1 << 5);
6207 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6208 }
6209}
6210
6211 abuf->written = written;
6212 return vpc;
6213#undef FLD
6214}
6215
6216/* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6217
6218static SEM_PC
6219SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6220{
6221#define FLD(f) abuf->fields.sfmt_cswap.f
6222 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6223 int UNUSED written = 0;
6224 IADDR UNUSED pc = abuf->addr;
6225 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6226
6227if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6228 {
6229 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6230 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6231 written |= (1 << 5);
6232 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6233 }
6234}
6235
6236 abuf->written = written;
6237 return vpc;
6238#undef FLD
6239}
6240
6241/* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6242
6243static SEM_PC
6244SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6245{
6246#define FLD(f) abuf->fields.sfmt_cldbfu.f
6247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6248 int UNUSED written = 0;
6249 IADDR UNUSED pc = abuf->addr;
6250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6251
6252if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6253 {
6254 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6255 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6256 written |= (1 << 5);
6257 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6258 }
6259}
6260
6261 abuf->written = written;
6262 return vpc;
6263#undef FLD
6264}
6265
6266/* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6267
6268static SEM_PC
6269SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6270{
6271#define FLD(f) abuf->fields.sfmt_cldbfu.f
6272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6273 int UNUSED written = 0;
6274 IADDR UNUSED pc = abuf->addr;
6275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6276
6277if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6278 {
6279 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6280 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6281 written |= (1 << 5);
6282 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6283 }
6284}
6285
6286 abuf->written = written;
6287 return vpc;
6288#undef FLD
6289}
6290
6291/* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6292
6293static SEM_PC
6294SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6295{
6296#define FLD(f) abuf->fields.sfmt_cldbfu.f
6297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6298 int UNUSED written = 0;
6299 IADDR UNUSED pc = abuf->addr;
6300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6301
6302if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6303 {
6304 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6305 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6306 written |= (1 << 5);
6307 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6308 }
6309}
6310
6311 abuf->written = written;
6312 return vpc;
6313#undef FLD
6314}
6315
6316/* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6317
6318static SEM_PC
6319SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6320{
6321#define FLD(f) abuf->fields.sfmt_clddu.f
6322 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6323 int UNUSED written = 0;
6324 IADDR UNUSED pc = abuf->addr;
6325 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6326
6327if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6328{
6329 SI tmp_address;
6330if (NESI (FLD (f_GRk), 0)) {
6331{
6332 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6333 {
6334 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6335 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6336 written |= (1 << 6);
6337 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6338 }
6339}
6340}
6341}
6342}
6343
6344 abuf->written = written;
6345 return vpc;
6346#undef FLD
6347}
6348
6349/* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6350
6351static SEM_PC
6352SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6353{
6354#define FLD(f) abuf->fields.sfmt_clddfu.f
6355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6356 int UNUSED written = 0;
6357 IADDR UNUSED pc = abuf->addr;
6358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6359
6360if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6361{
6362 SI tmp_address;
6363{
6364 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6365 {
6366 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6367 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6368 written |= (1 << 5);
6369 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6370 }
6371}
6372}
6373}
6374
6375 abuf->written = written;
6376 return vpc;
6377#undef FLD
6378}
6379
6380/* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6381
6382static SEM_PC
6383SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6384{
6385#define FLD(f) abuf->fields.sfmt_cswap.f
6386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6387 int UNUSED written = 0;
6388 IADDR UNUSED pc = abuf->addr;
6389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6390
6391if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6392{
6393 SI tmp_address;
6394{
6395 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6396frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6397}
6398}
6399}
6400
6401 return vpc;
6402#undef FLD
6403}
6404
6405/* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6406
6407static SEM_PC
6408SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6409{
6410#define FLD(f) abuf->fields.sfmt_cldsbu.f
6411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6412 int UNUSED written = 0;
6413 IADDR UNUSED pc = abuf->addr;
6414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6415
6416if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6417{
6418 SI tmp_address;
6419 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6420 {
6421 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6422 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6423 written |= (1 << 8);
6424 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6425 }
6426if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6427 {
6428 SI opval = tmp_address;
6429 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6430 written |= (1 << 7);
6431 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6432 }
6433}
6434}
6435}
6436
6437 abuf->written = written;
6438 return vpc;
6439#undef FLD
6440}
6441
6442/* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6443
6444static SEM_PC
6445SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6446{
6447#define FLD(f) abuf->fields.sfmt_cldsbu.f
6448 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6449 int UNUSED written = 0;
6450 IADDR UNUSED pc = abuf->addr;
6451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6452
6453if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6454{
6455 SI tmp_address;
6456 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6457 {
6458 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6459 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6460 written |= (1 << 8);
6461 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6462 }
6463if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6464 {
6465 SI opval = tmp_address;
6466 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6467 written |= (1 << 7);
6468 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6469 }
6470}
6471}
6472}
6473
6474 abuf->written = written;
6475 return vpc;
6476#undef FLD
6477}
6478
6479/* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6480
6481static SEM_PC
6482SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6483{
6484#define FLD(f) abuf->fields.sfmt_cldsbu.f
6485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6486 int UNUSED written = 0;
6487 IADDR UNUSED pc = abuf->addr;
6488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6489
6490if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6491{
6492 SI tmp_address;
6493 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6494 {
6495 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6496 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6497 written |= (1 << 8);
6498 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6499 }
6500if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6501 {
6502 SI opval = tmp_address;
6503 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6504 written |= (1 << 7);
6505 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6506 }
6507}
6508}
6509}
6510
6511 abuf->written = written;
6512 return vpc;
6513#undef FLD
6514}
6515
6516/* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6517
6518static SEM_PC
6519SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6520{
6521#define FLD(f) abuf->fields.sfmt_cldsbu.f
6522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6523 int UNUSED written = 0;
6524 IADDR UNUSED pc = abuf->addr;
6525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6526
6527if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6528{
6529 SI tmp_address;
6530 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6531 {
6532 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6533 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6534 written |= (1 << 8);
6535 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6536 }
6537if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6538 {
6539 SI opval = tmp_address;
6540 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6541 written |= (1 << 7);
6542 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6543 }
6544}
6545}
6546}
6547
6548 abuf->written = written;
6549 return vpc;
6550#undef FLD
6551}
6552
6553/* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6554
6555static SEM_PC
6556SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6557{
6558#define FLD(f) abuf->fields.sfmt_cldsbu.f
6559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6560 int UNUSED written = 0;
6561 IADDR UNUSED pc = abuf->addr;
6562 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6563
6564if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6565{
6566 SI tmp_address;
6567 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6568 {
6569 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6570 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6571 written |= (1 << 8);
6572 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6573 }
6574if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6575 {
6576 SI opval = tmp_address;
6577 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6578 written |= (1 << 7);
6579 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6580 }
6581}
6582}
6583}
6584
6585 abuf->written = written;
6586 return vpc;
6587#undef FLD
6588}
6589
6590/* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6591
6592static SEM_PC
6593SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6594{
6595#define FLD(f) abuf->fields.sfmt_cldbfu.f
6596 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6597 int UNUSED written = 0;
6598 IADDR UNUSED pc = abuf->addr;
6599 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6600
6601if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6602{
6603 SI tmp_address;
6604 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6605 {
6606 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6607 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6608 written |= (1 << 5);
6609 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6610 }
6611 {
6612 SI opval = tmp_address;
6613 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6614 written |= (1 << 6);
6615 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6616 }
6617}
6618}
6619
6620 abuf->written = written;
6621 return vpc;
6622#undef FLD
6623}
6624
6625/* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6626
6627static SEM_PC
6628SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6629{
6630#define FLD(f) abuf->fields.sfmt_cldbfu.f
6631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6632 int UNUSED written = 0;
6633 IADDR UNUSED pc = abuf->addr;
6634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6635
6636if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6637{
6638 SI tmp_address;
6639 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6640 {
6641 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6642 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6643 written |= (1 << 5);
6644 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6645 }
6646 {
6647 SI opval = tmp_address;
6648 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6649 written |= (1 << 6);
6650 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6651 }
6652}
6653}
6654
6655 abuf->written = written;
6656 return vpc;
6657#undef FLD
6658}
6659
6660/* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6661
6662static SEM_PC
6663SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6664{
6665#define FLD(f) abuf->fields.sfmt_cldbfu.f
6666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6667 int UNUSED written = 0;
6668 IADDR UNUSED pc = abuf->addr;
6669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6670
6671if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6672{
6673 SI tmp_address;
6674 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6675 {
6676 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6677 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6678 written |= (1 << 5);
6679 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6680 }
6681 {
6682 SI opval = tmp_address;
6683 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6684 written |= (1 << 6);
6685 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6686 }
6687}
6688}
6689
6690 abuf->written = written;
6691 return vpc;
6692#undef FLD
6693}
6694
6695/* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6696
6697static SEM_PC
6698SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6699{
6700#define FLD(f) abuf->fields.sfmt_clddu.f
6701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6702 int UNUSED written = 0;
6703 IADDR UNUSED pc = abuf->addr;
6704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6705
6706if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6707{
6708 SI tmp_address;
6709if (NESI (FLD (f_GRk), 0)) {
6710{
6711 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6712 {
6713 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6714 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6715 written |= (1 << 7);
6716 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6717 }
6718}
6719}
6720if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6721 {
6722 SI opval = tmp_address;
6723 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6724 written |= (1 << 8);
6725 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6726 }
6727}
6728}
6729}
6730
6731 abuf->written = written;
6732 return vpc;
6733#undef FLD
6734}
6735
6736/* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6737
6738static SEM_PC
6739SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6740{
6741#define FLD(f) abuf->fields.sfmt_clddfu.f
6742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6743 int UNUSED written = 0;
6744 IADDR UNUSED pc = abuf->addr;
6745 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6746
6747if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6748{
6749 SI tmp_address;
6750{
6751 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6752 {
6753 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6754 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6755 written |= (1 << 5);
6756 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6757 }
6758}
6759 {
6760 SI opval = tmp_address;
6761 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6762 written |= (1 << 6);
6763 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6764 }
6765}
6766}
6767
6768 abuf->written = written;
6769 return vpc;
6770#undef FLD
6771}
6772
6773/* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6774
6775static SEM_PC
6776SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6777{
6778#define FLD(f) abuf->fields.sfmt_cstdu.f
6779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6780 int UNUSED written = 0;
6781 IADDR UNUSED pc = abuf->addr;
6782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6783
6784if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6785{
6786 SI tmp_address;
6787{
6788 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6789frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6790}
6791if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6792 {
6793 SI opval = tmp_address;
6794 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6795 written |= (1 << 7);
6796 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6797 }
6798}
6799}
6800}
6801
6802 abuf->written = written;
6803 return vpc;
6804#undef FLD
6805}
6806
6807/* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6808
6809static SEM_PC
6810SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6811{
6812#define FLD(f) abuf->fields.sfmt_cswap.f
6813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6814 int UNUSED written = 0;
6815 IADDR UNUSED pc = abuf->addr;
6816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6817
6818if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6819frvbf_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)));
6820}
6821
6822 return vpc;
6823#undef FLD
6824}
6825
6826/* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6827
6828static SEM_PC
6829SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6830{
6831#define FLD(f) abuf->fields.sfmt_cswap.f
6832 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6833 int UNUSED written = 0;
6834 IADDR UNUSED pc = abuf->addr;
6835 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6836
6837if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6838frvbf_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)));
6839}
6840
6841 return vpc;
6842#undef FLD
6843}
6844
6845/* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6846
6847static SEM_PC
6848SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6849{
6850#define FLD(f) abuf->fields.sfmt_cswap.f
6851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6852 int UNUSED written = 0;
6853 IADDR UNUSED pc = abuf->addr;
6854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6855
6856if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6857frvbf_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)));
6858}
6859
6860 return vpc;
6861#undef FLD
6862}
6863
6864/* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6865
6866static SEM_PC
6867SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6868{
6869#define FLD(f) abuf->fields.sfmt_cstbfu.f
6870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6871 int UNUSED written = 0;
6872 IADDR UNUSED pc = abuf->addr;
6873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6874
6875if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6876frvbf_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)));
6877}
6878
6879 return vpc;
6880#undef FLD
6881}
6882
6883/* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6884
6885static SEM_PC
6886SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6887{
6888#define FLD(f) abuf->fields.sfmt_cstbfu.f
6889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6890 int UNUSED written = 0;
6891 IADDR UNUSED pc = abuf->addr;
6892 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6893
6894if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6895frvbf_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)));
6896}
6897
6898 return vpc;
6899#undef FLD
6900}
6901
6902/* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6903
6904static SEM_PC
6905SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6906{
6907#define FLD(f) abuf->fields.sfmt_cstbfu.f
6908 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6909 int UNUSED written = 0;
6910 IADDR UNUSED pc = abuf->addr;
6911 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6912
6913if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6914frvbf_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)));
6915}
6916
6917 return vpc;
6918#undef FLD
6919}
6920
29a79ca0 6921/* cstd: cstd$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
6922
6923static SEM_PC
6924SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6925{
6926#define FLD(f) abuf->fields.sfmt_cstdu.f
6927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6928 int UNUSED written = 0;
6929 IADDR UNUSED pc = abuf->addr;
6930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6931
6932if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6933{
6934 SI tmp_address;
6935{
6936 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6937frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6938}
6939}
6940}
6941
6942 return vpc;
6943#undef FLD
6944}
6945
29a79ca0 6946/* cstdf: cstdf$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
6947
6948static SEM_PC
6949SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6950{
6951#define FLD(f) abuf->fields.sfmt_cstdfu.f
6952 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6953 int UNUSED written = 0;
6954 IADDR UNUSED pc = abuf->addr;
6955 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6956
6957if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6958{
6959 SI tmp_address;
6960{
6961 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6962frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6963}
6964}
6965}
6966
6967 return vpc;
6968#undef FLD
6969}
6970
6971/* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6972
6973static SEM_PC
6974SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6975{
6976#define FLD(f) abuf->fields.sfmt_cswap.f
6977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6978 int UNUSED written = 0;
6979 IADDR UNUSED pc = abuf->addr;
6980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6981
6982if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6983{
6984 SI tmp_address;
6985{
6986 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6987frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6988}
6989}
6990}
6991
6992 return vpc;
6993#undef FLD
6994}
6995
6996/* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6997
6998static SEM_PC
6999SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7000{
7001#define FLD(f) abuf->fields.sfmt_cstbu.f
7002 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7003 int UNUSED written = 0;
7004 IADDR UNUSED pc = abuf->addr;
7005 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7006
7007if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7008{
7009 SI tmp_address;
7010 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7011frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7012 {
7013 SI opval = tmp_address;
7014 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7015 written |= (1 << 6);
7016 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7017 }
7018}
7019}
7020
7021 abuf->written = written;
7022 return vpc;
7023#undef FLD
7024}
7025
7026/* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7027
7028static SEM_PC
7029SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7030{
7031#define FLD(f) abuf->fields.sfmt_cstbu.f
7032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7033 int UNUSED written = 0;
7034 IADDR UNUSED pc = abuf->addr;
7035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7036
7037if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7038{
7039 SI tmp_address;
7040 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7041frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7042 {
7043 SI opval = tmp_address;
7044 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7045 written |= (1 << 6);
7046 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7047 }
7048}
7049}
7050
7051 abuf->written = written;
7052 return vpc;
7053#undef FLD
7054}
7055
7056/* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7057
7058static SEM_PC
7059SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7060{
7061#define FLD(f) abuf->fields.sfmt_cstbu.f
7062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7063 int UNUSED written = 0;
7064 IADDR UNUSED pc = abuf->addr;
7065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7066
7067if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7068{
7069 SI tmp_address;
7070 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7071frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7072 {
7073 SI opval = tmp_address;
7074 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7075 written |= (1 << 6);
7076 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7077 }
7078}
7079}
7080
7081 abuf->written = written;
7082 return vpc;
7083#undef FLD
7084}
7085
7086/* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7087
7088static SEM_PC
7089SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7090{
7091#define FLD(f) abuf->fields.sfmt_cstbfu.f
7092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7093 int UNUSED written = 0;
7094 IADDR UNUSED pc = abuf->addr;
7095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7096
7097if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7098{
7099 SI tmp_address;
7100 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7101frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7102 {
7103 SI opval = tmp_address;
7104 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7105 written |= (1 << 6);
7106 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7107 }
7108}
7109}
7110
7111 abuf->written = written;
7112 return vpc;
7113#undef FLD
7114}
7115
7116/* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7117
7118static SEM_PC
7119SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7120{
7121#define FLD(f) abuf->fields.sfmt_cstbfu.f
7122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7123 int UNUSED written = 0;
7124 IADDR UNUSED pc = abuf->addr;
7125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7126
7127if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7128{
7129 SI tmp_address;
7130 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7131frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7132 {
7133 SI opval = tmp_address;
7134 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7135 written |= (1 << 6);
7136 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7137 }
7138}
7139}
7140
7141 abuf->written = written;
7142 return vpc;
7143#undef FLD
7144}
7145
7146/* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7147
7148static SEM_PC
7149SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7150{
7151#define FLD(f) abuf->fields.sfmt_cstbfu.f
7152 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7153 int UNUSED written = 0;
7154 IADDR UNUSED pc = abuf->addr;
7155 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7156
7157if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7158{
7159 SI tmp_address;
7160 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7161frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7162 {
7163 SI opval = tmp_address;
7164 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7165 written |= (1 << 6);
7166 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7167 }
7168}
7169}
7170
7171 abuf->written = written;
7172 return vpc;
7173#undef FLD
7174}
7175
29a79ca0 7176/* cstdu: cstdu$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
7177
7178static SEM_PC
7179SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7180{
7181#define FLD(f) abuf->fields.sfmt_cstdu.f
7182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7183 int UNUSED written = 0;
7184 IADDR UNUSED pc = abuf->addr;
7185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7186
7187if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7188{
7189 SI tmp_address;
7190{
7191 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7192frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7193}
7194 {
7195 SI opval = tmp_address;
7196 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7197 written |= (1 << 6);
7198 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7199 }
7200}
7201}
7202
7203 abuf->written = written;
7204 return vpc;
7205#undef FLD
7206}
7207
29a79ca0 7208/* cstdfu: cstdfu$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
b34f6357
DB
7209
7210static SEM_PC
7211SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7212{
7213#define FLD(f) abuf->fields.sfmt_cstdfu.f
7214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7215 int UNUSED written = 0;
7216 IADDR UNUSED pc = abuf->addr;
7217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7218
7219if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7220{
7221 SI tmp_address;
7222{
7223 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7224frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7225}
7226 {
7227 SI opval = tmp_address;
7228 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7229 written |= (1 << 6);
7230 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7231 }
7232}
7233}
7234
7235 abuf->written = written;
7236 return vpc;
7237#undef FLD
7238}
7239
7240/* stbi: stbi$pack $GRk,@($GRi,$d12) */
7241
7242static SEM_PC
7243SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7244{
7245#define FLD(f) abuf->fields.sfmt_swapi.f
7246 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7247 int UNUSED written = 0;
7248 IADDR UNUSED pc = abuf->addr;
7249 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7250
7251frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7252
7253 return vpc;
7254#undef FLD
7255}
7256
7257/* sthi: sthi$pack $GRk,@($GRi,$d12) */
7258
7259static SEM_PC
7260SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7261{
7262#define FLD(f) abuf->fields.sfmt_swapi.f
7263 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7264 int UNUSED written = 0;
7265 IADDR UNUSED pc = abuf->addr;
7266 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7267
7268frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7269
7270 return vpc;
7271#undef FLD
7272}
7273
7274/* sti: sti$pack $GRk,@($GRi,$d12) */
7275
7276static SEM_PC
7277SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7278{
7279#define FLD(f) abuf->fields.sfmt_swapi.f
7280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7281 int UNUSED written = 0;
7282 IADDR UNUSED pc = abuf->addr;
7283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7284
7285frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7286
7287 return vpc;
7288#undef FLD
7289}
7290
7291/* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7292
7293static SEM_PC
7294SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7295{
7296#define FLD(f) abuf->fields.sfmt_stbfi.f
7297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7298 int UNUSED written = 0;
7299 IADDR UNUSED pc = abuf->addr;
7300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7301
7302frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7303
7304 return vpc;
7305#undef FLD
7306}
7307
7308/* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7309
7310static SEM_PC
7311SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7312{
7313#define FLD(f) abuf->fields.sfmt_stbfi.f
7314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7315 int UNUSED written = 0;
7316 IADDR UNUSED pc = abuf->addr;
7317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7318
7319frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7320
7321 return vpc;
7322#undef FLD
7323}
7324
7325/* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7326
7327static SEM_PC
7328SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7329{
7330#define FLD(f) abuf->fields.sfmt_stbfi.f
7331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7332 int UNUSED written = 0;
7333 IADDR UNUSED pc = abuf->addr;
7334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7335
7336frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7337
7338 return vpc;
7339#undef FLD
7340}
7341
29a79ca0 7342/* stdi: stdi$pack $GRdoublek,@($GRi,$d12) */
b34f6357
DB
7343
7344static SEM_PC
7345SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7346{
7347#define FLD(f) abuf->fields.sfmt_stdi.f
7348 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7349 int UNUSED written = 0;
7350 IADDR UNUSED pc = abuf->addr;
7351 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7352
7353{
7354 SI tmp_address;
7355{
7356 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7357frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7358}
7359}
7360
7361 return vpc;
7362#undef FLD
7363}
7364
29a79ca0 7365/* stdfi: stdfi$pack $FRdoublek,@($GRi,$d12) */
b34f6357
DB
7366
7367static SEM_PC
7368SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7369{
7370#define FLD(f) abuf->fields.sfmt_stdfi.f
7371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7372 int UNUSED written = 0;
7373 IADDR UNUSED pc = abuf->addr;
7374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7375
7376{
7377 SI tmp_address;
7378{
7379 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7380frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7381}
7382}
7383
7384 return vpc;
7385#undef FLD
7386}
7387
7388/* stqi: stqi$pack $GRk,@($GRi,$d12) */
7389
7390static SEM_PC
7391SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7392{
7393#define FLD(f) abuf->fields.sfmt_stdi.f
7394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7395 int UNUSED written = 0;
7396 IADDR UNUSED pc = abuf->addr;
7397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7398
7399{
7400 SI tmp_address;
7401{
7402 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7403frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7404}
7405}
7406
7407 return vpc;
7408#undef FLD
7409}
7410
7411/* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7412
7413static SEM_PC
7414SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7415{
7416#define FLD(f) abuf->fields.sfmt_stdfi.f
7417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7418 int UNUSED written = 0;
7419 IADDR UNUSED pc = abuf->addr;
7420 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7421
7422{
7423 SI tmp_address;
7424{
7425 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7426frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7427}
7428}
7429
7430 return vpc;
7431#undef FLD
7432}
7433
7434/* swap: swap$pack @($GRi,$GRj),$GRk */
7435
7436static SEM_PC
7437SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7438{
7439#define FLD(f) abuf->fields.sfmt_cswap.f
7440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7441 int UNUSED written = 0;
7442 IADDR UNUSED pc = abuf->addr;
7443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7444
7445{
7446 SI tmp_tmp;
7447 SI tmp_address;
7448 tmp_tmp = GET_H_GR (FLD (f_GRk));
7449 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
e930b1f5 7450frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7451 {
7452 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7453 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7454 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7455 }
7456frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7457}
7458
7459 return vpc;
7460#undef FLD
7461}
7462
7463/* swapi: swapi$pack @($GRi,$d12),$GRk */
7464
7465static SEM_PC
7466SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7467{
7468#define FLD(f) abuf->fields.sfmt_swapi.f
7469 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7470 int UNUSED written = 0;
7471 IADDR UNUSED pc = abuf->addr;
7472 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7473
7474{
7475 SI tmp_tmp;
7476 SI tmp_address;
7477 tmp_tmp = GET_H_GR (FLD (f_GRk));
7478 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
e930b1f5 7479frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7480 {
7481 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7482 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7483 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7484 }
7485frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7486}
7487
7488 return vpc;
7489#undef FLD
7490}
7491
7492/* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7493
7494static SEM_PC
7495SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7496{
7497#define FLD(f) abuf->fields.sfmt_cswap.f
7498 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7499 int UNUSED written = 0;
7500 IADDR UNUSED pc = abuf->addr;
7501 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7502
7503if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7504{
7505 SI tmp_tmp;
7506 SI tmp_address;
7507 tmp_tmp = GET_H_GR (FLD (f_GRk));
7508 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
e930b1f5 7509frvbf_check_swap_address (current_cpu, tmp_address);
b34f6357
DB
7510 {
7511 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7512 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7513 written |= (1 << 6);
7514 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7515 }
7516frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7517}
7518}
7519
7520 abuf->written = written;
7521 return vpc;
7522#undef FLD
7523}
7524
7525/* movgf: movgf$pack $GRj,$FRintk */
7526
7527static SEM_PC
7528SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7529{
7530#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7531 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7532 int UNUSED written = 0;
7533 IADDR UNUSED pc = abuf->addr;
7534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7535
7536 {
7537 SI opval = GET_H_GR (FLD (f_GRj));
7538 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7539 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7540 }
7541
7542 return vpc;
7543#undef FLD
7544}
7545
7546/* movfg: movfg$pack $FRintk,$GRj */
7547
7548static SEM_PC
7549SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7550{
7551#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7553 int UNUSED written = 0;
7554 IADDR UNUSED pc = abuf->addr;
7555 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7556
7557 {
7558 SI opval = GET_H_FR_INT (FLD (f_FRk));
7559 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7560 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7561 }
7562
7563 return vpc;
7564#undef FLD
7565}
7566
7567/* movgfd: movgfd$pack $GRj,$FRintk */
7568
7569static SEM_PC
7570SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7571{
7572#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7574 int UNUSED written = 0;
7575 IADDR UNUSED pc = abuf->addr;
7576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7577
7578if (EQSI (FLD (f_GRj), 0)) {
7579{
7580 {
7581 SI opval = 0;
7582 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7583 written |= (1 << 4);
7584 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7585 }
7586 {
7587 USI opval = 0;
b29791a8 7588 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7589 written |= (1 << 5);
7590 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7591 }
7592}
7593} else {
7594{
7595 {
7596 SI opval = GET_H_GR (FLD (f_GRj));
7597 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7598 written |= (1 << 4);
7599 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7600 }
7601 {
b29791a8
DE
7602 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7603 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7604 written |= (1 << 5);
7605 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7606 }
7607}
7608}
7609
7610 abuf->written = written;
7611 return vpc;
7612#undef FLD
7613}
7614
7615/* movfgd: movfgd$pack $FRintk,$GRj */
7616
7617static SEM_PC
7618SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7619{
7620#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7622 int UNUSED written = 0;
7623 IADDR UNUSED pc = abuf->addr;
7624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7625
7626if (NESI (FLD (f_GRj), 0)) {
7627{
7628 {
7629 SI opval = GET_H_FR_INT (FLD (f_FRk));
7630 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7631 written |= (1 << 4);
7632 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7633 }
7634 {
b29791a8
DE
7635 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7636 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
7637 written |= (1 << 5);
7638 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7639 }
7640}
7641}
7642
7643 abuf->written = written;
7644 return vpc;
7645#undef FLD
7646}
7647
7648/* movgfq: movgfq$pack $GRj,$FRintk */
7649
7650static SEM_PC
7651SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7652{
7653#define FLD(f) abuf->fields.sfmt_movgfq.f
7654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7655 int UNUSED written = 0;
7656 IADDR UNUSED pc = abuf->addr;
7657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7658
7659if (EQSI (FLD (f_GRj), 0)) {
7660{
7661 {
7662 SI opval = 0;
7663 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7664 written |= (1 << 6);
7665 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7666 }
7667 {
7668 USI opval = 0;
b29791a8 7669 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7670 written |= (1 << 7);
7671 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7672 }
7673 {
7674 USI opval = 0;
b29791a8 7675 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
7676 written |= (1 << 8);
7677 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7678 }
7679 {
7680 USI opval = 0;
b29791a8 7681 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
7682 written |= (1 << 9);
7683 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7684 }
7685}
7686} else {
7687{
7688 {
7689 SI opval = GET_H_GR (FLD (f_GRj));
7690 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7691 written |= (1 << 6);
7692 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7693 }
7694 {
b29791a8
DE
7695 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7696 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7697 written |= (1 << 7);
7698 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7699 }
7700 {
b29791a8
DE
7701 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 2));
7702 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
7703 written |= (1 << 8);
7704 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7705 }
7706 {
b29791a8
DE
7707 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 3));
7708 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
7709 written |= (1 << 9);
7710 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7711 }
7712}
7713}
7714
7715 abuf->written = written;
7716 return vpc;
7717#undef FLD
7718}
7719
7720/* movfgq: movfgq$pack $FRintk,$GRj */
7721
7722static SEM_PC
7723SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7724{
7725#define FLD(f) abuf->fields.sfmt_movfgq.f
7726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7727 int UNUSED written = 0;
7728 IADDR UNUSED pc = abuf->addr;
7729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7730
7731if (NESI (FLD (f_GRj), 0)) {
7732{
7733 {
7734 SI opval = GET_H_FR_INT (FLD (f_FRk));
7735 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7736 written |= (1 << 6);
7737 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7738 }
7739 {
b29791a8
DE
7740 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7741 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
7742 written |= (1 << 7);
7743 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7744 }
7745 {
b29791a8
DE
7746 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 2));
7747 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 2), opval);
b34f6357
DB
7748 written |= (1 << 8);
7749 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7750 }
7751 {
b29791a8
DE
7752 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 3));
7753 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 3), opval);
b34f6357
DB
7754 written |= (1 << 9);
7755 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7756 }
7757}
7758}
7759
7760 abuf->written = written;
7761 return vpc;
7762#undef FLD
7763}
7764
7765/* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7766
7767static SEM_PC
7768SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7769{
7770#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7771 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7772 int UNUSED written = 0;
7773 IADDR UNUSED pc = abuf->addr;
7774 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7775
7776if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7777 {
7778 SI opval = GET_H_GR (FLD (f_GRj));
7779 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7780 written |= (1 << 3);
7781 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7782 }
7783}
7784
7785 abuf->written = written;
7786 return vpc;
7787#undef FLD
7788}
7789
7790/* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7791
7792static SEM_PC
7793SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7794{
7795#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7796 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7797 int UNUSED written = 0;
7798 IADDR UNUSED pc = abuf->addr;
7799 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7800
7801if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7802 {
7803 SI opval = GET_H_FR_INT (FLD (f_FRk));
7804 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7805 written |= (1 << 3);
7806 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7807 }
7808}
7809
7810 abuf->written = written;
7811 return vpc;
7812#undef FLD
7813}
7814
7815/* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7816
7817static SEM_PC
7818SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7819{
7820#define FLD(f) abuf->fields.sfmt_cmovgfd.f
7821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7822 int UNUSED written = 0;
7823 IADDR UNUSED pc = abuf->addr;
7824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7825
7826if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7827if (EQSI (FLD (f_GRj), 0)) {
7828{
7829 {
7830 SI opval = 0;
7831 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7832 written |= (1 << 6);
7833 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7834 }
7835 {
7836 USI opval = 0;
b29791a8 7837 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7838 written |= (1 << 7);
7839 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7840 }
7841}
7842} else {
7843{
7844 {
7845 SI opval = GET_H_GR (FLD (f_GRj));
7846 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7847 written |= (1 << 6);
7848 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7849 }
7850 {
b29791a8
DE
7851 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7852 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
7853 written |= (1 << 7);
7854 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7855 }
7856}
7857}
7858}
7859
7860 abuf->written = written;
7861 return vpc;
7862#undef FLD
7863}
7864
7865/* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7866
7867static SEM_PC
7868SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7869{
7870#define FLD(f) abuf->fields.sfmt_cmovfgd.f
7871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7872 int UNUSED written = 0;
7873 IADDR UNUSED pc = abuf->addr;
7874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7875
7876if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7877{
7878 {
7879 SI opval = GET_H_FR_INT (FLD (f_FRk));
7880 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7881 written |= (1 << 6);
7882 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7883 }
7884 {
b29791a8
DE
7885 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7886 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
b34f6357
DB
7887 written |= (1 << 7);
7888 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7889 }
7890}
7891}
7892
7893 abuf->written = written;
7894 return vpc;
7895#undef FLD
7896}
7897
7898/* movgs: movgs$pack $GRj,$spr */
7899
7900static SEM_PC
7901SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7902{
7903#define FLD(f) abuf->fields.sfmt_movgs.f
7904 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7905 int UNUSED written = 0;
7906 IADDR UNUSED pc = abuf->addr;
7907 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7908
7909 {
7910 USI opval = GET_H_GR (FLD (f_GRj));
7911 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
7912 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
7913 }
7914
7915 return vpc;
7916#undef FLD
7917}
7918
7919/* movsg: movsg$pack $spr,$GRj */
7920
7921static SEM_PC
7922SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7923{
7924#define FLD(f) abuf->fields.sfmt_movsg.f
7925 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7926 int UNUSED written = 0;
7927 IADDR UNUSED pc = abuf->addr;
7928 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7929
7930 {
7931 SI opval = GET_H_SPR (FLD (f_spr));
7932 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7933 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7934 }
7935
7936 return vpc;
7937#undef FLD
7938}
7939
7940/* bra: bra$pack $hint_taken$label16 */
7941
7942static SEM_PC
7943SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7944{
7945#define FLD(f) abuf->fields.sfmt_fbne.f
7946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7947 int UNUSED written = 0;
7948 IADDR UNUSED pc = abuf->addr;
7949 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7950
7951{
7952frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7953 {
7954 USI opval = FLD (i_label16);
7955 sim_queue_pc_write (current_cpu, opval);
7956 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7957 }
7958}
7959
7960 return vpc;
7961#undef FLD
7962}
7963
7964/* bno: bno$pack$hint_not_taken */
7965
7966static SEM_PC
7967SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7968{
7969#define FLD(f) abuf->fields.sfmt_fbne.f
7970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7971 int UNUSED written = 0;
7972 IADDR UNUSED pc = abuf->addr;
7973 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7974
7975frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7976
7977 return vpc;
7978#undef FLD
7979}
7980
7981/* beq: beq$pack $ICCi_2,$hint,$label16 */
7982
7983static SEM_PC
7984SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7985{
7986#define FLD(f) abuf->fields.sfmt_beq.f
7987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7988 int UNUSED written = 0;
7989 IADDR UNUSED pc = abuf->addr;
7990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7991
7992{
7993frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7994if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
7995 {
7996 USI opval = FLD (i_label16);
7997 sim_queue_pc_write (current_cpu, opval);
7998 written |= (1 << 3);
7999 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8000 }
8001}
8002}
8003
8004 abuf->written = written;
8005 return vpc;
8006#undef FLD
8007}
8008
8009/* bne: bne$pack $ICCi_2,$hint,$label16 */
8010
8011static SEM_PC
8012SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8013{
8014#define FLD(f) abuf->fields.sfmt_beq.f
8015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8016 int UNUSED written = 0;
8017 IADDR UNUSED pc = abuf->addr;
8018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8019
8020{
8021frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8022if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8023 {
8024 USI opval = FLD (i_label16);
8025 sim_queue_pc_write (current_cpu, opval);
8026 written |= (1 << 3);
8027 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8028 }
8029}
8030}
8031
8032 abuf->written = written;
8033 return vpc;
8034#undef FLD
8035}
8036
8037/* ble: ble$pack $ICCi_2,$hint,$label16 */
8038
8039static SEM_PC
8040SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8041{
8042#define FLD(f) abuf->fields.sfmt_beq.f
8043 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8044 int UNUSED written = 0;
8045 IADDR UNUSED pc = abuf->addr;
8046 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8047
8048{
8049frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8050if (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))))) {
8051 {
8052 USI opval = FLD (i_label16);
8053 sim_queue_pc_write (current_cpu, opval);
8054 written |= (1 << 3);
8055 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8056 }
8057}
8058}
8059
8060 abuf->written = written;
8061 return vpc;
8062#undef FLD
8063}
8064
8065/* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8066
8067static SEM_PC
8068SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8069{
8070#define FLD(f) abuf->fields.sfmt_beq.f
8071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8072 int UNUSED written = 0;
8073 IADDR UNUSED pc = abuf->addr;
8074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8075
8076{
8077frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8078if (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)))))) {
8079 {
8080 USI opval = FLD (i_label16);
8081 sim_queue_pc_write (current_cpu, opval);
8082 written |= (1 << 3);
8083 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8084 }
8085}
8086}
8087
8088 abuf->written = written;
8089 return vpc;
8090#undef FLD
8091}
8092
8093/* blt: blt$pack $ICCi_2,$hint,$label16 */
8094
8095static SEM_PC
8096SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8097{
8098#define FLD(f) abuf->fields.sfmt_beq.f
8099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8100 int UNUSED written = 0;
8101 IADDR UNUSED pc = abuf->addr;
8102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8103
8104{
8105frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8106if (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)))) {
8107 {
8108 USI opval = FLD (i_label16);
8109 sim_queue_pc_write (current_cpu, opval);
8110 written |= (1 << 3);
8111 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8112 }
8113}
8114}
8115
8116 abuf->written = written;
8117 return vpc;
8118#undef FLD
8119}
8120
8121/* bge: bge$pack $ICCi_2,$hint,$label16 */
8122
8123static SEM_PC
8124SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8125{
8126#define FLD(f) abuf->fields.sfmt_beq.f
8127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8128 int UNUSED written = 0;
8129 IADDR UNUSED pc = abuf->addr;
8130 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8131
8132{
8133frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8134if (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))))) {
8135 {
8136 USI opval = FLD (i_label16);
8137 sim_queue_pc_write (current_cpu, opval);
8138 written |= (1 << 3);
8139 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8140 }
8141}
8142}
8143
8144 abuf->written = written;
8145 return vpc;
8146#undef FLD
8147}
8148
8149/* bls: bls$pack $ICCi_2,$hint,$label16 */
8150
8151static SEM_PC
8152SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8153{
8154#define FLD(f) abuf->fields.sfmt_beq.f
8155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8156 int UNUSED written = 0;
8157 IADDR UNUSED pc = abuf->addr;
8158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8159
8160{
8161frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8162if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8163 {
8164 USI opval = FLD (i_label16);
8165 sim_queue_pc_write (current_cpu, opval);
8166 written |= (1 << 3);
8167 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8168 }
8169}
8170}
8171
8172 abuf->written = written;
8173 return vpc;
8174#undef FLD
8175}
8176
8177/* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8178
8179static SEM_PC
8180SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8181{
8182#define FLD(f) abuf->fields.sfmt_beq.f
8183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8184 int UNUSED written = 0;
8185 IADDR UNUSED pc = abuf->addr;
8186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8187
8188{
8189frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8190if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
8191 {
8192 USI opval = FLD (i_label16);
8193 sim_queue_pc_write (current_cpu, opval);
8194 written |= (1 << 3);
8195 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8196 }
8197}
8198}
8199
8200 abuf->written = written;
8201 return vpc;
8202#undef FLD
8203}
8204
8205/* bc: bc$pack $ICCi_2,$hint,$label16 */
8206
8207static SEM_PC
8208SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8209{
8210#define FLD(f) abuf->fields.sfmt_beq.f
8211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8212 int UNUSED written = 0;
8213 IADDR UNUSED pc = abuf->addr;
8214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8215
8216{
8217frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8218if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8219 {
8220 USI opval = FLD (i_label16);
8221 sim_queue_pc_write (current_cpu, opval);
8222 written |= (1 << 3);
8223 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8224 }
8225}
8226}
8227
8228 abuf->written = written;
8229 return vpc;
8230#undef FLD
8231}
8232
8233/* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8234
8235static SEM_PC
8236SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8237{
8238#define FLD(f) abuf->fields.sfmt_beq.f
8239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8240 int UNUSED written = 0;
8241 IADDR UNUSED pc = abuf->addr;
8242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8243
8244{
8245frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8246if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8247 {
8248 USI opval = FLD (i_label16);
8249 sim_queue_pc_write (current_cpu, opval);
8250 written |= (1 << 3);
8251 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8252 }
8253}
8254}
8255
8256 abuf->written = written;
8257 return vpc;
8258#undef FLD
8259}
8260
8261/* bn: bn$pack $ICCi_2,$hint,$label16 */
8262
8263static SEM_PC
8264SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8265{
8266#define FLD(f) abuf->fields.sfmt_beq.f
8267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8268 int UNUSED written = 0;
8269 IADDR UNUSED pc = abuf->addr;
8270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8271
8272{
8273frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8274if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8275 {
8276 USI opval = FLD (i_label16);
8277 sim_queue_pc_write (current_cpu, opval);
8278 written |= (1 << 3);
8279 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8280 }
8281}
8282}
8283
8284 abuf->written = written;
8285 return vpc;
8286#undef FLD
8287}
8288
8289/* bp: bp$pack $ICCi_2,$hint,$label16 */
8290
8291static SEM_PC
8292SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8293{
8294#define FLD(f) abuf->fields.sfmt_beq.f
8295 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8296 int UNUSED written = 0;
8297 IADDR UNUSED pc = abuf->addr;
8298 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8299
8300{
8301frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8302if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8303 {
8304 USI opval = FLD (i_label16);
8305 sim_queue_pc_write (current_cpu, opval);
8306 written |= (1 << 3);
8307 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8308 }
8309}
8310}
8311
8312 abuf->written = written;
8313 return vpc;
8314#undef FLD
8315}
8316
8317/* bv: bv$pack $ICCi_2,$hint,$label16 */
8318
8319static SEM_PC
8320SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8321{
8322#define FLD(f) abuf->fields.sfmt_beq.f
8323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8324 int UNUSED written = 0;
8325 IADDR UNUSED pc = abuf->addr;
8326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8327
8328{
8329frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8330if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8331 {
8332 USI opval = FLD (i_label16);
8333 sim_queue_pc_write (current_cpu, opval);
8334 written |= (1 << 3);
8335 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8336 }
8337}
8338}
8339
8340 abuf->written = written;
8341 return vpc;
8342#undef FLD
8343}
8344
8345/* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8346
8347static SEM_PC
8348SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8349{
8350#define FLD(f) abuf->fields.sfmt_beq.f
8351 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8352 int UNUSED written = 0;
8353 IADDR UNUSED pc = abuf->addr;
8354 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8355
8356{
8357frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8358if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8359 {
8360 USI opval = FLD (i_label16);
8361 sim_queue_pc_write (current_cpu, opval);
8362 written |= (1 << 3);
8363 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8364 }
8365}
8366}
8367
8368 abuf->written = written;
8369 return vpc;
8370#undef FLD
8371}
8372
8373/* fbra: fbra$pack $hint_taken$label16 */
8374
8375static SEM_PC
8376SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8377{
8378#define FLD(f) abuf->fields.sfmt_fbne.f
8379 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8380 int UNUSED written = 0;
8381 IADDR UNUSED pc = abuf->addr;
8382 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8383
8384{
8385frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8386 {
8387 USI opval = FLD (i_label16);
8388 sim_queue_pc_write (current_cpu, opval);
8389 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8390 }
8391}
8392
8393 return vpc;
8394#undef FLD
8395}
8396
8397/* fbno: fbno$pack$hint_not_taken */
8398
8399static SEM_PC
8400SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8401{
8402#define FLD(f) abuf->fields.sfmt_fbne.f
8403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8404 int UNUSED written = 0;
8405 IADDR UNUSED pc = abuf->addr;
8406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8407
8408frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8409
8410 return vpc;
8411#undef FLD
8412}
8413
8414/* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8415
8416static SEM_PC
8417SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8418{
8419#define FLD(f) abuf->fields.sfmt_fbne.f
8420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8421 int UNUSED written = 0;
8422 IADDR UNUSED pc = abuf->addr;
8423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8424
8425{
8426frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8427if (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))))) {
8428 {
8429 USI opval = FLD (i_label16);
8430 sim_queue_pc_write (current_cpu, opval);
8431 written |= (1 << 3);
8432 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8433 }
8434}
8435}
8436
8437 abuf->written = written;
8438 return vpc;
8439#undef FLD
8440}
8441
8442/* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8443
8444static SEM_PC
8445SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8446{
8447#define FLD(f) abuf->fields.sfmt_fbne.f
8448 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8449 int UNUSED written = 0;
8450 IADDR UNUSED pc = abuf->addr;
8451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8452
8453{
8454frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8455if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8456 {
8457 USI opval = FLD (i_label16);
8458 sim_queue_pc_write (current_cpu, opval);
8459 written |= (1 << 3);
8460 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8461 }
8462}
8463}
8464
8465 abuf->written = written;
8466 return vpc;
8467#undef FLD
8468}
8469
8470/* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8471
8472static SEM_PC
8473SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8474{
8475#define FLD(f) abuf->fields.sfmt_fbne.f
8476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8477 int UNUSED written = 0;
8478 IADDR UNUSED pc = abuf->addr;
8479 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8480
8481{
8482frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8483if (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)))) {
8484 {
8485 USI opval = FLD (i_label16);
8486 sim_queue_pc_write (current_cpu, opval);
8487 written |= (1 << 3);
8488 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8489 }
8490}
8491}
8492
8493 abuf->written = written;
8494 return vpc;
8495#undef FLD
8496}
8497
8498/* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8499
8500static SEM_PC
8501SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8502{
8503#define FLD(f) abuf->fields.sfmt_fbne.f
8504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8505 int UNUSED written = 0;
8506 IADDR UNUSED pc = abuf->addr;
8507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8508
8509{
8510frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8511if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8512 {
8513 USI opval = FLD (i_label16);
8514 sim_queue_pc_write (current_cpu, opval);
8515 written |= (1 << 3);
8516 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8517 }
8518}
8519}
8520
8521 abuf->written = written;
8522 return vpc;
8523#undef FLD
8524}
8525
8526/* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8527
8528static SEM_PC
8529SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8530{
8531#define FLD(f) abuf->fields.sfmt_fbne.f
8532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8533 int UNUSED written = 0;
8534 IADDR UNUSED pc = abuf->addr;
8535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8536
8537{
8538frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8539if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8540 {
8541 USI opval = FLD (i_label16);
8542 sim_queue_pc_write (current_cpu, opval);
8543 written |= (1 << 3);
8544 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8545 }
8546}
8547}
8548
8549 abuf->written = written;
8550 return vpc;
8551#undef FLD
8552}
8553
8554/* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8555
8556static SEM_PC
8557SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8558{
8559#define FLD(f) abuf->fields.sfmt_fbne.f
8560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8561 int UNUSED written = 0;
8562 IADDR UNUSED pc = abuf->addr;
8563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8564
8565{
8566frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8567if (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)))) {
8568 {
8569 USI opval = FLD (i_label16);
8570 sim_queue_pc_write (current_cpu, opval);
8571 written |= (1 << 3);
8572 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8573 }
8574}
8575}
8576
8577 abuf->written = written;
8578 return vpc;
8579#undef FLD
8580}
8581
8582/* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8583
8584static SEM_PC
8585SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8586{
8587#define FLD(f) abuf->fields.sfmt_fbne.f
8588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8589 int UNUSED written = 0;
8590 IADDR UNUSED pc = abuf->addr;
8591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8592
8593{
8594frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8595if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8596 {
8597 USI opval = FLD (i_label16);
8598 sim_queue_pc_write (current_cpu, opval);
8599 written |= (1 << 3);
8600 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8601 }
8602}
8603}
8604
8605 abuf->written = written;
8606 return vpc;
8607#undef FLD
8608}
8609
8610/* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8611
8612static SEM_PC
8613SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8614{
8615#define FLD(f) abuf->fields.sfmt_fbne.f
8616 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8617 int UNUSED written = 0;
8618 IADDR UNUSED pc = abuf->addr;
8619 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8620
8621{
8622frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8623if (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))))) {
8624 {
8625 USI opval = FLD (i_label16);
8626 sim_queue_pc_write (current_cpu, opval);
8627 written |= (1 << 3);
8628 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8629 }
8630}
8631}
8632
8633 abuf->written = written;
8634 return vpc;
8635#undef FLD
8636}
8637
8638/* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8639
8640static SEM_PC
8641SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8642{
8643#define FLD(f) abuf->fields.sfmt_fbne.f
8644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8645 int UNUSED written = 0;
8646 IADDR UNUSED pc = abuf->addr;
8647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8648
8649{
8650frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8651if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8652 {
8653 USI opval = FLD (i_label16);
8654 sim_queue_pc_write (current_cpu, opval);
8655 written |= (1 << 3);
8656 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8657 }
8658}
8659}
8660
8661 abuf->written = written;
8662 return vpc;
8663#undef FLD
8664}
8665
8666/* fble: fble$pack $FCCi_2,$hint,$label16 */
8667
8668static SEM_PC
8669SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8670{
8671#define FLD(f) abuf->fields.sfmt_fbne.f
8672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8673 int UNUSED written = 0;
8674 IADDR UNUSED pc = abuf->addr;
8675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8676
8677{
8678frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8679if (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)))) {
8680 {
8681 USI opval = FLD (i_label16);
8682 sim_queue_pc_write (current_cpu, opval);
8683 written |= (1 << 3);
8684 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8685 }
8686}
8687}
8688
8689 abuf->written = written;
8690 return vpc;
8691#undef FLD
8692}
8693
8694/* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8695
8696static SEM_PC
8697SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8698{
8699#define FLD(f) abuf->fields.sfmt_fbne.f
8700 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8701 int UNUSED written = 0;
8702 IADDR UNUSED pc = abuf->addr;
8703 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8704
8705{
8706frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8707if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8708 {
8709 USI opval = FLD (i_label16);
8710 sim_queue_pc_write (current_cpu, opval);
8711 written |= (1 << 3);
8712 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8713 }
8714}
8715}
8716
8717 abuf->written = written;
8718 return vpc;
8719#undef FLD
8720}
8721
8722/* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8723
8724static SEM_PC
8725SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8726{
8727#define FLD(f) abuf->fields.sfmt_fbne.f
8728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8729 int UNUSED written = 0;
8730 IADDR UNUSED pc = abuf->addr;
8731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8732
8733{
8734frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8735if (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))))) {
8736 {
8737 USI opval = FLD (i_label16);
8738 sim_queue_pc_write (current_cpu, opval);
8739 written |= (1 << 3);
8740 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8741 }
8742}
8743}
8744
8745 abuf->written = written;
8746 return vpc;
8747#undef FLD
8748}
8749
8750/* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8751
8752static SEM_PC
8753SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8754{
8755#define FLD(f) abuf->fields.sfmt_fbne.f
8756 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8757 int UNUSED written = 0;
8758 IADDR UNUSED pc = abuf->addr;
8759 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8760
8761{
8762frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8763if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8764 {
8765 USI opval = FLD (i_label16);
8766 sim_queue_pc_write (current_cpu, opval);
8767 written |= (1 << 3);
8768 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8769 }
8770}
8771}
8772
8773 abuf->written = written;
8774 return vpc;
8775#undef FLD
8776}
8777
8778/* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8779
8780static SEM_PC
8781SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8782{
8783#define FLD(f) abuf->fields.sfmt_fbne.f
8784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8785 int UNUSED written = 0;
8786 IADDR UNUSED pc = abuf->addr;
8787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8788
8789{
8790frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8791if (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))))) {
8792 {
8793 USI opval = FLD (i_label16);
8794 sim_queue_pc_write (current_cpu, opval);
8795 written |= (1 << 3);
8796 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8797 }
8798}
8799}
8800
8801 abuf->written = written;
8802 return vpc;
8803#undef FLD
8804}
8805
8806/* bctrlr: bctrlr$pack $ccond,$hint */
8807
8808static SEM_PC
8809SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8810{
8811#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8813 int UNUSED written = 0;
8814 IADDR UNUSED pc = abuf->addr;
8815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8816
8817{
8818frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8819{
8820 SI tmp_tmp;
8821 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8822 {
8823 USI opval = tmp_tmp;
8824 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8825 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8826 }
8827if (EQSI (FLD (f_ccond), 0)) {
8828if (NESI (tmp_tmp, 0)) {
8829 {
8830 USI opval = GET_H_SPR (((UINT) 272));
8831 sim_queue_pc_write (current_cpu, opval);
8832 written |= (1 << 5);
8833 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8834 }
8835}
8836} else {
8837if (EQSI (tmp_tmp, 0)) {
8838 {
8839 USI opval = GET_H_SPR (((UINT) 272));
8840 sim_queue_pc_write (current_cpu, opval);
8841 written |= (1 << 5);
8842 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8843 }
8844}
8845}
8846}
8847}
8848
8849 abuf->written = written;
8850 return vpc;
8851#undef FLD
8852}
8853
8854/* bralr: bralr$pack$hint_taken */
8855
8856static SEM_PC
8857SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8858{
8859#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8861 int UNUSED written = 0;
8862 IADDR UNUSED pc = abuf->addr;
8863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8864
8865{
8866frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8867 {
8868 USI opval = GET_H_SPR (((UINT) 272));
8869 sim_queue_pc_write (current_cpu, opval);
8870 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8871 }
8872}
8873
8874 return vpc;
8875#undef FLD
8876}
8877
8878/* bnolr: bnolr$pack$hint_not_taken */
8879
8880static SEM_PC
8881SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8882{
8883#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8885 int UNUSED written = 0;
8886 IADDR UNUSED pc = abuf->addr;
8887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8888
8889frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8890
8891 return vpc;
8892#undef FLD
8893}
8894
8895/* beqlr: beqlr$pack $ICCi_2,$hint */
8896
8897static SEM_PC
8898SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8899{
8900#define FLD(f) abuf->fields.sfmt_bceqlr.f
8901 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8902 int UNUSED written = 0;
8903 IADDR UNUSED pc = abuf->addr;
8904 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8905
8906{
8907frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8908if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8909 {
8910 USI opval = GET_H_SPR (((UINT) 272));
8911 sim_queue_pc_write (current_cpu, opval);
8912 written |= (1 << 3);
8913 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8914 }
8915}
8916}
8917
8918 abuf->written = written;
8919 return vpc;
8920#undef FLD
8921}
8922
8923/* bnelr: bnelr$pack $ICCi_2,$hint */
8924
8925static SEM_PC
8926SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8927{
8928#define FLD(f) abuf->fields.sfmt_bceqlr.f
8929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8930 int UNUSED written = 0;
8931 IADDR UNUSED pc = abuf->addr;
8932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8933
8934{
8935frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8936if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8937 {
8938 USI opval = GET_H_SPR (((UINT) 272));
8939 sim_queue_pc_write (current_cpu, opval);
8940 written |= (1 << 3);
8941 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8942 }
8943}
8944}
8945
8946 abuf->written = written;
8947 return vpc;
8948#undef FLD
8949}
8950
8951/* blelr: blelr$pack $ICCi_2,$hint */
8952
8953static SEM_PC
8954SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8955{
8956#define FLD(f) abuf->fields.sfmt_bceqlr.f
8957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8958 int UNUSED written = 0;
8959 IADDR UNUSED pc = abuf->addr;
8960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8961
8962{
8963frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8964if (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))))) {
8965 {
8966 USI opval = GET_H_SPR (((UINT) 272));
8967 sim_queue_pc_write (current_cpu, opval);
8968 written |= (1 << 3);
8969 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8970 }
8971}
8972}
8973
8974 abuf->written = written;
8975 return vpc;
8976#undef FLD
8977}
8978
8979/* bgtlr: bgtlr$pack $ICCi_2,$hint */
8980
8981static SEM_PC
8982SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8983{
8984#define FLD(f) abuf->fields.sfmt_bceqlr.f
8985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8986 int UNUSED written = 0;
8987 IADDR UNUSED pc = abuf->addr;
8988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8989
8990{
8991frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8992if (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)))))) {
8993 {
8994 USI opval = GET_H_SPR (((UINT) 272));
8995 sim_queue_pc_write (current_cpu, opval);
8996 written |= (1 << 3);
8997 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8998 }
8999}
9000}
9001
9002 abuf->written = written;
9003 return vpc;
9004#undef FLD
9005}
9006
9007/* bltlr: bltlr$pack $ICCi_2,$hint */
9008
9009static SEM_PC
9010SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9011{
9012#define FLD(f) abuf->fields.sfmt_bceqlr.f
9013 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9014 int UNUSED written = 0;
9015 IADDR UNUSED pc = abuf->addr;
9016 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9017
9018{
9019frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9020if (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)))) {
9021 {
9022 USI opval = GET_H_SPR (((UINT) 272));
9023 sim_queue_pc_write (current_cpu, opval);
9024 written |= (1 << 3);
9025 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9026 }
9027}
9028}
9029
9030 abuf->written = written;
9031 return vpc;
9032#undef FLD
9033}
9034
9035/* bgelr: bgelr$pack $ICCi_2,$hint */
9036
9037static SEM_PC
9038SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9039{
9040#define FLD(f) abuf->fields.sfmt_bceqlr.f
9041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9042 int UNUSED written = 0;
9043 IADDR UNUSED pc = abuf->addr;
9044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9045
9046{
9047frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9048if (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))))) {
9049 {
9050 USI opval = GET_H_SPR (((UINT) 272));
9051 sim_queue_pc_write (current_cpu, opval);
9052 written |= (1 << 3);
9053 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9054 }
9055}
9056}
9057
9058 abuf->written = written;
9059 return vpc;
9060#undef FLD
9061}
9062
9063/* blslr: blslr$pack $ICCi_2,$hint */
9064
9065static SEM_PC
9066SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9067{
9068#define FLD(f) abuf->fields.sfmt_bceqlr.f
9069 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9070 int UNUSED written = 0;
9071 IADDR UNUSED pc = abuf->addr;
9072 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9073
9074{
9075frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9076if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9077 {
9078 USI opval = GET_H_SPR (((UINT) 272));
9079 sim_queue_pc_write (current_cpu, opval);
9080 written |= (1 << 3);
9081 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9082 }
9083}
9084}
9085
9086 abuf->written = written;
9087 return vpc;
9088#undef FLD
9089}
9090
9091/* bhilr: bhilr$pack $ICCi_2,$hint */
9092
9093static SEM_PC
9094SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9095{
9096#define FLD(f) abuf->fields.sfmt_bceqlr.f
9097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9098 int UNUSED written = 0;
9099 IADDR UNUSED pc = abuf->addr;
9100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9101
9102{
9103frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9104if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
9105 {
9106 USI opval = GET_H_SPR (((UINT) 272));
9107 sim_queue_pc_write (current_cpu, opval);
9108 written |= (1 << 3);
9109 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9110 }
9111}
9112}
9113
9114 abuf->written = written;
9115 return vpc;
9116#undef FLD
9117}
9118
9119/* bclr: bclr$pack $ICCi_2,$hint */
9120
9121static SEM_PC
9122SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9123{
9124#define FLD(f) abuf->fields.sfmt_bceqlr.f
9125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9126 int UNUSED written = 0;
9127 IADDR UNUSED pc = abuf->addr;
9128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9129
9130{
9131frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9132if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9133 {
9134 USI opval = GET_H_SPR (((UINT) 272));
9135 sim_queue_pc_write (current_cpu, opval);
9136 written |= (1 << 3);
9137 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9138 }
9139}
9140}
9141
9142 abuf->written = written;
9143 return vpc;
9144#undef FLD
9145}
9146
9147/* bnclr: bnclr$pack $ICCi_2,$hint */
9148
9149static SEM_PC
9150SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9151{
9152#define FLD(f) abuf->fields.sfmt_bceqlr.f
9153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9154 int UNUSED written = 0;
9155 IADDR UNUSED pc = abuf->addr;
9156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9157
9158{
9159frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9160if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9161 {
9162 USI opval = GET_H_SPR (((UINT) 272));
9163 sim_queue_pc_write (current_cpu, opval);
9164 written |= (1 << 3);
9165 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9166 }
9167}
9168}
9169
9170 abuf->written = written;
9171 return vpc;
9172#undef FLD
9173}
9174
9175/* bnlr: bnlr$pack $ICCi_2,$hint */
9176
9177static SEM_PC
9178SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9179{
9180#define FLD(f) abuf->fields.sfmt_bceqlr.f
9181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9182 int UNUSED written = 0;
9183 IADDR UNUSED pc = abuf->addr;
9184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9185
9186{
9187frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9188if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9189 {
9190 USI opval = GET_H_SPR (((UINT) 272));
9191 sim_queue_pc_write (current_cpu, opval);
9192 written |= (1 << 3);
9193 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9194 }
9195}
9196}
9197
9198 abuf->written = written;
9199 return vpc;
9200#undef FLD
9201}
9202
9203/* bplr: bplr$pack $ICCi_2,$hint */
9204
9205static SEM_PC
9206SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9207{
9208#define FLD(f) abuf->fields.sfmt_bceqlr.f
9209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9210 int UNUSED written = 0;
9211 IADDR UNUSED pc = abuf->addr;
9212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9213
9214{
9215frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9216if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9217 {
9218 USI opval = GET_H_SPR (((UINT) 272));
9219 sim_queue_pc_write (current_cpu, opval);
9220 written |= (1 << 3);
9221 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9222 }
9223}
9224}
9225
9226 abuf->written = written;
9227 return vpc;
9228#undef FLD
9229}
9230
9231/* bvlr: bvlr$pack $ICCi_2,$hint */
9232
9233static SEM_PC
9234SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9235{
9236#define FLD(f) abuf->fields.sfmt_bceqlr.f
9237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9238 int UNUSED written = 0;
9239 IADDR UNUSED pc = abuf->addr;
9240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9241
9242{
9243frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9244if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9245 {
9246 USI opval = GET_H_SPR (((UINT) 272));
9247 sim_queue_pc_write (current_cpu, opval);
9248 written |= (1 << 3);
9249 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9250 }
9251}
9252}
9253
9254 abuf->written = written;
9255 return vpc;
9256#undef FLD
9257}
9258
9259/* bnvlr: bnvlr$pack $ICCi_2,$hint */
9260
9261static SEM_PC
9262SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9263{
9264#define FLD(f) abuf->fields.sfmt_bceqlr.f
9265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9266 int UNUSED written = 0;
9267 IADDR UNUSED pc = abuf->addr;
9268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9269
9270{
9271frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9272if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9273 {
9274 USI opval = GET_H_SPR (((UINT) 272));
9275 sim_queue_pc_write (current_cpu, opval);
9276 written |= (1 << 3);
9277 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9278 }
9279}
9280}
9281
9282 abuf->written = written;
9283 return vpc;
9284#undef FLD
9285}
9286
9287/* fbralr: fbralr$pack$hint_taken */
9288
9289static SEM_PC
9290SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9291{
9292#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9294 int UNUSED written = 0;
9295 IADDR UNUSED pc = abuf->addr;
9296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9297
9298{
9299frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9300 {
9301 USI opval = GET_H_SPR (((UINT) 272));
9302 sim_queue_pc_write (current_cpu, opval);
9303 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9304 }
9305}
9306
9307 return vpc;
9308#undef FLD
9309}
9310
9311/* fbnolr: fbnolr$pack$hint_not_taken */
9312
9313static SEM_PC
9314SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9315{
9316#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9318 int UNUSED written = 0;
9319 IADDR UNUSED pc = abuf->addr;
9320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9321
9322frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9323
9324 return vpc;
9325#undef FLD
9326}
9327
9328/* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9329
9330static SEM_PC
9331SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9332{
9333#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9335 int UNUSED written = 0;
9336 IADDR UNUSED pc = abuf->addr;
9337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9338
9339{
9340frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9341if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9342 {
9343 USI opval = GET_H_SPR (((UINT) 272));
9344 sim_queue_pc_write (current_cpu, opval);
9345 written |= (1 << 3);
9346 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9347 }
9348}
9349}
9350
9351 abuf->written = written;
9352 return vpc;
9353#undef FLD
9354}
9355
9356/* fbnelr: fbnelr$pack $FCCi_2,$hint */
9357
9358static SEM_PC
9359SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9360{
9361#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9362 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9363 int UNUSED written = 0;
9364 IADDR UNUSED pc = abuf->addr;
9365 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9366
9367{
9368frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9369if (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))))) {
9370 {
9371 USI opval = GET_H_SPR (((UINT) 272));
9372 sim_queue_pc_write (current_cpu, opval);
9373 written |= (1 << 3);
9374 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9375 }
9376}
9377}
9378
9379 abuf->written = written;
9380 return vpc;
9381#undef FLD
9382}
9383
9384/* fblglr: fblglr$pack $FCCi_2,$hint */
9385
9386static SEM_PC
9387SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9388{
9389#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9391 int UNUSED written = 0;
9392 IADDR UNUSED pc = abuf->addr;
9393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9394
9395{
9396frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9397if (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)))) {
9398 {
9399 USI opval = GET_H_SPR (((UINT) 272));
9400 sim_queue_pc_write (current_cpu, opval);
9401 written |= (1 << 3);
9402 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9403 }
9404}
9405}
9406
9407 abuf->written = written;
9408 return vpc;
9409#undef FLD
9410}
9411
9412/* fbuelr: fbuelr$pack $FCCi_2,$hint */
9413
9414static SEM_PC
9415SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9416{
9417#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9419 int UNUSED written = 0;
9420 IADDR UNUSED pc = abuf->addr;
9421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9422
9423{
9424frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9425if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9426 {
9427 USI opval = GET_H_SPR (((UINT) 272));
9428 sim_queue_pc_write (current_cpu, opval);
9429 written |= (1 << 3);
9430 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9431 }
9432}
9433}
9434
9435 abuf->written = written;
9436 return vpc;
9437#undef FLD
9438}
9439
9440/* fbullr: fbullr$pack $FCCi_2,$hint */
9441
9442static SEM_PC
9443SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9444{
9445#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9447 int UNUSED written = 0;
9448 IADDR UNUSED pc = abuf->addr;
9449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9450
9451{
9452frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9453if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9454 {
9455 USI opval = GET_H_SPR (((UINT) 272));
9456 sim_queue_pc_write (current_cpu, opval);
9457 written |= (1 << 3);
9458 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9459 }
9460}
9461}
9462
9463 abuf->written = written;
9464 return vpc;
9465#undef FLD
9466}
9467
9468/* fbgelr: fbgelr$pack $FCCi_2,$hint */
9469
9470static SEM_PC
9471SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9472{
9473#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9475 int UNUSED written = 0;
9476 IADDR UNUSED pc = abuf->addr;
9477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9478
9479{
9480frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9481if (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)))) {
9482 {
9483 USI opval = GET_H_SPR (((UINT) 272));
9484 sim_queue_pc_write (current_cpu, opval);
9485 written |= (1 << 3);
9486 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9487 }
9488}
9489}
9490
9491 abuf->written = written;
9492 return vpc;
9493#undef FLD
9494}
9495
9496/* fbltlr: fbltlr$pack $FCCi_2,$hint */
9497
9498static SEM_PC
9499SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9500{
9501#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9503 int UNUSED written = 0;
9504 IADDR UNUSED pc = abuf->addr;
9505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9506
9507{
9508frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9509if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9510 {
9511 USI opval = GET_H_SPR (((UINT) 272));
9512 sim_queue_pc_write (current_cpu, opval);
9513 written |= (1 << 3);
9514 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9515 }
9516}
9517}
9518
9519 abuf->written = written;
9520 return vpc;
9521#undef FLD
9522}
9523
9524/* fbugelr: fbugelr$pack $FCCi_2,$hint */
9525
9526static SEM_PC
9527SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9528{
9529#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9531 int UNUSED written = 0;
9532 IADDR UNUSED pc = abuf->addr;
9533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9534
9535{
9536frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9537if (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))))) {
9538 {
9539 USI opval = GET_H_SPR (((UINT) 272));
9540 sim_queue_pc_write (current_cpu, opval);
9541 written |= (1 << 3);
9542 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9543 }
9544}
9545}
9546
9547 abuf->written = written;
9548 return vpc;
9549#undef FLD
9550}
9551
9552/* fbuglr: fbuglr$pack $FCCi_2,$hint */
9553
9554static SEM_PC
9555SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9556{
9557#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9559 int UNUSED written = 0;
9560 IADDR UNUSED pc = abuf->addr;
9561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9562
9563{
9564frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9565if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9566 {
9567 USI opval = GET_H_SPR (((UINT) 272));
9568 sim_queue_pc_write (current_cpu, opval);
9569 written |= (1 << 3);
9570 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9571 }
9572}
9573}
9574
9575 abuf->written = written;
9576 return vpc;
9577#undef FLD
9578}
9579
9580/* fblelr: fblelr$pack $FCCi_2,$hint */
9581
9582static SEM_PC
9583SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9584{
9585#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9586 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9587 int UNUSED written = 0;
9588 IADDR UNUSED pc = abuf->addr;
9589 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9590
9591{
9592frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9593if (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)))) {
9594 {
9595 USI opval = GET_H_SPR (((UINT) 272));
9596 sim_queue_pc_write (current_cpu, opval);
9597 written |= (1 << 3);
9598 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9599 }
9600}
9601}
9602
9603 abuf->written = written;
9604 return vpc;
9605#undef FLD
9606}
9607
9608/* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9609
9610static SEM_PC
9611SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9612{
9613#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9614 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9615 int UNUSED written = 0;
9616 IADDR UNUSED pc = abuf->addr;
9617 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9618
9619{
9620frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9621if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9622 {
9623 USI opval = GET_H_SPR (((UINT) 272));
9624 sim_queue_pc_write (current_cpu, opval);
9625 written |= (1 << 3);
9626 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9627 }
9628}
9629}
9630
9631 abuf->written = written;
9632 return vpc;
9633#undef FLD
9634}
9635
9636/* fbulelr: fbulelr$pack $FCCi_2,$hint */
9637
9638static SEM_PC
9639SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9640{
9641#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9642 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9643 int UNUSED written = 0;
9644 IADDR UNUSED pc = abuf->addr;
9645 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9646
9647{
9648frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9649if (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))))) {
9650 {
9651 USI opval = GET_H_SPR (((UINT) 272));
9652 sim_queue_pc_write (current_cpu, opval);
9653 written |= (1 << 3);
9654 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9655 }
9656}
9657}
9658
9659 abuf->written = written;
9660 return vpc;
9661#undef FLD
9662}
9663
9664/* fbulr: fbulr$pack $FCCi_2,$hint */
9665
9666static SEM_PC
9667SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9668{
9669#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9671 int UNUSED written = 0;
9672 IADDR UNUSED pc = abuf->addr;
9673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9674
9675{
9676frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9677if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9678 {
9679 USI opval = GET_H_SPR (((UINT) 272));
9680 sim_queue_pc_write (current_cpu, opval);
9681 written |= (1 << 3);
9682 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9683 }
9684}
9685}
9686
9687 abuf->written = written;
9688 return vpc;
9689#undef FLD
9690}
9691
9692/* fbolr: fbolr$pack $FCCi_2,$hint */
9693
9694static SEM_PC
9695SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9696{
9697#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9699 int UNUSED written = 0;
9700 IADDR UNUSED pc = abuf->addr;
9701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9702
9703{
9704frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9705if (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))))) {
9706 {
9707 USI opval = GET_H_SPR (((UINT) 272));
9708 sim_queue_pc_write (current_cpu, opval);
9709 written |= (1 << 3);
9710 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9711 }
9712}
9713}
9714
9715 abuf->written = written;
9716 return vpc;
9717#undef FLD
9718}
9719
9720/* bcralr: bcralr$pack $ccond$hint_taken */
9721
9722static SEM_PC
9723SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9724{
9725#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9727 int UNUSED written = 0;
9728 IADDR UNUSED pc = abuf->addr;
9729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9730
9731{
9732frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9733{
9734 SI tmp_tmp;
9735 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9736 {
9737 USI opval = tmp_tmp;
9738 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9739 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9740 }
9741if (EQSI (FLD (f_ccond), 0)) {
9742if (NESI (tmp_tmp, 0)) {
9743 {
9744 USI opval = GET_H_SPR (((UINT) 272));
9745 sim_queue_pc_write (current_cpu, opval);
9746 written |= (1 << 5);
9747 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9748 }
9749}
9750} else {
9751if (EQSI (tmp_tmp, 0)) {
9752 {
9753 USI opval = GET_H_SPR (((UINT) 272));
9754 sim_queue_pc_write (current_cpu, opval);
9755 written |= (1 << 5);
9756 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9757 }
9758}
9759}
9760}
9761}
9762
9763 abuf->written = written;
9764 return vpc;
9765#undef FLD
9766}
9767
9768/* bcnolr: bcnolr$pack$hint_not_taken */
9769
9770static SEM_PC
9771SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9772{
9773#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9775 int UNUSED written = 0;
9776 IADDR UNUSED pc = abuf->addr;
9777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9778
9779{
9780frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9781{
9782 SI tmp_tmp;
9783 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9784 {
9785 USI opval = tmp_tmp;
9786 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9787 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9788 }
9789((void) 0); /*nop*/
9790}
9791}
9792
9793 return vpc;
9794#undef FLD
9795}
9796
9797/* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9798
9799static SEM_PC
9800SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9801{
9802#define FLD(f) abuf->fields.sfmt_bceqlr.f
9803 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9804 int UNUSED written = 0;
9805 IADDR UNUSED pc = abuf->addr;
9806 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9807
9808{
9809frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9810{
9811 SI tmp_tmp;
9812 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9813 {
9814 USI opval = tmp_tmp;
9815 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9816 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9817 }
9818if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9819if (EQSI (FLD (f_ccond), 0)) {
9820if (NESI (tmp_tmp, 0)) {
9821 {
9822 USI opval = GET_H_SPR (((UINT) 272));
9823 sim_queue_pc_write (current_cpu, opval);
9824 written |= (1 << 6);
9825 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9826 }
9827}
9828} else {
9829if (EQSI (tmp_tmp, 0)) {
9830 {
9831 USI opval = GET_H_SPR (((UINT) 272));
9832 sim_queue_pc_write (current_cpu, opval);
9833 written |= (1 << 6);
9834 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9835 }
9836}
9837}
9838}
9839}
9840}
9841
9842 abuf->written = written;
9843 return vpc;
9844#undef FLD
9845}
9846
9847/* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9848
9849static SEM_PC
9850SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9851{
9852#define FLD(f) abuf->fields.sfmt_bceqlr.f
9853 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9854 int UNUSED written = 0;
9855 IADDR UNUSED pc = abuf->addr;
9856 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9857
9858{
9859frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9860{
9861 SI tmp_tmp;
9862 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9863 {
9864 USI opval = tmp_tmp;
9865 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9866 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9867 }
9868if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9869if (EQSI (FLD (f_ccond), 0)) {
9870if (NESI (tmp_tmp, 0)) {
9871 {
9872 USI opval = GET_H_SPR (((UINT) 272));
9873 sim_queue_pc_write (current_cpu, opval);
9874 written |= (1 << 6);
9875 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9876 }
9877}
9878} else {
9879if (EQSI (tmp_tmp, 0)) {
9880 {
9881 USI opval = GET_H_SPR (((UINT) 272));
9882 sim_queue_pc_write (current_cpu, opval);
9883 written |= (1 << 6);
9884 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9885 }
9886}
9887}
9888}
9889}
9890}
9891
9892 abuf->written = written;
9893 return vpc;
9894#undef FLD
9895}
9896
9897/* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9898
9899static SEM_PC
9900SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9901{
9902#define FLD(f) abuf->fields.sfmt_bceqlr.f
9903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9904 int UNUSED written = 0;
9905 IADDR UNUSED pc = abuf->addr;
9906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9907
9908{
9909frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9910{
9911 SI tmp_tmp;
9912 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9913 {
9914 USI opval = tmp_tmp;
9915 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9916 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9917 }
9918if (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))))) {
9919if (EQSI (FLD (f_ccond), 0)) {
9920if (NESI (tmp_tmp, 0)) {
9921 {
9922 USI opval = GET_H_SPR (((UINT) 272));
9923 sim_queue_pc_write (current_cpu, opval);
9924 written |= (1 << 6);
9925 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9926 }
9927}
9928} else {
9929if (EQSI (tmp_tmp, 0)) {
9930 {
9931 USI opval = GET_H_SPR (((UINT) 272));
9932 sim_queue_pc_write (current_cpu, opval);
9933 written |= (1 << 6);
9934 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9935 }
9936}
9937}
9938}
9939}
9940}
9941
9942 abuf->written = written;
9943 return vpc;
9944#undef FLD
9945}
9946
9947/* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
9948
9949static SEM_PC
9950SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9951{
9952#define FLD(f) abuf->fields.sfmt_bceqlr.f
9953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9954 int UNUSED written = 0;
9955 IADDR UNUSED pc = abuf->addr;
9956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9957
9958{
9959frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9960{
9961 SI tmp_tmp;
9962 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9963 {
9964 USI opval = tmp_tmp;
9965 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9966 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9967 }
9968if (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)))))) {
9969if (EQSI (FLD (f_ccond), 0)) {
9970if (NESI (tmp_tmp, 0)) {
9971 {
9972 USI opval = GET_H_SPR (((UINT) 272));
9973 sim_queue_pc_write (current_cpu, opval);
9974 written |= (1 << 6);
9975 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9976 }
9977}
9978} else {
9979if (EQSI (tmp_tmp, 0)) {
9980 {
9981 USI opval = GET_H_SPR (((UINT) 272));
9982 sim_queue_pc_write (current_cpu, opval);
9983 written |= (1 << 6);
9984 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9985 }
9986}
9987}
9988}
9989}
9990}
9991
9992 abuf->written = written;
9993 return vpc;
9994#undef FLD
9995}
9996
9997/* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
9998
9999static SEM_PC
10000SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10001{
10002#define FLD(f) abuf->fields.sfmt_bceqlr.f
10003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10004 int UNUSED written = 0;
10005 IADDR UNUSED pc = abuf->addr;
10006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10007
10008{
10009frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10010{
10011 SI tmp_tmp;
10012 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10013 {
10014 USI opval = tmp_tmp;
10015 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10016 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10017 }
10018if (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)))) {
10019if (EQSI (FLD (f_ccond), 0)) {
10020if (NESI (tmp_tmp, 0)) {
10021 {
10022 USI opval = GET_H_SPR (((UINT) 272));
10023 sim_queue_pc_write (current_cpu, opval);
10024 written |= (1 << 6);
10025 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10026 }
10027}
10028} else {
10029if (EQSI (tmp_tmp, 0)) {
10030 {
10031 USI opval = GET_H_SPR (((UINT) 272));
10032 sim_queue_pc_write (current_cpu, opval);
10033 written |= (1 << 6);
10034 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10035 }
10036}
10037}
10038}
10039}
10040}
10041
10042 abuf->written = written;
10043 return vpc;
10044#undef FLD
10045}
10046
10047/* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10048
10049static SEM_PC
10050SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10051{
10052#define FLD(f) abuf->fields.sfmt_bceqlr.f
10053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10054 int UNUSED written = 0;
10055 IADDR UNUSED pc = abuf->addr;
10056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10057
10058{
10059frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10060{
10061 SI tmp_tmp;
10062 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10063 {
10064 USI opval = tmp_tmp;
10065 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10066 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10067 }
10068if (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))))) {
10069if (EQSI (FLD (f_ccond), 0)) {
10070if (NESI (tmp_tmp, 0)) {
10071 {
10072 USI opval = GET_H_SPR (((UINT) 272));
10073 sim_queue_pc_write (current_cpu, opval);
10074 written |= (1 << 6);
10075 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10076 }
10077}
10078} else {
10079if (EQSI (tmp_tmp, 0)) {
10080 {
10081 USI opval = GET_H_SPR (((UINT) 272));
10082 sim_queue_pc_write (current_cpu, opval);
10083 written |= (1 << 6);
10084 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10085 }
10086}
10087}
10088}
10089}
10090}
10091
10092 abuf->written = written;
10093 return vpc;
10094#undef FLD
10095}
10096
10097/* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10098
10099static SEM_PC
10100SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10101{
10102#define FLD(f) abuf->fields.sfmt_bceqlr.f
10103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10104 int UNUSED written = 0;
10105 IADDR UNUSED pc = abuf->addr;
10106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10107
10108{
10109frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10110{
10111 SI tmp_tmp;
10112 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10113 {
10114 USI opval = tmp_tmp;
10115 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10116 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10117 }
10118if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10119if (EQSI (FLD (f_ccond), 0)) {
10120if (NESI (tmp_tmp, 0)) {
10121 {
10122 USI opval = GET_H_SPR (((UINT) 272));
10123 sim_queue_pc_write (current_cpu, opval);
10124 written |= (1 << 6);
10125 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10126 }
10127}
10128} else {
10129if (EQSI (tmp_tmp, 0)) {
10130 {
10131 USI opval = GET_H_SPR (((UINT) 272));
10132 sim_queue_pc_write (current_cpu, opval);
10133 written |= (1 << 6);
10134 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10135 }
10136}
10137}
10138}
10139}
10140}
10141
10142 abuf->written = written;
10143 return vpc;
10144#undef FLD
10145}
10146
10147/* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10148
10149static SEM_PC
10150SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10151{
10152#define FLD(f) abuf->fields.sfmt_bceqlr.f
10153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10154 int UNUSED written = 0;
10155 IADDR UNUSED pc = abuf->addr;
10156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10157
10158{
10159frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10160{
10161 SI tmp_tmp;
10162 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10163 {
10164 USI opval = tmp_tmp;
10165 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10166 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10167 }
10168if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
10169if (EQSI (FLD (f_ccond), 0)) {
10170if (NESI (tmp_tmp, 0)) {
10171 {
10172 USI opval = GET_H_SPR (((UINT) 272));
10173 sim_queue_pc_write (current_cpu, opval);
10174 written |= (1 << 6);
10175 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10176 }
10177}
10178} else {
10179if (EQSI (tmp_tmp, 0)) {
10180 {
10181 USI opval = GET_H_SPR (((UINT) 272));
10182 sim_queue_pc_write (current_cpu, opval);
10183 written |= (1 << 6);
10184 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10185 }
10186}
10187}
10188}
10189}
10190}
10191
10192 abuf->written = written;
10193 return vpc;
10194#undef FLD
10195}
10196
10197/* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10198
10199static SEM_PC
10200SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10201{
10202#define FLD(f) abuf->fields.sfmt_bceqlr.f
10203 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10204 int UNUSED written = 0;
10205 IADDR UNUSED pc = abuf->addr;
10206 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10207
10208{
10209frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10210{
10211 SI tmp_tmp;
10212 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10213 {
10214 USI opval = tmp_tmp;
10215 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10216 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10217 }
10218if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10219if (EQSI (FLD (f_ccond), 0)) {
10220if (NESI (tmp_tmp, 0)) {
10221 {
10222 USI opval = GET_H_SPR (((UINT) 272));
10223 sim_queue_pc_write (current_cpu, opval);
10224 written |= (1 << 6);
10225 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10226 }
10227}
10228} else {
10229if (EQSI (tmp_tmp, 0)) {
10230 {
10231 USI opval = GET_H_SPR (((UINT) 272));
10232 sim_queue_pc_write (current_cpu, opval);
10233 written |= (1 << 6);
10234 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10235 }
10236}
10237}
10238}
10239}
10240}
10241
10242 abuf->written = written;
10243 return vpc;
10244#undef FLD
10245}
10246
10247/* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10248
10249static SEM_PC
10250SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10251{
10252#define FLD(f) abuf->fields.sfmt_bceqlr.f
10253 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10254 int UNUSED written = 0;
10255 IADDR UNUSED pc = abuf->addr;
10256 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10257
10258{
10259frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10260{
10261 SI tmp_tmp;
10262 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10263 {
10264 USI opval = tmp_tmp;
10265 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10266 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10267 }
10268if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10269if (EQSI (FLD (f_ccond), 0)) {
10270if (NESI (tmp_tmp, 0)) {
10271 {
10272 USI opval = GET_H_SPR (((UINT) 272));
10273 sim_queue_pc_write (current_cpu, opval);
10274 written |= (1 << 6);
10275 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10276 }
10277}
10278} else {
10279if (EQSI (tmp_tmp, 0)) {
10280 {
10281 USI opval = GET_H_SPR (((UINT) 272));
10282 sim_queue_pc_write (current_cpu, opval);
10283 written |= (1 << 6);
10284 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10285 }
10286}
10287}
10288}
10289}
10290}
10291
10292 abuf->written = written;
10293 return vpc;
10294#undef FLD
10295}
10296
10297/* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10298
10299static SEM_PC
10300SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10301{
10302#define FLD(f) abuf->fields.sfmt_bceqlr.f
10303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10304 int UNUSED written = 0;
10305 IADDR UNUSED pc = abuf->addr;
10306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10307
10308{
10309frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10310{
10311 SI tmp_tmp;
10312 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10313 {
10314 USI opval = tmp_tmp;
10315 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10316 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10317 }
10318if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10319if (EQSI (FLD (f_ccond), 0)) {
10320if (NESI (tmp_tmp, 0)) {
10321 {
10322 USI opval = GET_H_SPR (((UINT) 272));
10323 sim_queue_pc_write (current_cpu, opval);
10324 written |= (1 << 6);
10325 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10326 }
10327}
10328} else {
10329if (EQSI (tmp_tmp, 0)) {
10330 {
10331 USI opval = GET_H_SPR (((UINT) 272));
10332 sim_queue_pc_write (current_cpu, opval);
10333 written |= (1 << 6);
10334 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10335 }
10336}
10337}
10338}
10339}
10340}
10341
10342 abuf->written = written;
10343 return vpc;
10344#undef FLD
10345}
10346
10347/* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10348
10349static SEM_PC
10350SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10351{
10352#define FLD(f) abuf->fields.sfmt_bceqlr.f
10353 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10354 int UNUSED written = 0;
10355 IADDR UNUSED pc = abuf->addr;
10356 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10357
10358{
10359frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10360{
10361 SI tmp_tmp;
10362 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10363 {
10364 USI opval = tmp_tmp;
10365 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10366 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10367 }
10368if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10369if (EQSI (FLD (f_ccond), 0)) {
10370if (NESI (tmp_tmp, 0)) {
10371 {
10372 USI opval = GET_H_SPR (((UINT) 272));
10373 sim_queue_pc_write (current_cpu, opval);
10374 written |= (1 << 6);
10375 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10376 }
10377}
10378} else {
10379if (EQSI (tmp_tmp, 0)) {
10380 {
10381 USI opval = GET_H_SPR (((UINT) 272));
10382 sim_queue_pc_write (current_cpu, opval);
10383 written |= (1 << 6);
10384 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10385 }
10386}
10387}
10388}
10389}
10390}
10391
10392 abuf->written = written;
10393 return vpc;
10394#undef FLD
10395}
10396
10397/* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10398
10399static SEM_PC
10400SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10401{
10402#define FLD(f) abuf->fields.sfmt_bceqlr.f
10403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10404 int UNUSED written = 0;
10405 IADDR UNUSED pc = abuf->addr;
10406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10407
10408{
10409frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10410{
10411 SI tmp_tmp;
10412 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10413 {
10414 USI opval = tmp_tmp;
10415 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10416 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10417 }
10418if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10419if (EQSI (FLD (f_ccond), 0)) {
10420if (NESI (tmp_tmp, 0)) {
10421 {
10422 USI opval = GET_H_SPR (((UINT) 272));
10423 sim_queue_pc_write (current_cpu, opval);
10424 written |= (1 << 6);
10425 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10426 }
10427}
10428} else {
10429if (EQSI (tmp_tmp, 0)) {
10430 {
10431 USI opval = GET_H_SPR (((UINT) 272));
10432 sim_queue_pc_write (current_cpu, opval);
10433 written |= (1 << 6);
10434 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10435 }
10436}
10437}
10438}
10439}
10440}
10441
10442 abuf->written = written;
10443 return vpc;
10444#undef FLD
10445}
10446
10447/* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10448
10449static SEM_PC
10450SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10451{
10452#define FLD(f) abuf->fields.sfmt_bceqlr.f
10453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10454 int UNUSED written = 0;
10455 IADDR UNUSED pc = abuf->addr;
10456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10457
10458{
10459frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10460{
10461 SI tmp_tmp;
10462 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10463 {
10464 USI opval = tmp_tmp;
10465 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10466 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10467 }
10468if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10469if (EQSI (FLD (f_ccond), 0)) {
10470if (NESI (tmp_tmp, 0)) {
10471 {
10472 USI opval = GET_H_SPR (((UINT) 272));
10473 sim_queue_pc_write (current_cpu, opval);
10474 written |= (1 << 6);
10475 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10476 }
10477}
10478} else {
10479if (EQSI (tmp_tmp, 0)) {
10480 {
10481 USI opval = GET_H_SPR (((UINT) 272));
10482 sim_queue_pc_write (current_cpu, opval);
10483 written |= (1 << 6);
10484 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10485 }
10486}
10487}
10488}
10489}
10490}
10491
10492 abuf->written = written;
10493 return vpc;
10494#undef FLD
10495}
10496
10497/* fcbralr: fcbralr$pack $ccond$hint_taken */
10498
10499static SEM_PC
10500SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10501{
10502#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10504 int UNUSED written = 0;
10505 IADDR UNUSED pc = abuf->addr;
10506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10507
10508{
10509frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10510{
10511 SI tmp_tmp;
10512 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10513 {
10514 USI opval = tmp_tmp;
10515 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10516 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10517 }
10518if (EQSI (FLD (f_ccond), 0)) {
10519if (NESI (tmp_tmp, 0)) {
10520 {
10521 USI opval = GET_H_SPR (((UINT) 272));
10522 sim_queue_pc_write (current_cpu, opval);
10523 written |= (1 << 5);
10524 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10525 }
10526}
10527} else {
10528if (EQSI (tmp_tmp, 0)) {
10529 {
10530 USI opval = GET_H_SPR (((UINT) 272));
10531 sim_queue_pc_write (current_cpu, opval);
10532 written |= (1 << 5);
10533 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10534 }
10535}
10536}
10537}
10538}
10539
10540 abuf->written = written;
10541 return vpc;
10542#undef FLD
10543}
10544
10545/* fcbnolr: fcbnolr$pack$hint_not_taken */
10546
10547static SEM_PC
10548SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10549{
10550#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10552 int UNUSED written = 0;
10553 IADDR UNUSED pc = abuf->addr;
10554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10555
10556{
10557frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10558{
10559 SI tmp_tmp;
10560 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10561 {
10562 USI opval = tmp_tmp;
10563 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10564 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10565 }
10566((void) 0); /*nop*/
10567}
10568}
10569
10570 return vpc;
10571#undef FLD
10572}
10573
10574/* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10575
10576static SEM_PC
10577SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10578{
10579#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10581 int UNUSED written = 0;
10582 IADDR UNUSED pc = abuf->addr;
10583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10584
10585{
10586frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10587{
10588 SI tmp_tmp;
10589 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10590 {
10591 USI opval = tmp_tmp;
10592 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10593 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10594 }
10595if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10596if (EQSI (FLD (f_ccond), 0)) {
10597if (NESI (tmp_tmp, 0)) {
10598 {
10599 USI opval = GET_H_SPR (((UINT) 272));
10600 sim_queue_pc_write (current_cpu, opval);
10601 written |= (1 << 6);
10602 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10603 }
10604}
10605} else {
10606if (EQSI (tmp_tmp, 0)) {
10607 {
10608 USI opval = GET_H_SPR (((UINT) 272));
10609 sim_queue_pc_write (current_cpu, opval);
10610 written |= (1 << 6);
10611 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10612 }
10613}
10614}
10615}
10616}
10617}
10618
10619 abuf->written = written;
10620 return vpc;
10621#undef FLD
10622}
10623
10624/* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10625
10626static SEM_PC
10627SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10628{
10629#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10630 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10631 int UNUSED written = 0;
10632 IADDR UNUSED pc = abuf->addr;
10633 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10634
10635{
10636frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10637{
10638 SI tmp_tmp;
10639 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10640 {
10641 USI opval = tmp_tmp;
10642 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10643 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10644 }
10645if (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))))) {
10646if (EQSI (FLD (f_ccond), 0)) {
10647if (NESI (tmp_tmp, 0)) {
10648 {
10649 USI opval = GET_H_SPR (((UINT) 272));
10650 sim_queue_pc_write (current_cpu, opval);
10651 written |= (1 << 6);
10652 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10653 }
10654}
10655} else {
10656if (EQSI (tmp_tmp, 0)) {
10657 {
10658 USI opval = GET_H_SPR (((UINT) 272));
10659 sim_queue_pc_write (current_cpu, opval);
10660 written |= (1 << 6);
10661 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10662 }
10663}
10664}
10665}
10666}
10667}
10668
10669 abuf->written = written;
10670 return vpc;
10671#undef FLD
10672}
10673
10674/* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10675
10676static SEM_PC
10677SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10678{
10679#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10681 int UNUSED written = 0;
10682 IADDR UNUSED pc = abuf->addr;
10683 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10684
10685{
10686frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10687{
10688 SI tmp_tmp;
10689 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10690 {
10691 USI opval = tmp_tmp;
10692 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10693 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10694 }
10695if (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)))) {
10696if (EQSI (FLD (f_ccond), 0)) {
10697if (NESI (tmp_tmp, 0)) {
10698 {
10699 USI opval = GET_H_SPR (((UINT) 272));
10700 sim_queue_pc_write (current_cpu, opval);
10701 written |= (1 << 6);
10702 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10703 }
10704}
10705} else {
10706if (EQSI (tmp_tmp, 0)) {
10707 {
10708 USI opval = GET_H_SPR (((UINT) 272));
10709 sim_queue_pc_write (current_cpu, opval);
10710 written |= (1 << 6);
10711 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10712 }
10713}
10714}
10715}
10716}
10717}
10718
10719 abuf->written = written;
10720 return vpc;
10721#undef FLD
10722}
10723
10724/* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10725
10726static SEM_PC
10727SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10728{
10729#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10731 int UNUSED written = 0;
10732 IADDR UNUSED pc = abuf->addr;
10733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10734
10735{
10736frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10737{
10738 SI tmp_tmp;
10739 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10740 {
10741 USI opval = tmp_tmp;
10742 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10743 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10744 }
10745if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10746if (EQSI (FLD (f_ccond), 0)) {
10747if (NESI (tmp_tmp, 0)) {
10748 {
10749 USI opval = GET_H_SPR (((UINT) 272));
10750 sim_queue_pc_write (current_cpu, opval);
10751 written |= (1 << 6);
10752 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10753 }
10754}
10755} else {
10756if (EQSI (tmp_tmp, 0)) {
10757 {
10758 USI opval = GET_H_SPR (((UINT) 272));
10759 sim_queue_pc_write (current_cpu, opval);
10760 written |= (1 << 6);
10761 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10762 }
10763}
10764}
10765}
10766}
10767}
10768
10769 abuf->written = written;
10770 return vpc;
10771#undef FLD
10772}
10773
10774/* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10775
10776static SEM_PC
10777SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10778{
10779#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10781 int UNUSED written = 0;
10782 IADDR UNUSED pc = abuf->addr;
10783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10784
10785{
10786frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10787{
10788 SI tmp_tmp;
10789 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10790 {
10791 USI opval = tmp_tmp;
10792 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10793 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10794 }
10795if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10796if (EQSI (FLD (f_ccond), 0)) {
10797if (NESI (tmp_tmp, 0)) {
10798 {
10799 USI opval = GET_H_SPR (((UINT) 272));
10800 sim_queue_pc_write (current_cpu, opval);
10801 written |= (1 << 6);
10802 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10803 }
10804}
10805} else {
10806if (EQSI (tmp_tmp, 0)) {
10807 {
10808 USI opval = GET_H_SPR (((UINT) 272));
10809 sim_queue_pc_write (current_cpu, opval);
10810 written |= (1 << 6);
10811 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10812 }
10813}
10814}
10815}
10816}
10817}
10818
10819 abuf->written = written;
10820 return vpc;
10821#undef FLD
10822}
10823
10824/* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10825
10826static SEM_PC
10827SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10828{
10829#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10830 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10831 int UNUSED written = 0;
10832 IADDR UNUSED pc = abuf->addr;
10833 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10834
10835{
10836frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10837{
10838 SI tmp_tmp;
10839 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10840 {
10841 USI opval = tmp_tmp;
10842 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10843 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10844 }
10845if (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)))) {
10846if (EQSI (FLD (f_ccond), 0)) {
10847if (NESI (tmp_tmp, 0)) {
10848 {
10849 USI opval = GET_H_SPR (((UINT) 272));
10850 sim_queue_pc_write (current_cpu, opval);
10851 written |= (1 << 6);
10852 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10853 }
10854}
10855} else {
10856if (EQSI (tmp_tmp, 0)) {
10857 {
10858 USI opval = GET_H_SPR (((UINT) 272));
10859 sim_queue_pc_write (current_cpu, opval);
10860 written |= (1 << 6);
10861 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10862 }
10863}
10864}
10865}
10866}
10867}
10868
10869 abuf->written = written;
10870 return vpc;
10871#undef FLD
10872}
10873
10874/* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10875
10876static SEM_PC
10877SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10878{
10879#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10881 int UNUSED written = 0;
10882 IADDR UNUSED pc = abuf->addr;
10883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10884
10885{
10886frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10887{
10888 SI tmp_tmp;
10889 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10890 {
10891 USI opval = tmp_tmp;
10892 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10893 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10894 }
10895if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10896if (EQSI (FLD (f_ccond), 0)) {
10897if (NESI (tmp_tmp, 0)) {
10898 {
10899 USI opval = GET_H_SPR (((UINT) 272));
10900 sim_queue_pc_write (current_cpu, opval);
10901 written |= (1 << 6);
10902 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10903 }
10904}
10905} else {
10906if (EQSI (tmp_tmp, 0)) {
10907 {
10908 USI opval = GET_H_SPR (((UINT) 272));
10909 sim_queue_pc_write (current_cpu, opval);
10910 written |= (1 << 6);
10911 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10912 }
10913}
10914}
10915}
10916}
10917}
10918
10919 abuf->written = written;
10920 return vpc;
10921#undef FLD
10922}
10923
10924/* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
10925
10926static SEM_PC
10927SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10928{
10929#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10931 int UNUSED written = 0;
10932 IADDR UNUSED pc = abuf->addr;
10933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10934
10935{
10936frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10937{
10938 SI tmp_tmp;
10939 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10940 {
10941 USI opval = tmp_tmp;
10942 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10943 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10944 }
10945if (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))))) {
10946if (EQSI (FLD (f_ccond), 0)) {
10947if (NESI (tmp_tmp, 0)) {
10948 {
10949 USI opval = GET_H_SPR (((UINT) 272));
10950 sim_queue_pc_write (current_cpu, opval);
10951 written |= (1 << 6);
10952 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10953 }
10954}
10955} else {
10956if (EQSI (tmp_tmp, 0)) {
10957 {
10958 USI opval = GET_H_SPR (((UINT) 272));
10959 sim_queue_pc_write (current_cpu, opval);
10960 written |= (1 << 6);
10961 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10962 }
10963}
10964}
10965}
10966}
10967}
10968
10969 abuf->written = written;
10970 return vpc;
10971#undef FLD
10972}
10973
10974/* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
10975
10976static SEM_PC
10977SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10978{
10979#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10981 int UNUSED written = 0;
10982 IADDR UNUSED pc = abuf->addr;
10983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10984
10985{
10986frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10987{
10988 SI tmp_tmp;
10989 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10990 {
10991 USI opval = tmp_tmp;
10992 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10993 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10994 }
10995if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10996if (EQSI (FLD (f_ccond), 0)) {
10997if (NESI (tmp_tmp, 0)) {
10998 {
10999 USI opval = GET_H_SPR (((UINT) 272));
11000 sim_queue_pc_write (current_cpu, opval);
11001 written |= (1 << 6);
11002 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11003 }
11004}
11005} else {
11006if (EQSI (tmp_tmp, 0)) {
11007 {
11008 USI opval = GET_H_SPR (((UINT) 272));
11009 sim_queue_pc_write (current_cpu, opval);
11010 written |= (1 << 6);
11011 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11012 }
11013}
11014}
11015}
11016}
11017}
11018
11019 abuf->written = written;
11020 return vpc;
11021#undef FLD
11022}
11023
11024/* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11025
11026static SEM_PC
11027SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11028{
11029#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11031 int UNUSED written = 0;
11032 IADDR UNUSED pc = abuf->addr;
11033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11034
11035{
11036frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11037{
11038 SI tmp_tmp;
11039 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11040 {
11041 USI opval = tmp_tmp;
11042 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11043 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11044 }
11045if (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)))) {
11046if (EQSI (FLD (f_ccond), 0)) {
11047if (NESI (tmp_tmp, 0)) {
11048 {
11049 USI opval = GET_H_SPR (((UINT) 272));
11050 sim_queue_pc_write (current_cpu, opval);
11051 written |= (1 << 6);
11052 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11053 }
11054}
11055} else {
11056if (EQSI (tmp_tmp, 0)) {
11057 {
11058 USI opval = GET_H_SPR (((UINT) 272));
11059 sim_queue_pc_write (current_cpu, opval);
11060 written |= (1 << 6);
11061 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11062 }
11063}
11064}
11065}
11066}
11067}
11068
11069 abuf->written = written;
11070 return vpc;
11071#undef FLD
11072}
11073
11074/* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11075
11076static SEM_PC
11077SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11078{
11079#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11080 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11081 int UNUSED written = 0;
11082 IADDR UNUSED pc = abuf->addr;
11083 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11084
11085{
11086frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11087{
11088 SI tmp_tmp;
11089 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11090 {
11091 USI opval = tmp_tmp;
11092 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11093 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11094 }
11095if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11096if (EQSI (FLD (f_ccond), 0)) {
11097if (NESI (tmp_tmp, 0)) {
11098 {
11099 USI opval = GET_H_SPR (((UINT) 272));
11100 sim_queue_pc_write (current_cpu, opval);
11101 written |= (1 << 6);
11102 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11103 }
11104}
11105} else {
11106if (EQSI (tmp_tmp, 0)) {
11107 {
11108 USI opval = GET_H_SPR (((UINT) 272));
11109 sim_queue_pc_write (current_cpu, opval);
11110 written |= (1 << 6);
11111 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11112 }
11113}
11114}
11115}
11116}
11117}
11118
11119 abuf->written = written;
11120 return vpc;
11121#undef FLD
11122}
11123
11124/* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11125
11126static SEM_PC
11127SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11128{
11129#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11130 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11131 int UNUSED written = 0;
11132 IADDR UNUSED pc = abuf->addr;
11133 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11134
11135{
11136frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11137{
11138 SI tmp_tmp;
11139 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11140 {
11141 USI opval = tmp_tmp;
11142 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11143 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11144 }
11145if (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))))) {
11146if (EQSI (FLD (f_ccond), 0)) {
11147if (NESI (tmp_tmp, 0)) {
11148 {
11149 USI opval = GET_H_SPR (((UINT) 272));
11150 sim_queue_pc_write (current_cpu, opval);
11151 written |= (1 << 6);
11152 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11153 }
11154}
11155} else {
11156if (EQSI (tmp_tmp, 0)) {
11157 {
11158 USI opval = GET_H_SPR (((UINT) 272));
11159 sim_queue_pc_write (current_cpu, opval);
11160 written |= (1 << 6);
11161 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11162 }
11163}
11164}
11165}
11166}
11167}
11168
11169 abuf->written = written;
11170 return vpc;
11171#undef FLD
11172}
11173
11174/* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11175
11176static SEM_PC
11177SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11178{
11179#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11181 int UNUSED written = 0;
11182 IADDR UNUSED pc = abuf->addr;
11183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11184
11185{
11186frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11187{
11188 SI tmp_tmp;
11189 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11190 {
11191 USI opval = tmp_tmp;
11192 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11193 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11194 }
11195if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11196if (EQSI (FLD (f_ccond), 0)) {
11197if (NESI (tmp_tmp, 0)) {
11198 {
11199 USI opval = GET_H_SPR (((UINT) 272));
11200 sim_queue_pc_write (current_cpu, opval);
11201 written |= (1 << 6);
11202 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11203 }
11204}
11205} else {
11206if (EQSI (tmp_tmp, 0)) {
11207 {
11208 USI opval = GET_H_SPR (((UINT) 272));
11209 sim_queue_pc_write (current_cpu, opval);
11210 written |= (1 << 6);
11211 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11212 }
11213}
11214}
11215}
11216}
11217}
11218
11219 abuf->written = written;
11220 return vpc;
11221#undef FLD
11222}
11223
11224/* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11225
11226static SEM_PC
11227SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11228{
11229#define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11231 int UNUSED written = 0;
11232 IADDR UNUSED pc = abuf->addr;
11233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11234
11235{
11236frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11237{
11238 SI tmp_tmp;
11239 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11240 {
11241 USI opval = tmp_tmp;
11242 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11243 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11244 }
11245if (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))))) {
11246if (EQSI (FLD (f_ccond), 0)) {
11247if (NESI (tmp_tmp, 0)) {
11248 {
11249 USI opval = GET_H_SPR (((UINT) 272));
11250 sim_queue_pc_write (current_cpu, opval);
11251 written |= (1 << 6);
11252 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11253 }
11254}
11255} else {
11256if (EQSI (tmp_tmp, 0)) {
11257 {
11258 USI opval = GET_H_SPR (((UINT) 272));
11259 sim_queue_pc_write (current_cpu, opval);
11260 written |= (1 << 6);
11261 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11262 }
11263}
11264}
11265}
11266}
11267}
11268
11269 abuf->written = written;
11270 return vpc;
11271#undef FLD
11272}
11273
11274/* jmpl: jmpl$pack @($GRi,$GRj) */
11275
11276static SEM_PC
11277SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11278{
11279#define FLD(f) abuf->fields.sfmt_cjmpl.f
11280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11281 int UNUSED written = 0;
11282 IADDR UNUSED pc = abuf->addr;
11283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11284
11285{
11286if (EQSI (FLD (f_LI), 1)) {
11287frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11288}
11289 {
11290 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11291 sim_queue_pc_write (current_cpu, opval);
11292 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11293 }
11294frvbf_model_branch (current_cpu, pc, 2);
11295}
11296
11297 return vpc;
11298#undef FLD
11299}
11300
79e59fe6 11301/* calll: calll$pack $callann($GRi,$GRj) */
b34f6357
DB
11302
11303static SEM_PC
11304SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11305{
11306#define FLD(f) abuf->fields.sfmt_cjmpl.f
11307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11308 int UNUSED written = 0;
11309 IADDR UNUSED pc = abuf->addr;
11310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11311
11312{
11313if (EQSI (FLD (f_LI), 1)) {
11314frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11315}
11316 {
11317 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11318 sim_queue_pc_write (current_cpu, opval);
11319 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11320 }
11321frvbf_model_branch (current_cpu, pc, 2);
11322}
11323
11324 return vpc;
11325#undef FLD
11326}
11327
11328/* jmpil: jmpil$pack @($GRi,$s12) */
11329
11330static SEM_PC
11331SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11332{
11333#define FLD(f) abuf->fields.sfmt_jmpil.f
11334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11335 int UNUSED written = 0;
11336 IADDR UNUSED pc = abuf->addr;
11337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11338
11339{
11340if (EQSI (FLD (f_LI), 1)) {
11341frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11342}
11343 {
11344 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11345 sim_queue_pc_write (current_cpu, opval);
11346 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11347 }
11348frvbf_model_branch (current_cpu, pc, 2);
11349}
11350
11351 return vpc;
11352#undef FLD
11353}
11354
11355/* callil: callil$pack @($GRi,$s12) */
11356
11357static SEM_PC
11358SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11359{
11360#define FLD(f) abuf->fields.sfmt_jmpil.f
11361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11362 int UNUSED written = 0;
11363 IADDR UNUSED pc = abuf->addr;
11364 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11365
11366{
11367if (EQSI (FLD (f_LI), 1)) {
11368frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11369}
11370 {
11371 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11372 sim_queue_pc_write (current_cpu, opval);
11373 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11374 }
11375frvbf_model_branch (current_cpu, pc, 2);
11376}
11377
11378 return vpc;
11379#undef FLD
11380}
11381
11382/* call: call$pack $label24 */
11383
11384static SEM_PC
11385SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11386{
11387#define FLD(f) abuf->fields.sfmt_call.f
11388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11389 int UNUSED written = 0;
11390 IADDR UNUSED pc = abuf->addr;
11391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11392
11393{
11394frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11395 {
11396 USI opval = FLD (i_label24);
11397 sim_queue_pc_write (current_cpu, opval);
11398 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11399 }
11400frvbf_model_branch (current_cpu, pc, 2);
11401}
11402
11403 return vpc;
11404#undef FLD
11405}
11406
11407/* rett: rett$pack $debug */
11408
11409static SEM_PC
11410SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11411{
11412#define FLD(f) abuf->fields.sfmt_rett.f
11413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11414 int UNUSED written = 0;
11415 IADDR UNUSED pc = abuf->addr;
11416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11417
11418{
11419 {
11420 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11421 sim_queue_pc_write (current_cpu, opval);
11422 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11423 }
11424frvbf_model_branch (current_cpu, pc, 2);
11425}
11426
11427 return vpc;
11428#undef FLD
11429}
11430
11431/* rei: rei$pack $eir */
11432
11433static SEM_PC
11434SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11435{
2310652a 11436#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
11437 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11438 int UNUSED written = 0;
11439 IADDR UNUSED pc = abuf->addr;
11440 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11441
11442((void) 0); /*nop*/
11443
11444 return vpc;
11445#undef FLD
11446}
11447
11448/* tra: tra$pack $GRi,$GRj */
11449
11450static SEM_PC
11451SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11452{
11453#define FLD(f) abuf->fields.sfmt_ftne.f
11454 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11455 int UNUSED written = 0;
11456 IADDR UNUSED pc = abuf->addr;
11457 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11458
11459{
11460; /*clobber*/
11461; /*clobber*/
11462; /*clobber*/
11463; /*clobber*/
11464if (NEBI (CPU (h_psr_esr), 0)) {
11465{
11466; /*clobber*/
11467; /*clobber*/
11468; /*clobber*/
11469; /*clobber*/
11470}
11471}
11472frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11473}
11474
11475 abuf->written = written;
11476 return vpc;
11477#undef FLD
11478}
11479
11480/* tno: tno$pack */
11481
11482static SEM_PC
11483SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11484{
2310652a 11485#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
11486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11487 int UNUSED written = 0;
11488 IADDR UNUSED pc = abuf->addr;
11489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11490
11491((void) 0); /*nop*/
11492
11493 return vpc;
11494#undef FLD
11495}
11496
11497/* teq: teq$pack $ICCi_2,$GRi,$GRj */
11498
11499static SEM_PC
11500SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11501{
11502#define FLD(f) abuf->fields.sfmt_teq.f
11503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11504 int UNUSED written = 0;
11505 IADDR UNUSED pc = abuf->addr;
11506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11507
11508if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11509{
11510; /*clobber*/
11511; /*clobber*/
11512; /*clobber*/
11513; /*clobber*/
11514if (NEBI (CPU (h_psr_esr), 0)) {
11515{
11516; /*clobber*/
11517; /*clobber*/
11518; /*clobber*/
11519; /*clobber*/
11520}
11521}
11522frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11523}
11524}
11525
11526 abuf->written = written;
11527 return vpc;
11528#undef FLD
11529}
11530
11531/* tne: tne$pack $ICCi_2,$GRi,$GRj */
11532
11533static SEM_PC
11534SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11535{
11536#define FLD(f) abuf->fields.sfmt_teq.f
11537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11538 int UNUSED written = 0;
11539 IADDR UNUSED pc = abuf->addr;
11540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11541
11542if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11543{
11544; /*clobber*/
11545; /*clobber*/
11546; /*clobber*/
11547; /*clobber*/
11548if (NEBI (CPU (h_psr_esr), 0)) {
11549{
11550; /*clobber*/
11551; /*clobber*/
11552; /*clobber*/
11553; /*clobber*/
11554}
11555}
11556frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11557}
11558}
11559
11560 abuf->written = written;
11561 return vpc;
11562#undef FLD
11563}
11564
11565/* tle: tle$pack $ICCi_2,$GRi,$GRj */
11566
11567static SEM_PC
11568SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11569{
11570#define FLD(f) abuf->fields.sfmt_teq.f
11571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11572 int UNUSED written = 0;
11573 IADDR UNUSED pc = abuf->addr;
11574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11575
11576if (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))))) {
11577{
11578; /*clobber*/
11579; /*clobber*/
11580; /*clobber*/
11581; /*clobber*/
11582if (NEBI (CPU (h_psr_esr), 0)) {
11583{
11584; /*clobber*/
11585; /*clobber*/
11586; /*clobber*/
11587; /*clobber*/
11588}
11589}
11590frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11591}
11592}
11593
11594 abuf->written = written;
11595 return vpc;
11596#undef FLD
11597}
11598
11599/* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11600
11601static SEM_PC
11602SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11603{
11604#define FLD(f) abuf->fields.sfmt_teq.f
11605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11606 int UNUSED written = 0;
11607 IADDR UNUSED pc = abuf->addr;
11608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11609
11610if (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)))))) {
11611{
11612; /*clobber*/
11613; /*clobber*/
11614; /*clobber*/
11615; /*clobber*/
11616if (NEBI (CPU (h_psr_esr), 0)) {
11617{
11618; /*clobber*/
11619; /*clobber*/
11620; /*clobber*/
11621; /*clobber*/
11622}
11623}
11624frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11625}
11626}
11627
11628 abuf->written = written;
11629 return vpc;
11630#undef FLD
11631}
11632
11633/* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11634
11635static SEM_PC
11636SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11637{
11638#define FLD(f) abuf->fields.sfmt_teq.f
11639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11640 int UNUSED written = 0;
11641 IADDR UNUSED pc = abuf->addr;
11642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11643
11644if (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)))) {
11645{
11646; /*clobber*/
11647; /*clobber*/
11648; /*clobber*/
11649; /*clobber*/
11650if (NEBI (CPU (h_psr_esr), 0)) {
11651{
11652; /*clobber*/
11653; /*clobber*/
11654; /*clobber*/
11655; /*clobber*/
11656}
11657}
11658frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11659}
11660}
11661
11662 abuf->written = written;
11663 return vpc;
11664#undef FLD
11665}
11666
11667/* tge: tge$pack $ICCi_2,$GRi,$GRj */
11668
11669static SEM_PC
11670SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11671{
11672#define FLD(f) abuf->fields.sfmt_teq.f
11673 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11674 int UNUSED written = 0;
11675 IADDR UNUSED pc = abuf->addr;
11676 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11677
11678if (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))))) {
11679{
11680; /*clobber*/
11681; /*clobber*/
11682; /*clobber*/
11683; /*clobber*/
11684if (NEBI (CPU (h_psr_esr), 0)) {
11685{
11686; /*clobber*/
11687; /*clobber*/
11688; /*clobber*/
11689; /*clobber*/
11690}
11691}
11692frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11693}
11694}
11695
11696 abuf->written = written;
11697 return vpc;
11698#undef FLD
11699}
11700
11701/* tls: tls$pack $ICCi_2,$GRi,$GRj */
11702
11703static SEM_PC
11704SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11705{
11706#define FLD(f) abuf->fields.sfmt_teq.f
11707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11708 int UNUSED written = 0;
11709 IADDR UNUSED pc = abuf->addr;
11710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11711
11712if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11713{
11714; /*clobber*/
11715; /*clobber*/
11716; /*clobber*/
11717; /*clobber*/
11718if (NEBI (CPU (h_psr_esr), 0)) {
11719{
11720; /*clobber*/
11721; /*clobber*/
11722; /*clobber*/
11723; /*clobber*/
11724}
11725}
11726frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11727}
11728}
11729
11730 abuf->written = written;
11731 return vpc;
11732#undef FLD
11733}
11734
11735/* thi: thi$pack $ICCi_2,$GRi,$GRj */
11736
11737static SEM_PC
11738SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11739{
11740#define FLD(f) abuf->fields.sfmt_teq.f
11741 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11742 int UNUSED written = 0;
11743 IADDR UNUSED pc = abuf->addr;
11744 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11745
11746if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
11747{
11748; /*clobber*/
11749; /*clobber*/
11750; /*clobber*/
11751; /*clobber*/
11752if (NEBI (CPU (h_psr_esr), 0)) {
11753{
11754; /*clobber*/
11755; /*clobber*/
11756; /*clobber*/
11757; /*clobber*/
11758}
11759}
11760frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11761}
11762}
11763
11764 abuf->written = written;
11765 return vpc;
11766#undef FLD
11767}
11768
11769/* tc: tc$pack $ICCi_2,$GRi,$GRj */
11770
11771static SEM_PC
11772SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11773{
11774#define FLD(f) abuf->fields.sfmt_teq.f
11775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11776 int UNUSED written = 0;
11777 IADDR UNUSED pc = abuf->addr;
11778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11779
11780if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11781{
11782; /*clobber*/
11783; /*clobber*/
11784; /*clobber*/
11785; /*clobber*/
11786if (NEBI (CPU (h_psr_esr), 0)) {
11787{
11788; /*clobber*/
11789; /*clobber*/
11790; /*clobber*/
11791; /*clobber*/
11792}
11793}
11794frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11795}
11796}
11797
11798 abuf->written = written;
11799 return vpc;
11800#undef FLD
11801}
11802
11803/* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11804
11805static SEM_PC
11806SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11807{
11808#define FLD(f) abuf->fields.sfmt_teq.f
11809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11810 int UNUSED written = 0;
11811 IADDR UNUSED pc = abuf->addr;
11812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11813
11814if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11815{
11816; /*clobber*/
11817; /*clobber*/
11818; /*clobber*/
11819; /*clobber*/
11820if (NEBI (CPU (h_psr_esr), 0)) {
11821{
11822; /*clobber*/
11823; /*clobber*/
11824; /*clobber*/
11825; /*clobber*/
11826}
11827}
11828frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11829}
11830}
11831
11832 abuf->written = written;
11833 return vpc;
11834#undef FLD
11835}
11836
11837/* tn: tn$pack $ICCi_2,$GRi,$GRj */
11838
11839static SEM_PC
11840SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11841{
11842#define FLD(f) abuf->fields.sfmt_teq.f
11843 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11844 int UNUSED written = 0;
11845 IADDR UNUSED pc = abuf->addr;
11846 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11847
11848if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11849{
11850; /*clobber*/
11851; /*clobber*/
11852; /*clobber*/
11853; /*clobber*/
11854if (NEBI (CPU (h_psr_esr), 0)) {
11855{
11856; /*clobber*/
11857; /*clobber*/
11858; /*clobber*/
11859; /*clobber*/
11860}
11861}
11862frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11863}
11864}
11865
11866 abuf->written = written;
11867 return vpc;
11868#undef FLD
11869}
11870
11871/* tp: tp$pack $ICCi_2,$GRi,$GRj */
11872
11873static SEM_PC
11874SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11875{
11876#define FLD(f) abuf->fields.sfmt_teq.f
11877 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11878 int UNUSED written = 0;
11879 IADDR UNUSED pc = abuf->addr;
11880 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11881
11882if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11883{
11884; /*clobber*/
11885; /*clobber*/
11886; /*clobber*/
11887; /*clobber*/
11888if (NEBI (CPU (h_psr_esr), 0)) {
11889{
11890; /*clobber*/
11891; /*clobber*/
11892; /*clobber*/
11893; /*clobber*/
11894}
11895}
11896frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11897}
11898}
11899
11900 abuf->written = written;
11901 return vpc;
11902#undef FLD
11903}
11904
11905/* tv: tv$pack $ICCi_2,$GRi,$GRj */
11906
11907static SEM_PC
11908SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11909{
11910#define FLD(f) abuf->fields.sfmt_teq.f
11911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11912 int UNUSED written = 0;
11913 IADDR UNUSED pc = abuf->addr;
11914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11915
11916if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
11917{
11918; /*clobber*/
11919; /*clobber*/
11920; /*clobber*/
11921; /*clobber*/
11922if (NEBI (CPU (h_psr_esr), 0)) {
11923{
11924; /*clobber*/
11925; /*clobber*/
11926; /*clobber*/
11927; /*clobber*/
11928}
11929}
11930frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11931}
11932}
11933
11934 abuf->written = written;
11935 return vpc;
11936#undef FLD
11937}
11938
11939/* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
11940
11941static SEM_PC
11942SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11943{
11944#define FLD(f) abuf->fields.sfmt_teq.f
11945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11946 int UNUSED written = 0;
11947 IADDR UNUSED pc = abuf->addr;
11948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11949
11950if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11951{
11952; /*clobber*/
11953; /*clobber*/
11954; /*clobber*/
11955; /*clobber*/
11956if (NEBI (CPU (h_psr_esr), 0)) {
11957{
11958; /*clobber*/
11959; /*clobber*/
11960; /*clobber*/
11961; /*clobber*/
11962}
11963}
11964frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11965}
11966}
11967
11968 abuf->written = written;
11969 return vpc;
11970#undef FLD
11971}
11972
11973/* ftra: ftra$pack $GRi,$GRj */
11974
11975static SEM_PC
11976SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11977{
11978#define FLD(f) abuf->fields.sfmt_ftne.f
11979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11980 int UNUSED written = 0;
11981 IADDR UNUSED pc = abuf->addr;
11982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11983
11984{
11985; /*clobber*/
11986; /*clobber*/
11987; /*clobber*/
11988; /*clobber*/
11989if (NEBI (CPU (h_psr_esr), 0)) {
11990{
11991; /*clobber*/
11992; /*clobber*/
11993; /*clobber*/
11994; /*clobber*/
11995}
11996}
11997frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11998}
11999
12000 abuf->written = written;
12001 return vpc;
12002#undef FLD
12003}
12004
12005/* ftno: ftno$pack */
12006
12007static SEM_PC
12008SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12009{
2310652a 12010#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
12011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12012 int UNUSED written = 0;
12013 IADDR UNUSED pc = abuf->addr;
12014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12015
12016((void) 0); /*nop*/
12017
12018 return vpc;
12019#undef FLD
12020}
12021
12022/* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12023
12024static SEM_PC
12025SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12026{
12027#define FLD(f) abuf->fields.sfmt_ftne.f
12028 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12029 int UNUSED written = 0;
12030 IADDR UNUSED pc = abuf->addr;
12031 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12032
12033if (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))))) {
12034{
12035; /*clobber*/
12036; /*clobber*/
12037; /*clobber*/
12038; /*clobber*/
12039if (NEBI (CPU (h_psr_esr), 0)) {
12040{
12041; /*clobber*/
12042; /*clobber*/
12043; /*clobber*/
12044; /*clobber*/
12045}
12046}
12047frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12048}
12049}
12050
12051 abuf->written = written;
12052 return vpc;
12053#undef FLD
12054}
12055
12056/* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12057
12058static SEM_PC
12059SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12060{
12061#define FLD(f) abuf->fields.sfmt_ftne.f
12062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12063 int UNUSED written = 0;
12064 IADDR UNUSED pc = abuf->addr;
12065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12066
12067if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12068{
12069; /*clobber*/
12070; /*clobber*/
12071; /*clobber*/
12072; /*clobber*/
12073if (NEBI (CPU (h_psr_esr), 0)) {
12074{
12075; /*clobber*/
12076; /*clobber*/
12077; /*clobber*/
12078; /*clobber*/
12079}
12080}
12081frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12082}
12083}
12084
12085 abuf->written = written;
12086 return vpc;
12087#undef FLD
12088}
12089
12090/* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12091
12092static SEM_PC
12093SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12094{
12095#define FLD(f) abuf->fields.sfmt_ftne.f
12096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12097 int UNUSED written = 0;
12098 IADDR UNUSED pc = abuf->addr;
12099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12100
12101if (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)))) {
12102{
12103; /*clobber*/
12104; /*clobber*/
12105; /*clobber*/
12106; /*clobber*/
12107if (NEBI (CPU (h_psr_esr), 0)) {
12108{
12109; /*clobber*/
12110; /*clobber*/
12111; /*clobber*/
12112; /*clobber*/
12113}
12114}
12115frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12116}
12117}
12118
12119 abuf->written = written;
12120 return vpc;
12121#undef FLD
12122}
12123
12124/* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12125
12126static SEM_PC
12127SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12128{
12129#define FLD(f) abuf->fields.sfmt_ftne.f
12130 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12131 int UNUSED written = 0;
12132 IADDR UNUSED pc = abuf->addr;
12133 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12134
12135if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12136{
12137; /*clobber*/
12138; /*clobber*/
12139; /*clobber*/
12140; /*clobber*/
12141if (NEBI (CPU (h_psr_esr), 0)) {
12142{
12143; /*clobber*/
12144; /*clobber*/
12145; /*clobber*/
12146; /*clobber*/
12147}
12148}
12149frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12150}
12151}
12152
12153 abuf->written = written;
12154 return vpc;
12155#undef FLD
12156}
12157
12158/* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12159
12160static SEM_PC
12161SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12162{
12163#define FLD(f) abuf->fields.sfmt_ftne.f
12164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12165 int UNUSED written = 0;
12166 IADDR UNUSED pc = abuf->addr;
12167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12168
12169if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12170{
12171; /*clobber*/
12172; /*clobber*/
12173; /*clobber*/
12174; /*clobber*/
12175if (NEBI (CPU (h_psr_esr), 0)) {
12176{
12177; /*clobber*/
12178; /*clobber*/
12179; /*clobber*/
12180; /*clobber*/
12181}
12182}
12183frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12184}
12185}
12186
12187 abuf->written = written;
12188 return vpc;
12189#undef FLD
12190}
12191
12192/* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12193
12194static SEM_PC
12195SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12196{
12197#define FLD(f) abuf->fields.sfmt_ftne.f
12198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12199 int UNUSED written = 0;
12200 IADDR UNUSED pc = abuf->addr;
12201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12202
12203if (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)))) {
12204{
12205; /*clobber*/
12206; /*clobber*/
12207; /*clobber*/
12208; /*clobber*/
12209if (NEBI (CPU (h_psr_esr), 0)) {
12210{
12211; /*clobber*/
12212; /*clobber*/
12213; /*clobber*/
12214; /*clobber*/
12215}
12216}
12217frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12218}
12219}
12220
12221 abuf->written = written;
12222 return vpc;
12223#undef FLD
12224}
12225
12226/* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12227
12228static SEM_PC
12229SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12230{
12231#define FLD(f) abuf->fields.sfmt_ftne.f
12232 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12233 int UNUSED written = 0;
12234 IADDR UNUSED pc = abuf->addr;
12235 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12236
12237if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12238{
12239; /*clobber*/
12240; /*clobber*/
12241; /*clobber*/
12242; /*clobber*/
12243if (NEBI (CPU (h_psr_esr), 0)) {
12244{
12245; /*clobber*/
12246; /*clobber*/
12247; /*clobber*/
12248; /*clobber*/
12249}
12250}
12251frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12252}
12253}
12254
12255 abuf->written = written;
12256 return vpc;
12257#undef FLD
12258}
12259
12260/* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12261
12262static SEM_PC
12263SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12264{
12265#define FLD(f) abuf->fields.sfmt_ftne.f
12266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12267 int UNUSED written = 0;
12268 IADDR UNUSED pc = abuf->addr;
12269 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12270
12271if (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))))) {
12272{
12273; /*clobber*/
12274; /*clobber*/
12275; /*clobber*/
12276; /*clobber*/
12277if (NEBI (CPU (h_psr_esr), 0)) {
12278{
12279; /*clobber*/
12280; /*clobber*/
12281; /*clobber*/
12282; /*clobber*/
12283}
12284}
12285frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12286}
12287}
12288
12289 abuf->written = written;
12290 return vpc;
12291#undef FLD
12292}
12293
12294/* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12295
12296static SEM_PC
12297SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12298{
12299#define FLD(f) abuf->fields.sfmt_ftne.f
12300 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12301 int UNUSED written = 0;
12302 IADDR UNUSED pc = abuf->addr;
12303 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12304
12305if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12306{
12307; /*clobber*/
12308; /*clobber*/
12309; /*clobber*/
12310; /*clobber*/
12311if (NEBI (CPU (h_psr_esr), 0)) {
12312{
12313; /*clobber*/
12314; /*clobber*/
12315; /*clobber*/
12316; /*clobber*/
12317}
12318}
12319frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12320}
12321}
12322
12323 abuf->written = written;
12324 return vpc;
12325#undef FLD
12326}
12327
12328/* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12329
12330static SEM_PC
12331SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12332{
12333#define FLD(f) abuf->fields.sfmt_ftne.f
12334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12335 int UNUSED written = 0;
12336 IADDR UNUSED pc = abuf->addr;
12337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12338
12339if (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)))) {
12340{
12341; /*clobber*/
12342; /*clobber*/
12343; /*clobber*/
12344; /*clobber*/
12345if (NEBI (CPU (h_psr_esr), 0)) {
12346{
12347; /*clobber*/
12348; /*clobber*/
12349; /*clobber*/
12350; /*clobber*/
12351}
12352}
12353frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12354}
12355}
12356
12357 abuf->written = written;
12358 return vpc;
12359#undef FLD
12360}
12361
12362/* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12363
12364static SEM_PC
12365SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12366{
12367#define FLD(f) abuf->fields.sfmt_ftne.f
12368 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12369 int UNUSED written = 0;
12370 IADDR UNUSED pc = abuf->addr;
12371 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12372
12373if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12374{
12375; /*clobber*/
12376; /*clobber*/
12377; /*clobber*/
12378; /*clobber*/
12379if (NEBI (CPU (h_psr_esr), 0)) {
12380{
12381; /*clobber*/
12382; /*clobber*/
12383; /*clobber*/
12384; /*clobber*/
12385}
12386}
12387frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12388}
12389}
12390
12391 abuf->written = written;
12392 return vpc;
12393#undef FLD
12394}
12395
12396/* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12397
12398static SEM_PC
12399SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12400{
12401#define FLD(f) abuf->fields.sfmt_ftne.f
12402 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12403 int UNUSED written = 0;
12404 IADDR UNUSED pc = abuf->addr;
12405 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12406
12407if (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))))) {
12408{
12409; /*clobber*/
12410; /*clobber*/
12411; /*clobber*/
12412; /*clobber*/
12413if (NEBI (CPU (h_psr_esr), 0)) {
12414{
12415; /*clobber*/
12416; /*clobber*/
12417; /*clobber*/
12418; /*clobber*/
12419}
12420}
12421frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12422}
12423}
12424
12425 abuf->written = written;
12426 return vpc;
12427#undef FLD
12428}
12429
12430/* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12431
12432static SEM_PC
12433SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12434{
12435#define FLD(f) abuf->fields.sfmt_ftne.f
12436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12437 int UNUSED written = 0;
12438 IADDR UNUSED pc = abuf->addr;
12439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12440
12441if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12442{
12443; /*clobber*/
12444; /*clobber*/
12445; /*clobber*/
12446; /*clobber*/
12447if (NEBI (CPU (h_psr_esr), 0)) {
12448{
12449; /*clobber*/
12450; /*clobber*/
12451; /*clobber*/
12452; /*clobber*/
12453}
12454}
12455frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12456}
12457}
12458
12459 abuf->written = written;
12460 return vpc;
12461#undef FLD
12462}
12463
12464/* fto: fto$pack $FCCi_2,$GRi,$GRj */
12465
12466static SEM_PC
12467SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12468{
12469#define FLD(f) abuf->fields.sfmt_ftne.f
12470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12471 int UNUSED written = 0;
12472 IADDR UNUSED pc = abuf->addr;
12473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12474
12475if (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))))) {
12476{
12477; /*clobber*/
12478; /*clobber*/
12479; /*clobber*/
12480; /*clobber*/
12481if (NEBI (CPU (h_psr_esr), 0)) {
12482{
12483; /*clobber*/
12484; /*clobber*/
12485; /*clobber*/
12486; /*clobber*/
12487}
12488}
12489frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12490}
12491}
12492
12493 abuf->written = written;
12494 return vpc;
12495#undef FLD
12496}
12497
12498/* tira: tira$pack $GRi,$s12 */
12499
12500static SEM_PC
12501SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12502{
12503#define FLD(f) abuf->fields.sfmt_ftine.f
12504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12505 int UNUSED written = 0;
12506 IADDR UNUSED pc = abuf->addr;
12507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12508
12509{
12510; /*clobber*/
12511; /*clobber*/
12512; /*clobber*/
12513; /*clobber*/
12514if (NEBI (CPU (h_psr_esr), 0)) {
12515{
12516; /*clobber*/
12517; /*clobber*/
12518; /*clobber*/
12519; /*clobber*/
12520}
12521}
12522frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12523}
12524
12525 abuf->written = written;
12526 return vpc;
12527#undef FLD
12528}
12529
12530/* tino: tino$pack */
12531
12532static SEM_PC
12533SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12534{
2310652a 12535#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
12536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12537 int UNUSED written = 0;
12538 IADDR UNUSED pc = abuf->addr;
12539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12540
12541((void) 0); /*nop*/
12542
12543 return vpc;
12544#undef FLD
12545}
12546
12547/* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12548
12549static SEM_PC
12550SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12551{
12552#define FLD(f) abuf->fields.sfmt_tieq.f
12553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12554 int UNUSED written = 0;
12555 IADDR UNUSED pc = abuf->addr;
12556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12557
12558if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12559{
12560; /*clobber*/
12561; /*clobber*/
12562; /*clobber*/
12563; /*clobber*/
12564if (NEBI (CPU (h_psr_esr), 0)) {
12565{
12566; /*clobber*/
12567; /*clobber*/
12568; /*clobber*/
12569; /*clobber*/
12570}
12571}
12572frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12573}
12574}
12575
12576 abuf->written = written;
12577 return vpc;
12578#undef FLD
12579}
12580
12581/* tine: tine$pack $ICCi_2,$GRi,$s12 */
12582
12583static SEM_PC
12584SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12585{
12586#define FLD(f) abuf->fields.sfmt_tieq.f
12587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12588 int UNUSED written = 0;
12589 IADDR UNUSED pc = abuf->addr;
12590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12591
12592if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12593{
12594; /*clobber*/
12595; /*clobber*/
12596; /*clobber*/
12597; /*clobber*/
12598if (NEBI (CPU (h_psr_esr), 0)) {
12599{
12600; /*clobber*/
12601; /*clobber*/
12602; /*clobber*/
12603; /*clobber*/
12604}
12605}
12606frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12607}
12608}
12609
12610 abuf->written = written;
12611 return vpc;
12612#undef FLD
12613}
12614
12615/* tile: tile$pack $ICCi_2,$GRi,$s12 */
12616
12617static SEM_PC
12618SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12619{
12620#define FLD(f) abuf->fields.sfmt_tieq.f
12621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12622 int UNUSED written = 0;
12623 IADDR UNUSED pc = abuf->addr;
12624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12625
12626if (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))))) {
12627{
12628; /*clobber*/
12629; /*clobber*/
12630; /*clobber*/
12631; /*clobber*/
12632if (NEBI (CPU (h_psr_esr), 0)) {
12633{
12634; /*clobber*/
12635; /*clobber*/
12636; /*clobber*/
12637; /*clobber*/
12638}
12639}
12640frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12641}
12642}
12643
12644 abuf->written = written;
12645 return vpc;
12646#undef FLD
12647}
12648
12649/* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12650
12651static SEM_PC
12652SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12653{
12654#define FLD(f) abuf->fields.sfmt_tieq.f
12655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12656 int UNUSED written = 0;
12657 IADDR UNUSED pc = abuf->addr;
12658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12659
12660if (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)))))) {
12661{
12662; /*clobber*/
12663; /*clobber*/
12664; /*clobber*/
12665; /*clobber*/
12666if (NEBI (CPU (h_psr_esr), 0)) {
12667{
12668; /*clobber*/
12669; /*clobber*/
12670; /*clobber*/
12671; /*clobber*/
12672}
12673}
12674frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12675}
12676}
12677
12678 abuf->written = written;
12679 return vpc;
12680#undef FLD
12681}
12682
12683/* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12684
12685static SEM_PC
12686SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12687{
12688#define FLD(f) abuf->fields.sfmt_tieq.f
12689 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12690 int UNUSED written = 0;
12691 IADDR UNUSED pc = abuf->addr;
12692 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12693
12694if (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)))) {
12695{
12696; /*clobber*/
12697; /*clobber*/
12698; /*clobber*/
12699; /*clobber*/
12700if (NEBI (CPU (h_psr_esr), 0)) {
12701{
12702; /*clobber*/
12703; /*clobber*/
12704; /*clobber*/
12705; /*clobber*/
12706}
12707}
12708frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12709}
12710}
12711
12712 abuf->written = written;
12713 return vpc;
12714#undef FLD
12715}
12716
12717/* tige: tige$pack $ICCi_2,$GRi,$s12 */
12718
12719static SEM_PC
12720SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12721{
12722#define FLD(f) abuf->fields.sfmt_tieq.f
12723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12724 int UNUSED written = 0;
12725 IADDR UNUSED pc = abuf->addr;
12726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12727
12728if (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))))) {
12729{
12730; /*clobber*/
12731; /*clobber*/
12732; /*clobber*/
12733; /*clobber*/
12734if (NEBI (CPU (h_psr_esr), 0)) {
12735{
12736; /*clobber*/
12737; /*clobber*/
12738; /*clobber*/
12739; /*clobber*/
12740}
12741}
12742frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12743}
12744}
12745
12746 abuf->written = written;
12747 return vpc;
12748#undef FLD
12749}
12750
12751/* tils: tils$pack $ICCi_2,$GRi,$s12 */
12752
12753static SEM_PC
12754SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12755{
12756#define FLD(f) abuf->fields.sfmt_tieq.f
12757 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12758 int UNUSED written = 0;
12759 IADDR UNUSED pc = abuf->addr;
12760 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12761
12762if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12763{
12764; /*clobber*/
12765; /*clobber*/
12766; /*clobber*/
12767; /*clobber*/
12768if (NEBI (CPU (h_psr_esr), 0)) {
12769{
12770; /*clobber*/
12771; /*clobber*/
12772; /*clobber*/
12773; /*clobber*/
12774}
12775}
12776frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12777}
12778}
12779
12780 abuf->written = written;
12781 return vpc;
12782#undef FLD
12783}
12784
12785/* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12786
12787static SEM_PC
12788SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12789{
12790#define FLD(f) abuf->fields.sfmt_tieq.f
12791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12792 int UNUSED written = 0;
12793 IADDR UNUSED pc = abuf->addr;
12794 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12795
12796if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
12797{
12798; /*clobber*/
12799; /*clobber*/
12800; /*clobber*/
12801; /*clobber*/
12802if (NEBI (CPU (h_psr_esr), 0)) {
12803{
12804; /*clobber*/
12805; /*clobber*/
12806; /*clobber*/
12807; /*clobber*/
12808}
12809}
12810frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12811}
12812}
12813
12814 abuf->written = written;
12815 return vpc;
12816#undef FLD
12817}
12818
12819/* tic: tic$pack $ICCi_2,$GRi,$s12 */
12820
12821static SEM_PC
12822SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12823{
12824#define FLD(f) abuf->fields.sfmt_tieq.f
12825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12826 int UNUSED written = 0;
12827 IADDR UNUSED pc = abuf->addr;
12828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12829
12830if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12831{
12832; /*clobber*/
12833; /*clobber*/
12834; /*clobber*/
12835; /*clobber*/
12836if (NEBI (CPU (h_psr_esr), 0)) {
12837{
12838; /*clobber*/
12839; /*clobber*/
12840; /*clobber*/
12841; /*clobber*/
12842}
12843}
12844frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12845}
12846}
12847
12848 abuf->written = written;
12849 return vpc;
12850#undef FLD
12851}
12852
12853/* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12854
12855static SEM_PC
12856SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12857{
12858#define FLD(f) abuf->fields.sfmt_tieq.f
12859 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12860 int UNUSED written = 0;
12861 IADDR UNUSED pc = abuf->addr;
12862 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12863
12864if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12865{
12866; /*clobber*/
12867; /*clobber*/
12868; /*clobber*/
12869; /*clobber*/
12870if (NEBI (CPU (h_psr_esr), 0)) {
12871{
12872; /*clobber*/
12873; /*clobber*/
12874; /*clobber*/
12875; /*clobber*/
12876}
12877}
12878frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12879}
12880}
12881
12882 abuf->written = written;
12883 return vpc;
12884#undef FLD
12885}
12886
12887/* tin: tin$pack $ICCi_2,$GRi,$s12 */
12888
12889static SEM_PC
12890SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12891{
12892#define FLD(f) abuf->fields.sfmt_tieq.f
12893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12894 int UNUSED written = 0;
12895 IADDR UNUSED pc = abuf->addr;
12896 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12897
12898if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12899{
12900; /*clobber*/
12901; /*clobber*/
12902; /*clobber*/
12903; /*clobber*/
12904if (NEBI (CPU (h_psr_esr), 0)) {
12905{
12906; /*clobber*/
12907; /*clobber*/
12908; /*clobber*/
12909; /*clobber*/
12910}
12911}
12912frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12913}
12914}
12915
12916 abuf->written = written;
12917 return vpc;
12918#undef FLD
12919}
12920
12921/* tip: tip$pack $ICCi_2,$GRi,$s12 */
12922
12923static SEM_PC
12924SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12925{
12926#define FLD(f) abuf->fields.sfmt_tieq.f
12927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12928 int UNUSED written = 0;
12929 IADDR UNUSED pc = abuf->addr;
12930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12931
12932if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12933{
12934; /*clobber*/
12935; /*clobber*/
12936; /*clobber*/
12937; /*clobber*/
12938if (NEBI (CPU (h_psr_esr), 0)) {
12939{
12940; /*clobber*/
12941; /*clobber*/
12942; /*clobber*/
12943; /*clobber*/
12944}
12945}
12946frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12947}
12948}
12949
12950 abuf->written = written;
12951 return vpc;
12952#undef FLD
12953}
12954
12955/* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
12956
12957static SEM_PC
12958SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12959{
12960#define FLD(f) abuf->fields.sfmt_tieq.f
12961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12962 int UNUSED written = 0;
12963 IADDR UNUSED pc = abuf->addr;
12964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12965
12966if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12967{
12968; /*clobber*/
12969; /*clobber*/
12970; /*clobber*/
12971; /*clobber*/
12972if (NEBI (CPU (h_psr_esr), 0)) {
12973{
12974; /*clobber*/
12975; /*clobber*/
12976; /*clobber*/
12977; /*clobber*/
12978}
12979}
12980frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12981}
12982}
12983
12984 abuf->written = written;
12985 return vpc;
12986#undef FLD
12987}
12988
12989/* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
12990
12991static SEM_PC
12992SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12993{
12994#define FLD(f) abuf->fields.sfmt_tieq.f
12995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12996 int UNUSED written = 0;
12997 IADDR UNUSED pc = abuf->addr;
12998 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12999
13000if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13001{
13002; /*clobber*/
13003; /*clobber*/
13004; /*clobber*/
13005; /*clobber*/
13006if (NEBI (CPU (h_psr_esr), 0)) {
13007{
13008; /*clobber*/
13009; /*clobber*/
13010; /*clobber*/
13011; /*clobber*/
13012}
13013}
13014frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13015}
13016}
13017
13018 abuf->written = written;
13019 return vpc;
13020#undef FLD
13021}
13022
13023/* ftira: ftira$pack $GRi,$s12 */
13024
13025static SEM_PC
13026SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13027{
13028#define FLD(f) abuf->fields.sfmt_ftine.f
13029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13030 int UNUSED written = 0;
13031 IADDR UNUSED pc = abuf->addr;
13032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13033
13034{
13035; /*clobber*/
13036; /*clobber*/
13037; /*clobber*/
13038; /*clobber*/
13039if (NEBI (CPU (h_psr_esr), 0)) {
13040{
13041; /*clobber*/
13042; /*clobber*/
13043; /*clobber*/
13044; /*clobber*/
13045}
13046}
13047frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13048}
13049
13050 abuf->written = written;
13051 return vpc;
13052#undef FLD
13053}
13054
13055/* ftino: ftino$pack */
13056
13057static SEM_PC
13058SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13059{
2310652a 13060#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
13061 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13062 int UNUSED written = 0;
13063 IADDR UNUSED pc = abuf->addr;
13064 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13065
13066((void) 0); /*nop*/
13067
13068 return vpc;
13069#undef FLD
13070}
13071
13072/* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13073
13074static SEM_PC
13075SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13076{
13077#define FLD(f) abuf->fields.sfmt_ftine.f
13078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13079 int UNUSED written = 0;
13080 IADDR UNUSED pc = abuf->addr;
13081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13082
13083if (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))))) {
13084{
13085; /*clobber*/
13086; /*clobber*/
13087; /*clobber*/
13088; /*clobber*/
13089if (NEBI (CPU (h_psr_esr), 0)) {
13090{
13091; /*clobber*/
13092; /*clobber*/
13093; /*clobber*/
13094; /*clobber*/
13095}
13096}
13097frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13098}
13099}
13100
13101 abuf->written = written;
13102 return vpc;
13103#undef FLD
13104}
13105
13106/* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13107
13108static SEM_PC
13109SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13110{
13111#define FLD(f) abuf->fields.sfmt_ftine.f
13112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13113 int UNUSED written = 0;
13114 IADDR UNUSED pc = abuf->addr;
13115 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13116
13117if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13118{
13119; /*clobber*/
13120; /*clobber*/
13121; /*clobber*/
13122; /*clobber*/
13123if (NEBI (CPU (h_psr_esr), 0)) {
13124{
13125; /*clobber*/
13126; /*clobber*/
13127; /*clobber*/
13128; /*clobber*/
13129}
13130}
13131frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13132}
13133}
13134
13135 abuf->written = written;
13136 return vpc;
13137#undef FLD
13138}
13139
13140/* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13141
13142static SEM_PC
13143SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13144{
13145#define FLD(f) abuf->fields.sfmt_ftine.f
13146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13147 int UNUSED written = 0;
13148 IADDR UNUSED pc = abuf->addr;
13149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13150
13151if (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)))) {
13152{
13153; /*clobber*/
13154; /*clobber*/
13155; /*clobber*/
13156; /*clobber*/
13157if (NEBI (CPU (h_psr_esr), 0)) {
13158{
13159; /*clobber*/
13160; /*clobber*/
13161; /*clobber*/
13162; /*clobber*/
13163}
13164}
13165frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13166}
13167}
13168
13169 abuf->written = written;
13170 return vpc;
13171#undef FLD
13172}
13173
13174/* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13175
13176static SEM_PC
13177SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13178{
13179#define FLD(f) abuf->fields.sfmt_ftine.f
13180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13181 int UNUSED written = 0;
13182 IADDR UNUSED pc = abuf->addr;
13183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13184
13185if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13186{
13187; /*clobber*/
13188; /*clobber*/
13189; /*clobber*/
13190; /*clobber*/
13191if (NEBI (CPU (h_psr_esr), 0)) {
13192{
13193; /*clobber*/
13194; /*clobber*/
13195; /*clobber*/
13196; /*clobber*/
13197}
13198}
13199frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13200}
13201}
13202
13203 abuf->written = written;
13204 return vpc;
13205#undef FLD
13206}
13207
13208/* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13209
13210static SEM_PC
13211SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13212{
13213#define FLD(f) abuf->fields.sfmt_ftine.f
13214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13215 int UNUSED written = 0;
13216 IADDR UNUSED pc = abuf->addr;
13217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13218
13219if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13220{
13221; /*clobber*/
13222; /*clobber*/
13223; /*clobber*/
13224; /*clobber*/
13225if (NEBI (CPU (h_psr_esr), 0)) {
13226{
13227; /*clobber*/
13228; /*clobber*/
13229; /*clobber*/
13230; /*clobber*/
13231}
13232}
13233frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13234}
13235}
13236
13237 abuf->written = written;
13238 return vpc;
13239#undef FLD
13240}
13241
13242/* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13243
13244static SEM_PC
13245SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13246{
13247#define FLD(f) abuf->fields.sfmt_ftine.f
13248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13249 int UNUSED written = 0;
13250 IADDR UNUSED pc = abuf->addr;
13251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13252
13253if (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)))) {
13254{
13255; /*clobber*/
13256; /*clobber*/
13257; /*clobber*/
13258; /*clobber*/
13259if (NEBI (CPU (h_psr_esr), 0)) {
13260{
13261; /*clobber*/
13262; /*clobber*/
13263; /*clobber*/
13264; /*clobber*/
13265}
13266}
13267frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13268}
13269}
13270
13271 abuf->written = written;
13272 return vpc;
13273#undef FLD
13274}
13275
13276/* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13277
13278static SEM_PC
13279SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13280{
13281#define FLD(f) abuf->fields.sfmt_ftine.f
13282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13283 int UNUSED written = 0;
13284 IADDR UNUSED pc = abuf->addr;
13285 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13286
13287if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13288{
13289; /*clobber*/
13290; /*clobber*/
13291; /*clobber*/
13292; /*clobber*/
13293if (NEBI (CPU (h_psr_esr), 0)) {
13294{
13295; /*clobber*/
13296; /*clobber*/
13297; /*clobber*/
13298; /*clobber*/
13299}
13300}
13301frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13302}
13303}
13304
13305 abuf->written = written;
13306 return vpc;
13307#undef FLD
13308}
13309
13310/* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13311
13312static SEM_PC
13313SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13314{
13315#define FLD(f) abuf->fields.sfmt_ftine.f
13316 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13317 int UNUSED written = 0;
13318 IADDR UNUSED pc = abuf->addr;
13319 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13320
13321if (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))))) {
13322{
13323; /*clobber*/
13324; /*clobber*/
13325; /*clobber*/
13326; /*clobber*/
13327if (NEBI (CPU (h_psr_esr), 0)) {
13328{
13329; /*clobber*/
13330; /*clobber*/
13331; /*clobber*/
13332; /*clobber*/
13333}
13334}
13335frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13336}
13337}
13338
13339 abuf->written = written;
13340 return vpc;
13341#undef FLD
13342}
13343
13344/* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13345
13346static SEM_PC
13347SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13348{
13349#define FLD(f) abuf->fields.sfmt_ftine.f
13350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13351 int UNUSED written = 0;
13352 IADDR UNUSED pc = abuf->addr;
13353 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13354
13355if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13356{
13357; /*clobber*/
13358; /*clobber*/
13359; /*clobber*/
13360; /*clobber*/
13361if (NEBI (CPU (h_psr_esr), 0)) {
13362{
13363; /*clobber*/
13364; /*clobber*/
13365; /*clobber*/
13366; /*clobber*/
13367}
13368}
13369frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13370}
13371}
13372
13373 abuf->written = written;
13374 return vpc;
13375#undef FLD
13376}
13377
13378/* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13379
13380static SEM_PC
13381SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13382{
13383#define FLD(f) abuf->fields.sfmt_ftine.f
13384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13385 int UNUSED written = 0;
13386 IADDR UNUSED pc = abuf->addr;
13387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13388
13389if (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)))) {
13390{
13391; /*clobber*/
13392; /*clobber*/
13393; /*clobber*/
13394; /*clobber*/
13395if (NEBI (CPU (h_psr_esr), 0)) {
13396{
13397; /*clobber*/
13398; /*clobber*/
13399; /*clobber*/
13400; /*clobber*/
13401}
13402}
13403frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13404}
13405}
13406
13407 abuf->written = written;
13408 return vpc;
13409#undef FLD
13410}
13411
13412/* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13413
13414static SEM_PC
13415SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13416{
13417#define FLD(f) abuf->fields.sfmt_ftine.f
13418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13419 int UNUSED written = 0;
13420 IADDR UNUSED pc = abuf->addr;
13421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13422
13423if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13424{
13425; /*clobber*/
13426; /*clobber*/
13427; /*clobber*/
13428; /*clobber*/
13429if (NEBI (CPU (h_psr_esr), 0)) {
13430{
13431; /*clobber*/
13432; /*clobber*/
13433; /*clobber*/
13434; /*clobber*/
13435}
13436}
13437frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13438}
13439}
13440
13441 abuf->written = written;
13442 return vpc;
13443#undef FLD
13444}
13445
13446/* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13447
13448static SEM_PC
13449SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13450{
13451#define FLD(f) abuf->fields.sfmt_ftine.f
13452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13453 int UNUSED written = 0;
13454 IADDR UNUSED pc = abuf->addr;
13455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13456
13457if (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))))) {
13458{
13459; /*clobber*/
13460; /*clobber*/
13461; /*clobber*/
13462; /*clobber*/
13463if (NEBI (CPU (h_psr_esr), 0)) {
13464{
13465; /*clobber*/
13466; /*clobber*/
13467; /*clobber*/
13468; /*clobber*/
13469}
13470}
13471frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13472}
13473}
13474
13475 abuf->written = written;
13476 return vpc;
13477#undef FLD
13478}
13479
13480/* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13481
13482static SEM_PC
13483SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13484{
13485#define FLD(f) abuf->fields.sfmt_ftine.f
13486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13487 int UNUSED written = 0;
13488 IADDR UNUSED pc = abuf->addr;
13489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13490
13491if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13492{
13493; /*clobber*/
13494; /*clobber*/
13495; /*clobber*/
13496; /*clobber*/
13497if (NEBI (CPU (h_psr_esr), 0)) {
13498{
13499; /*clobber*/
13500; /*clobber*/
13501; /*clobber*/
13502; /*clobber*/
13503}
13504}
13505frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13506}
13507}
13508
13509 abuf->written = written;
13510 return vpc;
13511#undef FLD
13512}
13513
13514/* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13515
13516static SEM_PC
13517SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13518{
13519#define FLD(f) abuf->fields.sfmt_ftine.f
13520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13521 int UNUSED written = 0;
13522 IADDR UNUSED pc = abuf->addr;
13523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13524
13525if (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))))) {
13526{
13527; /*clobber*/
13528; /*clobber*/
13529; /*clobber*/
13530; /*clobber*/
13531if (NEBI (CPU (h_psr_esr), 0)) {
13532{
13533; /*clobber*/
13534; /*clobber*/
13535; /*clobber*/
13536; /*clobber*/
13537}
13538}
13539frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13540}
13541}
13542
13543 abuf->written = written;
13544 return vpc;
13545#undef FLD
13546}
13547
13548/* break: break$pack */
13549
13550static SEM_PC
13551SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13552{
13553#define FLD(f) abuf->fields.sfmt_break.f
13554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13555 int UNUSED written = 0;
13556 IADDR UNUSED pc = abuf->addr;
13557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13558
13559{
13560; /*clobber*/
13561; /*clobber*/
13562; /*clobber*/
13563; /*clobber*/
13564; /*clobber*/
13565; /*clobber*/
13566frv_break (current_cpu);
13567}
13568
13569 return vpc;
13570#undef FLD
13571}
13572
13573/* mtrap: mtrap$pack */
13574
13575static SEM_PC
13576SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13577{
2310652a 13578#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
13579 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13580 int UNUSED written = 0;
13581 IADDR UNUSED pc = abuf->addr;
13582 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13583
13584frv_mtrap (current_cpu);
13585
13586 return vpc;
13587#undef FLD
13588}
13589
13590/* andcr: andcr$pack $CRi,$CRj,$CRk */
13591
13592static SEM_PC
13593SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13594{
13595#define FLD(f) abuf->fields.sfmt_andcr.f
13596 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13597 int UNUSED written = 0;
13598 IADDR UNUSED pc = abuf->addr;
13599 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13600
13601 {
13602 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13603 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13604 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13605 }
13606
13607 return vpc;
13608#undef FLD
13609}
13610
13611/* orcr: orcr$pack $CRi,$CRj,$CRk */
13612
13613static SEM_PC
13614SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13615{
13616#define FLD(f) abuf->fields.sfmt_andcr.f
13617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13618 int UNUSED written = 0;
13619 IADDR UNUSED pc = abuf->addr;
13620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13621
13622 {
13623 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13624 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13625 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13626 }
13627
13628 return vpc;
13629#undef FLD
13630}
13631
13632/* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13633
13634static SEM_PC
13635SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13636{
13637#define FLD(f) abuf->fields.sfmt_andcr.f
13638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13639 int UNUSED written = 0;
13640 IADDR UNUSED pc = abuf->addr;
13641 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13642
13643 {
13644 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13645 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13646 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13647 }
13648
13649 return vpc;
13650#undef FLD
13651}
13652
13653/* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13654
13655static SEM_PC
13656SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13657{
13658#define FLD(f) abuf->fields.sfmt_andcr.f
13659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13660 int UNUSED written = 0;
13661 IADDR UNUSED pc = abuf->addr;
13662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13663
13664 {
13665 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13666 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13667 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13668 }
13669
13670 return vpc;
13671#undef FLD
13672}
13673
13674/* norcr: norcr$pack $CRi,$CRj,$CRk */
13675
13676static SEM_PC
13677SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13678{
13679#define FLD(f) abuf->fields.sfmt_andcr.f
13680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13681 int UNUSED written = 0;
13682 IADDR UNUSED pc = abuf->addr;
13683 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13684
13685 {
13686 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13687 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13688 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13689 }
13690
13691 return vpc;
13692#undef FLD
13693}
13694
13695/* andncr: andncr$pack $CRi,$CRj,$CRk */
13696
13697static SEM_PC
13698SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13699{
13700#define FLD(f) abuf->fields.sfmt_andcr.f
13701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13702 int UNUSED written = 0;
13703 IADDR UNUSED pc = abuf->addr;
13704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13705
13706 {
13707 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13708 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13709 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13710 }
13711
13712 return vpc;
13713#undef FLD
13714}
13715
13716/* orncr: orncr$pack $CRi,$CRj,$CRk */
13717
13718static SEM_PC
13719SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13720{
13721#define FLD(f) abuf->fields.sfmt_andcr.f
13722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13723 int UNUSED written = 0;
13724 IADDR UNUSED pc = abuf->addr;
13725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13726
13727 {
13728 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13729 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13730 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13731 }
13732
13733 return vpc;
13734#undef FLD
13735}
13736
13737/* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13738
13739static SEM_PC
13740SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13741{
13742#define FLD(f) abuf->fields.sfmt_andcr.f
13743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13744 int UNUSED written = 0;
13745 IADDR UNUSED pc = abuf->addr;
13746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13747
13748 {
13749 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13750 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13751 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13752 }
13753
13754 return vpc;
13755#undef FLD
13756}
13757
13758/* norncr: norncr$pack $CRi,$CRj,$CRk */
13759
13760static SEM_PC
13761SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13762{
13763#define FLD(f) abuf->fields.sfmt_andcr.f
13764 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13765 int UNUSED written = 0;
13766 IADDR UNUSED pc = abuf->addr;
13767 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13768
13769 {
13770 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13771 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13772 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13773 }
13774
13775 return vpc;
13776#undef FLD
13777}
13778
13779/* notcr: notcr$pack $CRj,$CRk */
13780
13781static SEM_PC
13782SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13783{
13784#define FLD(f) abuf->fields.sfmt_andcr.f
13785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13786 int UNUSED written = 0;
13787 IADDR UNUSED pc = abuf->addr;
13788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13789
13790 {
13791 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13792 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13793 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13794 }
13795
13796 return vpc;
13797#undef FLD
13798}
13799
13800/* ckra: ckra$pack $CRj_int */
13801
13802static SEM_PC
13803SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13804{
13805#define FLD(f) abuf->fields.sfmt_cckeq.f
13806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13807 int UNUSED written = 0;
13808 IADDR UNUSED pc = abuf->addr;
13809 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13810
13811 {
13812 UQI opval = 3;
13813 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13814 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13815 }
13816
13817 return vpc;
13818#undef FLD
13819}
13820
13821/* ckno: ckno$pack $CRj_int */
13822
13823static SEM_PC
13824SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13825{
13826#define FLD(f) abuf->fields.sfmt_cckeq.f
13827 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13828 int UNUSED written = 0;
13829 IADDR UNUSED pc = abuf->addr;
13830 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13831
13832 {
13833 UQI opval = 2;
13834 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13835 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13836 }
13837
13838 return vpc;
13839#undef FLD
13840}
13841
13842/* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13843
13844static SEM_PC
13845SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13846{
13847#define FLD(f) abuf->fields.sfmt_cckeq.f
13848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13849 int UNUSED written = 0;
13850 IADDR UNUSED pc = abuf->addr;
13851 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13852
13853if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13854 {
13855 UQI opval = 3;
13856 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13857 written |= (1 << 1);
13858 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13859 }
13860} else {
13861 {
13862 UQI opval = 2;
13863 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13864 written |= (1 << 1);
13865 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13866 }
13867}
13868
13869 abuf->written = written;
13870 return vpc;
13871#undef FLD
13872}
13873
13874/* ckne: ckne$pack $ICCi_3,$CRj_int */
13875
13876static SEM_PC
13877SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13878{
13879#define FLD(f) abuf->fields.sfmt_cckeq.f
13880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13881 int UNUSED written = 0;
13882 IADDR UNUSED pc = abuf->addr;
13883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13884
13885if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13886 {
13887 UQI opval = 3;
13888 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13889 written |= (1 << 1);
13890 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13891 }
13892} else {
13893 {
13894 UQI opval = 2;
13895 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13896 written |= (1 << 1);
13897 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13898 }
13899}
13900
13901 abuf->written = written;
13902 return vpc;
13903#undef FLD
13904}
13905
13906/* ckle: ckle$pack $ICCi_3,$CRj_int */
13907
13908static SEM_PC
13909SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13910{
13911#define FLD(f) abuf->fields.sfmt_cckeq.f
13912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13913 int UNUSED written = 0;
13914 IADDR UNUSED pc = abuf->addr;
13915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13916
13917if (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))))) {
13918 {
13919 UQI opval = 3;
13920 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13921 written |= (1 << 1);
13922 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13923 }
13924} else {
13925 {
13926 UQI opval = 2;
13927 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13928 written |= (1 << 1);
13929 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13930 }
13931}
13932
13933 abuf->written = written;
13934 return vpc;
13935#undef FLD
13936}
13937
13938/* ckgt: ckgt$pack $ICCi_3,$CRj_int */
13939
13940static SEM_PC
13941SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13942{
13943#define FLD(f) abuf->fields.sfmt_cckeq.f
13944 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13945 int UNUSED written = 0;
13946 IADDR UNUSED pc = abuf->addr;
13947 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13948
13949if (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)))))) {
13950 {
13951 UQI opval = 3;
13952 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13953 written |= (1 << 1);
13954 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13955 }
13956} else {
13957 {
13958 UQI opval = 2;
13959 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13960 written |= (1 << 1);
13961 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13962 }
13963}
13964
13965 abuf->written = written;
13966 return vpc;
13967#undef FLD
13968}
13969
13970/* cklt: cklt$pack $ICCi_3,$CRj_int */
13971
13972static SEM_PC
13973SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13974{
13975#define FLD(f) abuf->fields.sfmt_cckeq.f
13976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13977 int UNUSED written = 0;
13978 IADDR UNUSED pc = abuf->addr;
13979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13980
13981if (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)))) {
13982 {
13983 UQI opval = 3;
13984 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13985 written |= (1 << 1);
13986 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13987 }
13988} else {
13989 {
13990 UQI opval = 2;
13991 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13992 written |= (1 << 1);
13993 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13994 }
13995}
13996
13997 abuf->written = written;
13998 return vpc;
13999#undef FLD
14000}
14001
14002/* ckge: ckge$pack $ICCi_3,$CRj_int */
14003
14004static SEM_PC
14005SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14006{
14007#define FLD(f) abuf->fields.sfmt_cckeq.f
14008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14009 int UNUSED written = 0;
14010 IADDR UNUSED pc = abuf->addr;
14011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14012
14013if (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))))) {
14014 {
14015 UQI opval = 3;
14016 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14017 written |= (1 << 1);
14018 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14019 }
14020} else {
14021 {
14022 UQI opval = 2;
14023 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14024 written |= (1 << 1);
14025 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14026 }
14027}
14028
14029 abuf->written = written;
14030 return vpc;
14031#undef FLD
14032}
14033
14034/* ckls: ckls$pack $ICCi_3,$CRj_int */
14035
14036static SEM_PC
14037SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14038{
14039#define FLD(f) abuf->fields.sfmt_cckeq.f
14040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14041 int UNUSED written = 0;
14042 IADDR UNUSED pc = abuf->addr;
14043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14044
14045if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14046 {
14047 UQI opval = 3;
14048 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14049 written |= (1 << 1);
14050 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14051 }
14052} else {
14053 {
14054 UQI opval = 2;
14055 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14056 written |= (1 << 1);
14057 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14058 }
14059}
14060
14061 abuf->written = written;
14062 return vpc;
14063#undef FLD
14064}
14065
14066/* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14067
14068static SEM_PC
14069SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14070{
14071#define FLD(f) abuf->fields.sfmt_cckeq.f
14072 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14073 int UNUSED written = 0;
14074 IADDR UNUSED pc = abuf->addr;
14075 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14076
14077if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
14078 {
14079 UQI opval = 3;
14080 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14081 written |= (1 << 1);
14082 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14083 }
14084} else {
14085 {
14086 UQI opval = 2;
14087 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14088 written |= (1 << 1);
14089 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14090 }
14091}
14092
14093 abuf->written = written;
14094 return vpc;
14095#undef FLD
14096}
14097
14098/* ckc: ckc$pack $ICCi_3,$CRj_int */
14099
14100static SEM_PC
14101SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14102{
14103#define FLD(f) abuf->fields.sfmt_cckeq.f
14104 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14105 int UNUSED written = 0;
14106 IADDR UNUSED pc = abuf->addr;
14107 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14108
14109if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14110 {
14111 UQI opval = 3;
14112 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14113 written |= (1 << 1);
14114 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14115 }
14116} else {
14117 {
14118 UQI opval = 2;
14119 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14120 written |= (1 << 1);
14121 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14122 }
14123}
14124
14125 abuf->written = written;
14126 return vpc;
14127#undef FLD
14128}
14129
14130/* cknc: cknc$pack $ICCi_3,$CRj_int */
14131
14132static SEM_PC
14133SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14134{
14135#define FLD(f) abuf->fields.sfmt_cckeq.f
14136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14137 int UNUSED written = 0;
14138 IADDR UNUSED pc = abuf->addr;
14139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14140
14141if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14142 {
14143 UQI opval = 3;
14144 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14145 written |= (1 << 1);
14146 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14147 }
14148} else {
14149 {
14150 UQI opval = 2;
14151 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14152 written |= (1 << 1);
14153 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14154 }
14155}
14156
14157 abuf->written = written;
14158 return vpc;
14159#undef FLD
14160}
14161
14162/* ckn: ckn$pack $ICCi_3,$CRj_int */
14163
14164static SEM_PC
14165SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14166{
14167#define FLD(f) abuf->fields.sfmt_cckeq.f
14168 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14169 int UNUSED written = 0;
14170 IADDR UNUSED pc = abuf->addr;
14171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14172
14173if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14174 {
14175 UQI opval = 3;
14176 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14177 written |= (1 << 1);
14178 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14179 }
14180} else {
14181 {
14182 UQI opval = 2;
14183 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14184 written |= (1 << 1);
14185 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14186 }
14187}
14188
14189 abuf->written = written;
14190 return vpc;
14191#undef FLD
14192}
14193
14194/* ckp: ckp$pack $ICCi_3,$CRj_int */
14195
14196static SEM_PC
14197SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14198{
14199#define FLD(f) abuf->fields.sfmt_cckeq.f
14200 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14201 int UNUSED written = 0;
14202 IADDR UNUSED pc = abuf->addr;
14203 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14204
14205if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14206 {
14207 UQI opval = 3;
14208 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14209 written |= (1 << 1);
14210 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14211 }
14212} else {
14213 {
14214 UQI opval = 2;
14215 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14216 written |= (1 << 1);
14217 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14218 }
14219}
14220
14221 abuf->written = written;
14222 return vpc;
14223#undef FLD
14224}
14225
14226/* ckv: ckv$pack $ICCi_3,$CRj_int */
14227
14228static SEM_PC
14229SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14230{
14231#define FLD(f) abuf->fields.sfmt_cckeq.f
14232 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14233 int UNUSED written = 0;
14234 IADDR UNUSED pc = abuf->addr;
14235 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14236
14237if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14238 {
14239 UQI opval = 3;
14240 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14241 written |= (1 << 1);
14242 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14243 }
14244} else {
14245 {
14246 UQI opval = 2;
14247 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14248 written |= (1 << 1);
14249 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14250 }
14251}
14252
14253 abuf->written = written;
14254 return vpc;
14255#undef FLD
14256}
14257
14258/* cknv: cknv$pack $ICCi_3,$CRj_int */
14259
14260static SEM_PC
14261SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14262{
14263#define FLD(f) abuf->fields.sfmt_cckeq.f
14264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14265 int UNUSED written = 0;
14266 IADDR UNUSED pc = abuf->addr;
14267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14268
14269if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14270 {
14271 UQI opval = 3;
14272 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14273 written |= (1 << 1);
14274 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14275 }
14276} else {
14277 {
14278 UQI opval = 2;
14279 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14280 written |= (1 << 1);
14281 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14282 }
14283}
14284
14285 abuf->written = written;
14286 return vpc;
14287#undef FLD
14288}
14289
14290/* fckra: fckra$pack $CRj_float */
14291
14292static SEM_PC
14293SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14294{
14295#define FLD(f) abuf->fields.sfmt_cfckne.f
14296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14297 int UNUSED written = 0;
14298 IADDR UNUSED pc = abuf->addr;
14299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14300
14301 {
14302 UQI opval = 3;
14303 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14304 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14305 }
14306
14307 return vpc;
14308#undef FLD
14309}
14310
14311/* fckno: fckno$pack $CRj_float */
14312
14313static SEM_PC
14314SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14315{
14316#define FLD(f) abuf->fields.sfmt_cfckne.f
14317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14318 int UNUSED written = 0;
14319 IADDR UNUSED pc = abuf->addr;
14320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14321
14322 {
14323 UQI opval = 2;
14324 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14325 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14326 }
14327
14328 return vpc;
14329#undef FLD
14330}
14331
14332/* fckne: fckne$pack $FCCi_3,$CRj_float */
14333
14334static SEM_PC
14335SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14336{
14337#define FLD(f) abuf->fields.sfmt_cfckne.f
14338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14339 int UNUSED written = 0;
14340 IADDR UNUSED pc = abuf->addr;
14341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14342
14343if (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))))) {
14344 {
14345 UQI opval = 3;
14346 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14347 written |= (1 << 1);
14348 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14349 }
14350} else {
14351 {
14352 UQI opval = 2;
14353 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14354 written |= (1 << 1);
14355 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14356 }
14357}
14358
14359 abuf->written = written;
14360 return vpc;
14361#undef FLD
14362}
14363
14364/* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14365
14366static SEM_PC
14367SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14368{
14369#define FLD(f) abuf->fields.sfmt_cfckne.f
14370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14371 int UNUSED written = 0;
14372 IADDR UNUSED pc = abuf->addr;
14373 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14374
14375if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14376 {
14377 UQI opval = 3;
14378 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14379 written |= (1 << 1);
14380 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14381 }
14382} else {
14383 {
14384 UQI opval = 2;
14385 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14386 written |= (1 << 1);
14387 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14388 }
14389}
14390
14391 abuf->written = written;
14392 return vpc;
14393#undef FLD
14394}
14395
14396/* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14397
14398static SEM_PC
14399SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14400{
14401#define FLD(f) abuf->fields.sfmt_cfckne.f
14402 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14403 int UNUSED written = 0;
14404 IADDR UNUSED pc = abuf->addr;
14405 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14406
14407if (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)))) {
14408 {
14409 UQI opval = 3;
14410 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14411 written |= (1 << 1);
14412 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14413 }
14414} else {
14415 {
14416 UQI opval = 2;
14417 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14418 written |= (1 << 1);
14419 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14420 }
14421}
14422
14423 abuf->written = written;
14424 return vpc;
14425#undef FLD
14426}
14427
14428/* fckue: fckue$pack $FCCi_3,$CRj_float */
14429
14430static SEM_PC
14431SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14432{
14433#define FLD(f) abuf->fields.sfmt_cfckne.f
14434 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14435 int UNUSED written = 0;
14436 IADDR UNUSED pc = abuf->addr;
14437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14438
14439if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14440 {
14441 UQI opval = 3;
14442 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14443 written |= (1 << 1);
14444 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14445 }
14446} else {
14447 {
14448 UQI opval = 2;
14449 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14450 written |= (1 << 1);
14451 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14452 }
14453}
14454
14455 abuf->written = written;
14456 return vpc;
14457#undef FLD
14458}
14459
14460/* fckul: fckul$pack $FCCi_3,$CRj_float */
14461
14462static SEM_PC
14463SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14464{
14465#define FLD(f) abuf->fields.sfmt_cfckne.f
14466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14467 int UNUSED written = 0;
14468 IADDR UNUSED pc = abuf->addr;
14469 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14470
14471if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14472 {
14473 UQI opval = 3;
14474 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14475 written |= (1 << 1);
14476 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14477 }
14478} else {
14479 {
14480 UQI opval = 2;
14481 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14482 written |= (1 << 1);
14483 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14484 }
14485}
14486
14487 abuf->written = written;
14488 return vpc;
14489#undef FLD
14490}
14491
14492/* fckge: fckge$pack $FCCi_3,$CRj_float */
14493
14494static SEM_PC
14495SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14496{
14497#define FLD(f) abuf->fields.sfmt_cfckne.f
14498 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14499 int UNUSED written = 0;
14500 IADDR UNUSED pc = abuf->addr;
14501 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14502
14503if (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)))) {
14504 {
14505 UQI opval = 3;
14506 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14507 written |= (1 << 1);
14508 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14509 }
14510} else {
14511 {
14512 UQI opval = 2;
14513 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14514 written |= (1 << 1);
14515 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14516 }
14517}
14518
14519 abuf->written = written;
14520 return vpc;
14521#undef FLD
14522}
14523
14524/* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14525
14526static SEM_PC
14527SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14528{
14529#define FLD(f) abuf->fields.sfmt_cfckne.f
14530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14531 int UNUSED written = 0;
14532 IADDR UNUSED pc = abuf->addr;
14533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14534
14535if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14536 {
14537 UQI opval = 3;
14538 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14539 written |= (1 << 1);
14540 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14541 }
14542} else {
14543 {
14544 UQI opval = 2;
14545 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14546 written |= (1 << 1);
14547 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14548 }
14549}
14550
14551 abuf->written = written;
14552 return vpc;
14553#undef FLD
14554}
14555
14556/* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14557
14558static SEM_PC
14559SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14560{
14561#define FLD(f) abuf->fields.sfmt_cfckne.f
14562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14563 int UNUSED written = 0;
14564 IADDR UNUSED pc = abuf->addr;
14565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14566
14567if (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))))) {
14568 {
14569 UQI opval = 3;
14570 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14571 written |= (1 << 1);
14572 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14573 }
14574} else {
14575 {
14576 UQI opval = 2;
14577 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14578 written |= (1 << 1);
14579 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14580 }
14581}
14582
14583 abuf->written = written;
14584 return vpc;
14585#undef FLD
14586}
14587
14588/* fckug: fckug$pack $FCCi_3,$CRj_float */
14589
14590static SEM_PC
14591SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14592{
14593#define FLD(f) abuf->fields.sfmt_cfckne.f
14594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14595 int UNUSED written = 0;
14596 IADDR UNUSED pc = abuf->addr;
14597 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14598
14599if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14600 {
14601 UQI opval = 3;
14602 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14603 written |= (1 << 1);
14604 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14605 }
14606} else {
14607 {
14608 UQI opval = 2;
14609 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14610 written |= (1 << 1);
14611 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14612 }
14613}
14614
14615 abuf->written = written;
14616 return vpc;
14617#undef FLD
14618}
14619
14620/* fckle: fckle$pack $FCCi_3,$CRj_float */
14621
14622static SEM_PC
14623SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14624{
14625#define FLD(f) abuf->fields.sfmt_cfckne.f
14626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14627 int UNUSED written = 0;
14628 IADDR UNUSED pc = abuf->addr;
14629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14630
14631if (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)))) {
14632 {
14633 UQI opval = 3;
14634 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14635 written |= (1 << 1);
14636 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14637 }
14638} else {
14639 {
14640 UQI opval = 2;
14641 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14642 written |= (1 << 1);
14643 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14644 }
14645}
14646
14647 abuf->written = written;
14648 return vpc;
14649#undef FLD
14650}
14651
14652/* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14653
14654static SEM_PC
14655SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14656{
14657#define FLD(f) abuf->fields.sfmt_cfckne.f
14658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14659 int UNUSED written = 0;
14660 IADDR UNUSED pc = abuf->addr;
14661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14662
14663if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14664 {
14665 UQI opval = 3;
14666 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14667 written |= (1 << 1);
14668 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14669 }
14670} else {
14671 {
14672 UQI opval = 2;
14673 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14674 written |= (1 << 1);
14675 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14676 }
14677}
14678
14679 abuf->written = written;
14680 return vpc;
14681#undef FLD
14682}
14683
14684/* fckule: fckule$pack $FCCi_3,$CRj_float */
14685
14686static SEM_PC
14687SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14688{
14689#define FLD(f) abuf->fields.sfmt_cfckne.f
14690 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14691 int UNUSED written = 0;
14692 IADDR UNUSED pc = abuf->addr;
14693 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14694
14695if (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))))) {
14696 {
14697 UQI opval = 3;
14698 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14699 written |= (1 << 1);
14700 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14701 }
14702} else {
14703 {
14704 UQI opval = 2;
14705 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14706 written |= (1 << 1);
14707 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14708 }
14709}
14710
14711 abuf->written = written;
14712 return vpc;
14713#undef FLD
14714}
14715
14716/* fcku: fcku$pack $FCCi_3,$CRj_float */
14717
14718static SEM_PC
14719SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14720{
14721#define FLD(f) abuf->fields.sfmt_cfckne.f
14722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14723 int UNUSED written = 0;
14724 IADDR UNUSED pc = abuf->addr;
14725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14726
14727if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14728 {
14729 UQI opval = 3;
14730 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14731 written |= (1 << 1);
14732 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14733 }
14734} else {
14735 {
14736 UQI opval = 2;
14737 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14738 written |= (1 << 1);
14739 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14740 }
14741}
14742
14743 abuf->written = written;
14744 return vpc;
14745#undef FLD
14746}
14747
14748/* fcko: fcko$pack $FCCi_3,$CRj_float */
14749
14750static SEM_PC
14751SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14752{
14753#define FLD(f) abuf->fields.sfmt_cfckne.f
14754 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14755 int UNUSED written = 0;
14756 IADDR UNUSED pc = abuf->addr;
14757 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14758
14759if (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))))) {
14760 {
14761 UQI opval = 3;
14762 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14763 written |= (1 << 1);
14764 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14765 }
14766} else {
14767 {
14768 UQI opval = 2;
14769 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14770 written |= (1 << 1);
14771 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14772 }
14773}
14774
14775 abuf->written = written;
14776 return vpc;
14777#undef FLD
14778}
14779
14780/* cckra: cckra$pack $CRj_int,$CCi,$cond */
14781
14782static SEM_PC
14783SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14784{
14785#define FLD(f) abuf->fields.sfmt_cckeq.f
14786 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14787 int UNUSED written = 0;
14788 IADDR UNUSED pc = abuf->addr;
14789 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14790
14791if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14792 {
14793 UQI opval = 3;
14794 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14795 written |= (1 << 2);
14796 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14797 }
14798} else {
14799 {
14800 UQI opval = 0;
14801 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14802 written |= (1 << 2);
14803 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14804 }
14805}
14806
14807 abuf->written = written;
14808 return vpc;
14809#undef FLD
14810}
14811
14812/* cckno: cckno$pack $CRj_int,$CCi,$cond */
14813
14814static SEM_PC
14815SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14816{
14817#define FLD(f) abuf->fields.sfmt_cckeq.f
14818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14819 int UNUSED written = 0;
14820 IADDR UNUSED pc = abuf->addr;
14821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14822
14823if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14824 {
14825 UQI opval = 2;
14826 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14827 written |= (1 << 2);
14828 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14829 }
14830} else {
14831 {
14832 UQI opval = 0;
14833 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14834 written |= (1 << 2);
14835 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14836 }
14837}
14838
14839 abuf->written = written;
14840 return vpc;
14841#undef FLD
14842}
14843
14844/* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14845
14846static SEM_PC
14847SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14848{
14849#define FLD(f) abuf->fields.sfmt_cckeq.f
14850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14851 int UNUSED written = 0;
14852 IADDR UNUSED pc = abuf->addr;
14853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14854
14855if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14856if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14857 {
14858 UQI opval = 3;
14859 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14860 written |= (1 << 3);
14861 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14862 }
14863} else {
14864 {
14865 UQI opval = 2;
14866 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14867 written |= (1 << 3);
14868 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14869 }
14870}
14871} else {
14872 {
14873 UQI opval = 0;
14874 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14875 written |= (1 << 3);
14876 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14877 }
14878}
14879
14880 abuf->written = written;
14881 return vpc;
14882#undef FLD
14883}
14884
14885/* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14886
14887static SEM_PC
14888SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14889{
14890#define FLD(f) abuf->fields.sfmt_cckeq.f
14891 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14892 int UNUSED written = 0;
14893 IADDR UNUSED pc = abuf->addr;
14894 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14895
14896if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14897if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14898 {
14899 UQI opval = 3;
14900 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14901 written |= (1 << 3);
14902 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14903 }
14904} else {
14905 {
14906 UQI opval = 2;
14907 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14908 written |= (1 << 3);
14909 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14910 }
14911}
14912} else {
14913 {
14914 UQI opval = 0;
14915 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14916 written |= (1 << 3);
14917 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14918 }
14919}
14920
14921 abuf->written = written;
14922 return vpc;
14923#undef FLD
14924}
14925
14926/* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
14927
14928static SEM_PC
14929SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14930{
14931#define FLD(f) abuf->fields.sfmt_cckeq.f
14932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14933 int UNUSED written = 0;
14934 IADDR UNUSED pc = abuf->addr;
14935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14936
14937if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14938if (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))))) {
14939 {
14940 UQI opval = 3;
14941 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14942 written |= (1 << 3);
14943 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14944 }
14945} else {
14946 {
14947 UQI opval = 2;
14948 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14949 written |= (1 << 3);
14950 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14951 }
14952}
14953} else {
14954 {
14955 UQI opval = 0;
14956 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14957 written |= (1 << 3);
14958 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14959 }
14960}
14961
14962 abuf->written = written;
14963 return vpc;
14964#undef FLD
14965}
14966
14967/* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
14968
14969static SEM_PC
14970SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14971{
14972#define FLD(f) abuf->fields.sfmt_cckeq.f
14973 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14974 int UNUSED written = 0;
14975 IADDR UNUSED pc = abuf->addr;
14976 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14977
14978if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14979if (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)))))) {
14980 {
14981 UQI opval = 3;
14982 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14983 written |= (1 << 3);
14984 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14985 }
14986} else {
14987 {
14988 UQI opval = 2;
14989 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14990 written |= (1 << 3);
14991 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14992 }
14993}
14994} else {
14995 {
14996 UQI opval = 0;
14997 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14998 written |= (1 << 3);
14999 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15000 }
15001}
15002
15003 abuf->written = written;
15004 return vpc;
15005#undef FLD
15006}
15007
15008/* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15009
15010static SEM_PC
15011SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15012{
15013#define FLD(f) abuf->fields.sfmt_cckeq.f
15014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15015 int UNUSED written = 0;
15016 IADDR UNUSED pc = abuf->addr;
15017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15018
15019if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15020if (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)))) {
15021 {
15022 UQI opval = 3;
15023 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15024 written |= (1 << 3);
15025 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15026 }
15027} else {
15028 {
15029 UQI opval = 2;
15030 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15031 written |= (1 << 3);
15032 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15033 }
15034}
15035} else {
15036 {
15037 UQI opval = 0;
15038 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15039 written |= (1 << 3);
15040 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15041 }
15042}
15043
15044 abuf->written = written;
15045 return vpc;
15046#undef FLD
15047}
15048
15049/* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15050
15051static SEM_PC
15052SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15053{
15054#define FLD(f) abuf->fields.sfmt_cckeq.f
15055 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15056 int UNUSED written = 0;
15057 IADDR UNUSED pc = abuf->addr;
15058 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15059
15060if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15061if (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))))) {
15062 {
15063 UQI opval = 3;
15064 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15065 written |= (1 << 3);
15066 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15067 }
15068} else {
15069 {
15070 UQI opval = 2;
15071 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15072 written |= (1 << 3);
15073 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15074 }
15075}
15076} else {
15077 {
15078 UQI opval = 0;
15079 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15080 written |= (1 << 3);
15081 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15082 }
15083}
15084
15085 abuf->written = written;
15086 return vpc;
15087#undef FLD
15088}
15089
15090/* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15091
15092static SEM_PC
15093SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15094{
15095#define FLD(f) abuf->fields.sfmt_cckeq.f
15096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15097 int UNUSED written = 0;
15098 IADDR UNUSED pc = abuf->addr;
15099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15100
15101if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15102if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15103 {
15104 UQI opval = 3;
15105 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15106 written |= (1 << 3);
15107 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15108 }
15109} else {
15110 {
15111 UQI opval = 2;
15112 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15113 written |= (1 << 3);
15114 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15115 }
15116}
15117} else {
15118 {
15119 UQI opval = 0;
15120 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15121 written |= (1 << 3);
15122 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15123 }
15124}
15125
15126 abuf->written = written;
15127 return vpc;
15128#undef FLD
15129}
15130
15131/* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15132
15133static SEM_PC
15134SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15135{
15136#define FLD(f) abuf->fields.sfmt_cckeq.f
15137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15138 int UNUSED written = 0;
15139 IADDR UNUSED pc = abuf->addr;
15140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15141
15142if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15143if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
15144 {
15145 UQI opval = 3;
15146 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15147 written |= (1 << 3);
15148 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15149 }
15150} else {
15151 {
15152 UQI opval = 2;
15153 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15154 written |= (1 << 3);
15155 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15156 }
15157}
15158} else {
15159 {
15160 UQI opval = 0;
15161 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15162 written |= (1 << 3);
15163 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15164 }
15165}
15166
15167 abuf->written = written;
15168 return vpc;
15169#undef FLD
15170}
15171
15172/* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15173
15174static SEM_PC
15175SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15176{
15177#define FLD(f) abuf->fields.sfmt_cckeq.f
15178 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15179 int UNUSED written = 0;
15180 IADDR UNUSED pc = abuf->addr;
15181 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15182
15183if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15184if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15185 {
15186 UQI opval = 3;
15187 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15188 written |= (1 << 3);
15189 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15190 }
15191} else {
15192 {
15193 UQI opval = 2;
15194 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15195 written |= (1 << 3);
15196 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15197 }
15198}
15199} else {
15200 {
15201 UQI opval = 0;
15202 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15203 written |= (1 << 3);
15204 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15205 }
15206}
15207
15208 abuf->written = written;
15209 return vpc;
15210#undef FLD
15211}
15212
15213/* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15214
15215static SEM_PC
15216SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15217{
15218#define FLD(f) abuf->fields.sfmt_cckeq.f
15219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15220 int UNUSED written = 0;
15221 IADDR UNUSED pc = abuf->addr;
15222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15223
15224if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15225if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15226 {
15227 UQI opval = 3;
15228 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15229 written |= (1 << 3);
15230 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15231 }
15232} else {
15233 {
15234 UQI opval = 2;
15235 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15236 written |= (1 << 3);
15237 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15238 }
15239}
15240} else {
15241 {
15242 UQI opval = 0;
15243 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15244 written |= (1 << 3);
15245 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15246 }
15247}
15248
15249 abuf->written = written;
15250 return vpc;
15251#undef FLD
15252}
15253
15254/* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15255
15256static SEM_PC
15257SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15258{
15259#define FLD(f) abuf->fields.sfmt_cckeq.f
15260 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15261 int UNUSED written = 0;
15262 IADDR UNUSED pc = abuf->addr;
15263 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15264
15265if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15266if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15267 {
15268 UQI opval = 3;
15269 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15270 written |= (1 << 3);
15271 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15272 }
15273} else {
15274 {
15275 UQI opval = 2;
15276 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15277 written |= (1 << 3);
15278 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15279 }
15280}
15281} else {
15282 {
15283 UQI opval = 0;
15284 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15285 written |= (1 << 3);
15286 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15287 }
15288}
15289
15290 abuf->written = written;
15291 return vpc;
15292#undef FLD
15293}
15294
15295/* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15296
15297static SEM_PC
15298SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15299{
15300#define FLD(f) abuf->fields.sfmt_cckeq.f
15301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15302 int UNUSED written = 0;
15303 IADDR UNUSED pc = abuf->addr;
15304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15305
15306if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15307if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15308 {
15309 UQI opval = 3;
15310 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15311 written |= (1 << 3);
15312 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15313 }
15314} else {
15315 {
15316 UQI opval = 2;
15317 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15318 written |= (1 << 3);
15319 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15320 }
15321}
15322} else {
15323 {
15324 UQI opval = 0;
15325 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15326 written |= (1 << 3);
15327 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15328 }
15329}
15330
15331 abuf->written = written;
15332 return vpc;
15333#undef FLD
15334}
15335
15336/* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15337
15338static SEM_PC
15339SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15340{
15341#define FLD(f) abuf->fields.sfmt_cckeq.f
15342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15343 int UNUSED written = 0;
15344 IADDR UNUSED pc = abuf->addr;
15345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15346
15347if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15348if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15349 {
15350 UQI opval = 3;
15351 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15352 written |= (1 << 3);
15353 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15354 }
15355} else {
15356 {
15357 UQI opval = 2;
15358 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15359 written |= (1 << 3);
15360 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15361 }
15362}
15363} else {
15364 {
15365 UQI opval = 0;
15366 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15367 written |= (1 << 3);
15368 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15369 }
15370}
15371
15372 abuf->written = written;
15373 return vpc;
15374#undef FLD
15375}
15376
15377/* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15378
15379static SEM_PC
15380SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15381{
15382#define FLD(f) abuf->fields.sfmt_cckeq.f
15383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15384 int UNUSED written = 0;
15385 IADDR UNUSED pc = abuf->addr;
15386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15387
15388if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15389if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15390 {
15391 UQI opval = 3;
15392 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15393 written |= (1 << 3);
15394 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15395 }
15396} else {
15397 {
15398 UQI opval = 2;
15399 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15400 written |= (1 << 3);
15401 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15402 }
15403}
15404} else {
15405 {
15406 UQI opval = 0;
15407 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15408 written |= (1 << 3);
15409 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15410 }
15411}
15412
15413 abuf->written = written;
15414 return vpc;
15415#undef FLD
15416}
15417
15418/* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15419
15420static SEM_PC
15421SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15422{
15423#define FLD(f) abuf->fields.sfmt_cfckne.f
15424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15425 int UNUSED written = 0;
15426 IADDR UNUSED pc = abuf->addr;
15427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15428
15429if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15430 {
15431 UQI opval = 3;
15432 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15433 written |= (1 << 2);
15434 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15435 }
15436} else {
15437 {
15438 UQI opval = 0;
15439 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15440 written |= (1 << 2);
15441 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15442 }
15443}
15444
15445 abuf->written = written;
15446 return vpc;
15447#undef FLD
15448}
15449
15450/* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15451
15452static SEM_PC
15453SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15454{
15455#define FLD(f) abuf->fields.sfmt_cfckne.f
15456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15457 int UNUSED written = 0;
15458 IADDR UNUSED pc = abuf->addr;
15459 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15460
15461if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15462 {
15463 UQI opval = 2;
15464 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15465 written |= (1 << 2);
15466 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15467 }
15468} else {
15469 {
15470 UQI opval = 0;
15471 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15472 written |= (1 << 2);
15473 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15474 }
15475}
15476
15477 abuf->written = written;
15478 return vpc;
15479#undef FLD
15480}
15481
15482/* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15483
15484static SEM_PC
15485SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15486{
15487#define FLD(f) abuf->fields.sfmt_cfckne.f
15488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15489 int UNUSED written = 0;
15490 IADDR UNUSED pc = abuf->addr;
15491 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15492
15493if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15494if (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))))) {
15495 {
15496 UQI opval = 3;
15497 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15498 written |= (1 << 3);
15499 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15500 }
15501} else {
15502 {
15503 UQI opval = 2;
15504 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15505 written |= (1 << 3);
15506 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15507 }
15508}
15509} else {
15510 {
15511 UQI opval = 0;
15512 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15513 written |= (1 << 3);
15514 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15515 }
15516}
15517
15518 abuf->written = written;
15519 return vpc;
15520#undef FLD
15521}
15522
15523/* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15524
15525static SEM_PC
15526SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15527{
15528#define FLD(f) abuf->fields.sfmt_cfckne.f
15529 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15530 int UNUSED written = 0;
15531 IADDR UNUSED pc = abuf->addr;
15532 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15533
15534if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15535if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15536 {
15537 UQI opval = 3;
15538 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15539 written |= (1 << 3);
15540 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15541 }
15542} else {
15543 {
15544 UQI opval = 2;
15545 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15546 written |= (1 << 3);
15547 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15548 }
15549}
15550} else {
15551 {
15552 UQI opval = 0;
15553 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15554 written |= (1 << 3);
15555 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15556 }
15557}
15558
15559 abuf->written = written;
15560 return vpc;
15561#undef FLD
15562}
15563
15564/* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15565
15566static SEM_PC
15567SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15568{
15569#define FLD(f) abuf->fields.sfmt_cfckne.f
15570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15571 int UNUSED written = 0;
15572 IADDR UNUSED pc = abuf->addr;
15573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15574
15575if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15576if (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)))) {
15577 {
15578 UQI opval = 3;
15579 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15580 written |= (1 << 3);
15581 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15582 }
15583} else {
15584 {
15585 UQI opval = 2;
15586 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15587 written |= (1 << 3);
15588 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15589 }
15590}
15591} else {
15592 {
15593 UQI opval = 0;
15594 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15595 written |= (1 << 3);
15596 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15597 }
15598}
15599
15600 abuf->written = written;
15601 return vpc;
15602#undef FLD
15603}
15604
15605/* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15606
15607static SEM_PC
15608SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15609{
15610#define FLD(f) abuf->fields.sfmt_cfckne.f
15611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15612 int UNUSED written = 0;
15613 IADDR UNUSED pc = abuf->addr;
15614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15615
15616if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15617if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15618 {
15619 UQI opval = 3;
15620 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15621 written |= (1 << 3);
15622 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15623 }
15624} else {
15625 {
15626 UQI opval = 2;
15627 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15628 written |= (1 << 3);
15629 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15630 }
15631}
15632} else {
15633 {
15634 UQI opval = 0;
15635 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15636 written |= (1 << 3);
15637 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15638 }
15639}
15640
15641 abuf->written = written;
15642 return vpc;
15643#undef FLD
15644}
15645
15646/* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15647
15648static SEM_PC
15649SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15650{
15651#define FLD(f) abuf->fields.sfmt_cfckne.f
15652 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15653 int UNUSED written = 0;
15654 IADDR UNUSED pc = abuf->addr;
15655 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15656
15657if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15658if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15659 {
15660 UQI opval = 3;
15661 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15662 written |= (1 << 3);
15663 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15664 }
15665} else {
15666 {
15667 UQI opval = 2;
15668 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15669 written |= (1 << 3);
15670 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15671 }
15672}
15673} else {
15674 {
15675 UQI opval = 0;
15676 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15677 written |= (1 << 3);
15678 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15679 }
15680}
15681
15682 abuf->written = written;
15683 return vpc;
15684#undef FLD
15685}
15686
15687/* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15688
15689static SEM_PC
15690SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15691{
15692#define FLD(f) abuf->fields.sfmt_cfckne.f
15693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15694 int UNUSED written = 0;
15695 IADDR UNUSED pc = abuf->addr;
15696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15697
15698if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15699if (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)))) {
15700 {
15701 UQI opval = 3;
15702 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15703 written |= (1 << 3);
15704 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15705 }
15706} else {
15707 {
15708 UQI opval = 2;
15709 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15710 written |= (1 << 3);
15711 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15712 }
15713}
15714} else {
15715 {
15716 UQI opval = 0;
15717 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15718 written |= (1 << 3);
15719 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15720 }
15721}
15722
15723 abuf->written = written;
15724 return vpc;
15725#undef FLD
15726}
15727
15728/* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15729
15730static SEM_PC
15731SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15732{
15733#define FLD(f) abuf->fields.sfmt_cfckne.f
15734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15735 int UNUSED written = 0;
15736 IADDR UNUSED pc = abuf->addr;
15737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15738
15739if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15740if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15741 {
15742 UQI opval = 3;
15743 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15744 written |= (1 << 3);
15745 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15746 }
15747} else {
15748 {
15749 UQI opval = 2;
15750 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15751 written |= (1 << 3);
15752 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15753 }
15754}
15755} else {
15756 {
15757 UQI opval = 0;
15758 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15759 written |= (1 << 3);
15760 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15761 }
15762}
15763
15764 abuf->written = written;
15765 return vpc;
15766#undef FLD
15767}
15768
15769/* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15770
15771static SEM_PC
15772SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15773{
15774#define FLD(f) abuf->fields.sfmt_cfckne.f
15775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15776 int UNUSED written = 0;
15777 IADDR UNUSED pc = abuf->addr;
15778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15779
15780if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15781if (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))))) {
15782 {
15783 UQI opval = 3;
15784 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15785 written |= (1 << 3);
15786 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15787 }
15788} else {
15789 {
15790 UQI opval = 2;
15791 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15792 written |= (1 << 3);
15793 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15794 }
15795}
15796} else {
15797 {
15798 UQI opval = 0;
15799 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15800 written |= (1 << 3);
15801 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15802 }
15803}
15804
15805 abuf->written = written;
15806 return vpc;
15807#undef FLD
15808}
15809
15810/* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15811
15812static SEM_PC
15813SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15814{
15815#define FLD(f) abuf->fields.sfmt_cfckne.f
15816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15817 int UNUSED written = 0;
15818 IADDR UNUSED pc = abuf->addr;
15819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15820
15821if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15822if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15823 {
15824 UQI opval = 3;
15825 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15826 written |= (1 << 3);
15827 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15828 }
15829} else {
15830 {
15831 UQI opval = 2;
15832 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15833 written |= (1 << 3);
15834 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15835 }
15836}
15837} else {
15838 {
15839 UQI opval = 0;
15840 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15841 written |= (1 << 3);
15842 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15843 }
15844}
15845
15846 abuf->written = written;
15847 return vpc;
15848#undef FLD
15849}
15850
15851/* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15852
15853static SEM_PC
15854SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15855{
15856#define FLD(f) abuf->fields.sfmt_cfckne.f
15857 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15858 int UNUSED written = 0;
15859 IADDR UNUSED pc = abuf->addr;
15860 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15861
15862if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15863if (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)))) {
15864 {
15865 UQI opval = 3;
15866 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15867 written |= (1 << 3);
15868 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15869 }
15870} else {
15871 {
15872 UQI opval = 2;
15873 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15874 written |= (1 << 3);
15875 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15876 }
15877}
15878} else {
15879 {
15880 UQI opval = 0;
15881 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15882 written |= (1 << 3);
15883 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15884 }
15885}
15886
15887 abuf->written = written;
15888 return vpc;
15889#undef FLD
15890}
15891
15892/* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15893
15894static SEM_PC
15895SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15896{
15897#define FLD(f) abuf->fields.sfmt_cfckne.f
15898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15899 int UNUSED written = 0;
15900 IADDR UNUSED pc = abuf->addr;
15901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15902
15903if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15904if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15905 {
15906 UQI opval = 3;
15907 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15908 written |= (1 << 3);
15909 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15910 }
15911} else {
15912 {
15913 UQI opval = 2;
15914 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15915 written |= (1 << 3);
15916 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15917 }
15918}
15919} else {
15920 {
15921 UQI opval = 0;
15922 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15923 written |= (1 << 3);
15924 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15925 }
15926}
15927
15928 abuf->written = written;
15929 return vpc;
15930#undef FLD
15931}
15932
15933/* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
15934
15935static SEM_PC
15936SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15937{
15938#define FLD(f) abuf->fields.sfmt_cfckne.f
15939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15940 int UNUSED written = 0;
15941 IADDR UNUSED pc = abuf->addr;
15942 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15943
15944if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15945if (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))))) {
15946 {
15947 UQI opval = 3;
15948 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15949 written |= (1 << 3);
15950 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15951 }
15952} else {
15953 {
15954 UQI opval = 2;
15955 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15956 written |= (1 << 3);
15957 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15958 }
15959}
15960} else {
15961 {
15962 UQI opval = 0;
15963 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15964 written |= (1 << 3);
15965 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15966 }
15967}
15968
15969 abuf->written = written;
15970 return vpc;
15971#undef FLD
15972}
15973
15974/* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
15975
15976static SEM_PC
15977SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15978{
15979#define FLD(f) abuf->fields.sfmt_cfckne.f
15980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15981 int UNUSED written = 0;
15982 IADDR UNUSED pc = abuf->addr;
15983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15984
15985if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15986if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
15987 {
15988 UQI opval = 3;
15989 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15990 written |= (1 << 3);
15991 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15992 }
15993} else {
15994 {
15995 UQI opval = 2;
15996 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15997 written |= (1 << 3);
15998 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15999 }
16000}
16001} else {
16002 {
16003 UQI opval = 0;
16004 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16005 written |= (1 << 3);
16006 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16007 }
16008}
16009
16010 abuf->written = written;
16011 return vpc;
16012#undef FLD
16013}
16014
16015/* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16016
16017static SEM_PC
16018SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16019{
16020#define FLD(f) abuf->fields.sfmt_cfckne.f
16021 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16022 int UNUSED written = 0;
16023 IADDR UNUSED pc = abuf->addr;
16024 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16025
16026if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16027if (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))))) {
16028 {
16029 UQI opval = 3;
16030 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16031 written |= (1 << 3);
16032 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16033 }
16034} else {
16035 {
16036 UQI opval = 2;
16037 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16038 written |= (1 << 3);
16039 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16040 }
16041}
16042} else {
16043 {
16044 UQI opval = 0;
16045 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16046 written |= (1 << 3);
16047 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16048 }
16049}
16050
16051 abuf->written = written;
16052 return vpc;
16053#undef FLD
16054}
16055
16056/* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16057
16058static SEM_PC
16059SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16060{
16061#define FLD(f) abuf->fields.sfmt_cjmpl.f
16062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16063 int UNUSED written = 0;
16064 IADDR UNUSED pc = abuf->addr;
16065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16066
16067if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16068{
16069if (EQSI (FLD (f_LI), 1)) {
16070frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16071}
16072 {
16073 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16074 sim_queue_pc_write (current_cpu, opval);
16075 written |= (1 << 6);
16076 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16077 }
16078frvbf_model_branch (current_cpu, pc, 2);
16079}
16080}
16081
16082 abuf->written = written;
16083 return vpc;
16084#undef FLD
16085}
16086
16087/* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16088
16089static SEM_PC
16090SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16091{
16092#define FLD(f) abuf->fields.sfmt_cjmpl.f
16093 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16094 int UNUSED written = 0;
16095 IADDR UNUSED pc = abuf->addr;
16096 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16097
16098if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16099{
16100if (EQSI (FLD (f_LI), 1)) {
16101frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16102}
16103 {
16104 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16105 sim_queue_pc_write (current_cpu, opval);
16106 written |= (1 << 6);
16107 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16108 }
16109frvbf_model_branch (current_cpu, pc, 2);
16110}
16111}
16112
16113 abuf->written = written;
16114 return vpc;
16115#undef FLD
16116}
16117
16118/* ici: ici$pack @($GRi,$GRj) */
16119
16120static SEM_PC
16121SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16122{
16123#define FLD(f) abuf->fields.sfmt_icpl.f
16124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16125 int UNUSED written = 0;
16126 IADDR UNUSED pc = abuf->addr;
16127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16128
16129frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16130
16131 return vpc;
16132#undef FLD
16133}
16134
16135/* dci: dci$pack @($GRi,$GRj) */
16136
16137static SEM_PC
16138SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16139{
16140#define FLD(f) abuf->fields.sfmt_icpl.f
16141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16142 int UNUSED written = 0;
16143 IADDR UNUSED pc = abuf->addr;
16144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16145
16146frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16147
16148 return vpc;
16149#undef FLD
16150}
16151
16152/* icei: icei$pack @($GRi,$GRj),$ae */
16153
16154static SEM_PC
16155SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16156{
16157#define FLD(f) abuf->fields.sfmt_icei.f
16158 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16159 int UNUSED written = 0;
16160 IADDR UNUSED pc = abuf->addr;
16161 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16162
16163if (EQSI (FLD (f_ae), 0)) {
16164frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16165} else {
16166frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16167}
16168
16169 return vpc;
16170#undef FLD
16171}
16172
16173/* dcei: dcei$pack @($GRi,$GRj),$ae */
16174
16175static SEM_PC
16176SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16177{
16178#define FLD(f) abuf->fields.sfmt_icei.f
16179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16180 int UNUSED written = 0;
16181 IADDR UNUSED pc = abuf->addr;
16182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16183
16184if (EQSI (FLD (f_ae), 0)) {
16185frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16186} else {
16187frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16188}
16189
16190 return vpc;
16191#undef FLD
16192}
16193
16194/* dcf: dcf$pack @($GRi,$GRj) */
16195
16196static SEM_PC
16197SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16198{
16199#define FLD(f) abuf->fields.sfmt_icpl.f
16200 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16201 int UNUSED written = 0;
16202 IADDR UNUSED pc = abuf->addr;
16203 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16204
16205frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16206
16207 return vpc;
16208#undef FLD
16209}
16210
16211/* dcef: dcef$pack @($GRi,$GRj),$ae */
16212
16213static SEM_PC
16214SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16215{
16216#define FLD(f) abuf->fields.sfmt_icei.f
16217 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16218 int UNUSED written = 0;
16219 IADDR UNUSED pc = abuf->addr;
16220 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16221
16222if (EQSI (FLD (f_ae), 0)) {
16223frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16224} else {
16225frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16226}
16227
16228 return vpc;
16229#undef FLD
16230}
16231
16232/* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16233
16234static SEM_PC
16235SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16236{
2310652a 16237#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16239 int UNUSED written = 0;
16240 IADDR UNUSED pc = abuf->addr;
16241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16242
16243((void) 0); /*nop*/
16244
16245 return vpc;
16246#undef FLD
16247}
16248
16249/* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16250
16251static SEM_PC
16252SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16253{
2310652a 16254#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16256 int UNUSED written = 0;
16257 IADDR UNUSED pc = abuf->addr;
16258 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16259
16260((void) 0); /*nop*/
16261
16262 return vpc;
16263#undef FLD
16264}
16265
16266/* itlbi: itlbi$pack @($GRi,$GRj) */
16267
16268static SEM_PC
16269SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16270{
2310652a 16271#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16273 int UNUSED written = 0;
16274 IADDR UNUSED pc = abuf->addr;
16275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16276
16277((void) 0); /*nop*/
16278
16279 return vpc;
16280#undef FLD
16281}
16282
16283/* dtlbi: dtlbi$pack @($GRi,$GRj) */
16284
16285static SEM_PC
16286SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16287{
2310652a 16288#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16289 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16290 int UNUSED written = 0;
16291 IADDR UNUSED pc = abuf->addr;
16292 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16293
16294((void) 0); /*nop*/
16295
16296 return vpc;
16297#undef FLD
16298}
16299
16300/* icpl: icpl$pack $GRi,$GRj,$lock */
16301
16302static SEM_PC
16303SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16304{
16305#define FLD(f) abuf->fields.sfmt_icpl.f
16306 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16307 int UNUSED written = 0;
16308 IADDR UNUSED pc = abuf->addr;
16309 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16310
16311frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16312
16313 return vpc;
16314#undef FLD
16315}
16316
16317/* dcpl: dcpl$pack $GRi,$GRj,$lock */
16318
16319static SEM_PC
16320SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16321{
16322#define FLD(f) abuf->fields.sfmt_icpl.f
16323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16324 int UNUSED written = 0;
16325 IADDR UNUSED pc = abuf->addr;
16326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16327
16328frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16329
16330 return vpc;
16331#undef FLD
16332}
16333
16334/* icul: icul$pack $GRi */
16335
16336static SEM_PC
16337SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16338{
16339#define FLD(f) abuf->fields.sfmt_jmpil.f
16340 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16341 int UNUSED written = 0;
16342 IADDR UNUSED pc = abuf->addr;
16343 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16344
16345frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16346
16347 return vpc;
16348#undef FLD
16349}
16350
16351/* dcul: dcul$pack $GRi */
16352
16353static SEM_PC
16354SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16355{
16356#define FLD(f) abuf->fields.sfmt_jmpil.f
16357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16358 int UNUSED written = 0;
16359 IADDR UNUSED pc = abuf->addr;
16360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16361
16362frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16363
16364 return vpc;
16365#undef FLD
16366}
16367
16368/* bar: bar$pack */
16369
16370static SEM_PC
16371SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16372{
2310652a 16373#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16375 int UNUSED written = 0;
16376 IADDR UNUSED pc = abuf->addr;
16377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16378
16379((void) 0); /*nop*/
16380
16381 return vpc;
16382#undef FLD
16383}
16384
16385/* membar: membar$pack */
16386
16387static SEM_PC
16388SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16389{
2310652a 16390#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16392 int UNUSED written = 0;
16393 IADDR UNUSED pc = abuf->addr;
16394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16395
16396((void) 0); /*nop*/
16397
16398 return vpc;
16399#undef FLD
16400}
16401
676a64f4
RS
16402/* lrai: lrai$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16403
16404static SEM_PC
16405SEM_FN_NAME (frvbf,lrai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16406{
2310652a 16407#define FLD(f) abuf->fields.sfmt_empty.f
676a64f4
RS
16408 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16409 int UNUSED written = 0;
16410 IADDR UNUSED pc = abuf->addr;
16411 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16412
16413((void) 0); /*nop*/
16414
16415 return vpc;
16416#undef FLD
16417}
16418
16419/* lrad: lrad$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16420
16421static SEM_PC
16422SEM_FN_NAME (frvbf,lrad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16423{
2310652a 16424#define FLD(f) abuf->fields.sfmt_empty.f
676a64f4
RS
16425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16426 int UNUSED written = 0;
16427 IADDR UNUSED pc = abuf->addr;
16428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16429
16430((void) 0); /*nop*/
16431
16432 return vpc;
16433#undef FLD
16434}
16435
16436/* tlbpr: tlbpr$pack $GRi,$GRj,$TLBPRopx,$TLBPRL */
16437
16438static SEM_PC
16439SEM_FN_NAME (frvbf,tlbpr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16440{
2310652a 16441#define FLD(f) abuf->fields.sfmt_empty.f
676a64f4
RS
16442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16443 int UNUSED written = 0;
16444 IADDR UNUSED pc = abuf->addr;
16445 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16446
16447((void) 0); /*nop*/
16448
16449 return vpc;
16450#undef FLD
16451}
16452
b34f6357
DB
16453/* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16454
16455static SEM_PC
16456SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16457{
2310652a 16458#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16459 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16460 int UNUSED written = 0;
16461 IADDR UNUSED pc = abuf->addr;
16462 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16463
16464((void) 0); /*nop*/
16465
16466 return vpc;
16467#undef FLD
16468}
16469
16470/* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16471
16472static SEM_PC
16473SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16474{
2310652a 16475#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16477 int UNUSED written = 0;
16478 IADDR UNUSED pc = abuf->addr;
16479 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16480
16481((void) 0); /*nop*/
16482
16483 return vpc;
16484#undef FLD
16485}
16486
16487/* clrgr: clrgr$pack $GRk */
16488
16489static SEM_PC
16490SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16491{
153431d6 16492#define FLD(f) abuf->fields.sfmt_swapi.f
b34f6357
DB
16493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16494 int UNUSED written = 0;
16495 IADDR UNUSED pc = abuf->addr;
16496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16497
153431d6
DB
16498{
16499frv_ref_SI (GET_H_GR (FLD (f_GRk)));
b34f6357 16500frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
153431d6 16501}
b34f6357
DB
16502
16503 return vpc;
16504#undef FLD
16505}
16506
16507/* clrfr: clrfr$pack $FRk */
16508
16509static SEM_PC
16510SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16511{
153431d6 16512#define FLD(f) abuf->fields.sfmt_cfmadds.f
b34f6357
DB
16513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16514 int UNUSED written = 0;
16515 IADDR UNUSED pc = abuf->addr;
16516 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16517
153431d6
DB
16518{
16519frv_ref_SI (GET_H_FR (FLD (f_FRk)));
b34f6357 16520frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
153431d6 16521}
b34f6357
DB
16522
16523 return vpc;
16524#undef FLD
16525}
16526
16527/* clrga: clrga$pack */
16528
16529static SEM_PC
16530SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16531{
2310652a 16532#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16534 int UNUSED written = 0;
16535 IADDR UNUSED pc = abuf->addr;
16536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16537
16538frvbf_clear_ne_flags (current_cpu, -1, 0);
16539
16540 return vpc;
16541#undef FLD
16542}
16543
16544/* clrfa: clrfa$pack */
16545
16546static SEM_PC
16547SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16548{
2310652a 16549#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16551 int UNUSED written = 0;
16552 IADDR UNUSED pc = abuf->addr;
16553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16554
16555frvbf_clear_ne_flags (current_cpu, -1, 1);
16556
16557 return vpc;
16558#undef FLD
16559}
16560
16561/* commitgr: commitgr$pack $GRk */
16562
16563static SEM_PC
16564SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16565{
16566#define FLD(f) abuf->fields.sfmt_setlos.f
16567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16568 int UNUSED written = 0;
16569 IADDR UNUSED pc = abuf->addr;
16570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16571
16572frvbf_commit (current_cpu, FLD (f_GRk), 0);
16573
16574 return vpc;
16575#undef FLD
16576}
16577
16578/* commitfr: commitfr$pack $FRk */
16579
16580static SEM_PC
16581SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16582{
16583#define FLD(f) abuf->fields.sfmt_mhsethis.f
16584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16585 int UNUSED written = 0;
16586 IADDR UNUSED pc = abuf->addr;
16587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16588
16589frvbf_commit (current_cpu, FLD (f_FRk), 1);
16590
16591 return vpc;
16592#undef FLD
16593}
16594
16595/* commitga: commitga$pack */
16596
16597static SEM_PC
16598SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16599{
2310652a 16600#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16602 int UNUSED written = 0;
16603 IADDR UNUSED pc = abuf->addr;
16604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16605
16606frvbf_commit (current_cpu, -1, 0);
16607
16608 return vpc;
16609#undef FLD
16610}
16611
16612/* commitfa: commitfa$pack */
16613
16614static SEM_PC
16615SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16616{
2310652a 16617#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
16618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16619 int UNUSED written = 0;
16620 IADDR UNUSED pc = abuf->addr;
16621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16622
16623frvbf_commit (current_cpu, -1, 1);
16624
16625 return vpc;
16626#undef FLD
16627}
16628
16629/* fitos: fitos$pack $FRintj,$FRk */
16630
16631static SEM_PC
16632SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16633{
16634#define FLD(f) abuf->fields.sfmt_fditos.f
16635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16636 int UNUSED written = 0;
16637 IADDR UNUSED pc = abuf->addr;
16638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16639
16640 {
d2c7a1a6 16641 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
16642 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16643 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16644 }
16645
16646 return vpc;
16647#undef FLD
16648}
16649
16650/* fstoi: fstoi$pack $FRj,$FRintk */
16651
16652static SEM_PC
16653SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16654{
16655#define FLD(f) abuf->fields.sfmt_fdstoi.f
16656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16657 int UNUSED written = 0;
16658 IADDR UNUSED pc = abuf->addr;
16659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16660
16661 {
d2c7a1a6 16662 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16663 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16664 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16665 }
16666
16667 return vpc;
16668#undef FLD
16669}
16670
16671/* fitod: fitod$pack $FRintj,$FRdoublek */
16672
16673static SEM_PC
16674SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16675{
16676#define FLD(f) abuf->fields.sfmt_fitod.f
16677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16678 int UNUSED written = 0;
16679 IADDR UNUSED pc = abuf->addr;
16680 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16681
16682 {
d2c7a1a6 16683 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
16684 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16685 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16686 }
16687
16688 return vpc;
16689#undef FLD
16690}
16691
16692/* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16693
16694static SEM_PC
16695SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16696{
16697#define FLD(f) abuf->fields.sfmt_fdtoi.f
16698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16699 int UNUSED written = 0;
16700 IADDR UNUSED pc = abuf->addr;
16701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16702
16703 {
d2c7a1a6 16704 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
16705 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16706 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16707 }
16708
16709 return vpc;
16710#undef FLD
16711}
16712
16713/* fditos: fditos$pack $FRintj,$FRk */
16714
16715static SEM_PC
16716SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16717{
16718#define FLD(f) abuf->fields.sfmt_fditos.f
16719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16720 int UNUSED written = 0;
16721 IADDR UNUSED pc = abuf->addr;
16722 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16723
16724{
16725 {
d2c7a1a6 16726 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
16727 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16728 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16729 }
16730 {
d2c7a1a6 16731 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 16732 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16733 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16734 }
16735}
16736
16737 return vpc;
16738#undef FLD
16739}
16740
16741/* fdstoi: fdstoi$pack $FRj,$FRintk */
16742
16743static SEM_PC
16744SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16745{
16746#define FLD(f) abuf->fields.sfmt_fdstoi.f
16747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16748 int UNUSED written = 0;
16749 IADDR UNUSED pc = abuf->addr;
16750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16751
16752{
16753 {
d2c7a1a6 16754 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16755 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16756 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16757 }
16758 {
d2c7a1a6 16759 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 16760 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16761 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16762 }
16763}
16764
16765 return vpc;
16766#undef FLD
16767}
16768
16769/* nfditos: nfditos$pack $FRintj,$FRk */
16770
16771static SEM_PC
16772SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16773{
16774#define FLD(f) abuf->fields.sfmt_fditos.f
16775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16776 int UNUSED written = 0;
16777 IADDR UNUSED pc = abuf->addr;
16778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16779
16780{
16781frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16782 {
d2c7a1a6 16783 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
16784 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16785 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16786 }
16787frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16788 {
d2c7a1a6 16789 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 16790 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16791 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16792 }
16793}
16794
16795 return vpc;
16796#undef FLD
16797}
16798
16799/* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16800
16801static SEM_PC
16802SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16803{
16804#define FLD(f) abuf->fields.sfmt_fdstoi.f
16805 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16806 int UNUSED written = 0;
16807 IADDR UNUSED pc = abuf->addr;
16808 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16809
16810{
16811frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16812 {
d2c7a1a6 16813 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16814 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16815 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16816 }
16817frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16818 {
d2c7a1a6 16819 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 16820 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16821 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16822 }
16823}
16824
16825 return vpc;
16826#undef FLD
16827}
16828
16829/* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16830
16831static SEM_PC
16832SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16833{
16834#define FLD(f) abuf->fields.sfmt_cfitos.f
16835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16836 int UNUSED written = 0;
16837 IADDR UNUSED pc = abuf->addr;
16838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16839
16840if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16841 {
d2c7a1a6 16842 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
16843 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16844 written |= (1 << 3);
16845 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16846 }
16847}
16848
16849 abuf->written = written;
16850 return vpc;
16851#undef FLD
16852}
16853
16854/* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16855
16856static SEM_PC
16857SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16858{
16859#define FLD(f) abuf->fields.sfmt_cfstoi.f
16860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16861 int UNUSED written = 0;
16862 IADDR UNUSED pc = abuf->addr;
16863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16864
16865if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16866 {
d2c7a1a6 16867 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16868 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16869 written |= (1 << 3);
16870 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16871 }
16872}
16873
16874 abuf->written = written;
16875 return vpc;
16876#undef FLD
16877}
16878
16879/* nfitos: nfitos$pack $FRintj,$FRk */
16880
16881static SEM_PC
16882SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16883{
16884#define FLD(f) abuf->fields.sfmt_fditos.f
16885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16886 int UNUSED written = 0;
16887 IADDR UNUSED pc = abuf->addr;
16888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16889
16890{
16891frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16892 {
d2c7a1a6 16893 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
16894 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16895 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16896 }
16897}
16898
16899 return vpc;
16900#undef FLD
16901}
16902
16903/* nfstoi: nfstoi$pack $FRj,$FRintk */
16904
16905static SEM_PC
16906SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16907{
16908#define FLD(f) abuf->fields.sfmt_fdstoi.f
16909 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16910 int UNUSED written = 0;
16911 IADDR UNUSED pc = abuf->addr;
16912 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16913
16914{
16915frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16916 {
d2c7a1a6 16917 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
b34f6357
DB
16918 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16919 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16920 }
16921}
16922
16923 return vpc;
16924#undef FLD
16925}
16926
16927/* fmovs: fmovs$pack $FRj,$FRk */
16928
16929static SEM_PC
16930SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16931{
16932#define FLD(f) abuf->fields.sfmt_cfmadds.f
16933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16934 int UNUSED written = 0;
16935 IADDR UNUSED pc = abuf->addr;
16936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16937
16938 {
16939 SF opval = GET_H_FR (FLD (f_FRj));
16940 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16941 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16942 }
16943
16944 return vpc;
16945#undef FLD
16946}
16947
16948/* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16949
16950static SEM_PC
16951SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16952{
16953#define FLD(f) abuf->fields.sfmt_fmaddd.f
16954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16955 int UNUSED written = 0;
16956 IADDR UNUSED pc = abuf->addr;
16957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16958
16959 {
16960 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16961 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16962 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16963 }
16964
16965 return vpc;
16966#undef FLD
16967}
16968
16969/* fdmovs: fdmovs$pack $FRj,$FRk */
16970
16971static SEM_PC
16972SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16973{
16974#define FLD(f) abuf->fields.sfmt_fdmadds.f
16975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16976 int UNUSED written = 0;
16977 IADDR UNUSED pc = abuf->addr;
16978 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16979
16980{
16981 {
16982 SF opval = GET_H_FR (FLD (f_FRj));
16983 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16984 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16985 }
16986 {
b29791a8
DE
16987 SF opval = GET_H_FR (ADDSI (FLD (f_FRj), 1));
16988 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
16989 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16990 }
16991}
16992
16993 return vpc;
16994#undef FLD
16995}
16996
16997/* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
16998
16999static SEM_PC
17000SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17001{
17002#define FLD(f) abuf->fields.sfmt_cfmadds.f
17003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17004 int UNUSED written = 0;
17005 IADDR UNUSED pc = abuf->addr;
17006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17007
17008if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17009 {
17010 SF opval = GET_H_FR (FLD (f_FRj));
17011 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17012 written |= (1 << 3);
17013 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17014 }
17015}
17016
17017 abuf->written = written;
17018 return vpc;
17019#undef FLD
17020}
17021
17022/* fnegs: fnegs$pack $FRj,$FRk */
17023
17024static SEM_PC
17025SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17026{
17027#define FLD(f) abuf->fields.sfmt_cfmadds.f
17028 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17029 int UNUSED written = 0;
17030 IADDR UNUSED pc = abuf->addr;
17031 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17032
17033 {
79e59fe6 17034 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17035 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17036 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17037 }
17038
17039 return vpc;
17040#undef FLD
17041}
17042
17043/* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17044
17045static SEM_PC
17046SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17047{
17048#define FLD(f) abuf->fields.sfmt_fmaddd.f
17049 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17050 int UNUSED written = 0;
17051 IADDR UNUSED pc = abuf->addr;
17052 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17053
17054 {
79e59fe6 17055 DF opval = CGEN_CPU_FPU (current_cpu)->ops->negdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17056 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17057 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17058 }
17059
17060 return vpc;
17061#undef FLD
17062}
17063
17064/* fdnegs: fdnegs$pack $FRj,$FRk */
17065
17066static SEM_PC
17067SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17068{
17069#define FLD(f) abuf->fields.sfmt_fdmadds.f
17070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17071 int UNUSED written = 0;
17072 IADDR UNUSED pc = abuf->addr;
17073 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17074
17075{
17076 {
79e59fe6 17077 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17078 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17079 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17080 }
17081 {
b29791a8
DE
17082 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17083 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
17084 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17085 }
17086}
17087
17088 return vpc;
17089#undef FLD
17090}
17091
17092/* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17093
17094static SEM_PC
17095SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17096{
17097#define FLD(f) abuf->fields.sfmt_cfmadds.f
17098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17099 int UNUSED written = 0;
17100 IADDR UNUSED pc = abuf->addr;
17101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17102
17103if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17104 {
79e59fe6 17105 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17106 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17107 written |= (1 << 3);
17108 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17109 }
17110}
17111
17112 abuf->written = written;
17113 return vpc;
17114#undef FLD
17115}
17116
17117/* fabss: fabss$pack $FRj,$FRk */
17118
17119static SEM_PC
17120SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17121{
17122#define FLD(f) abuf->fields.sfmt_cfmadds.f
17123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17124 int UNUSED written = 0;
17125 IADDR UNUSED pc = abuf->addr;
17126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17127
17128 {
79e59fe6 17129 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17130 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17131 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17132 }
17133
17134 return vpc;
17135#undef FLD
17136}
17137
17138/* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17139
17140static SEM_PC
17141SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17142{
17143#define FLD(f) abuf->fields.sfmt_fmaddd.f
17144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17145 int UNUSED written = 0;
17146 IADDR UNUSED pc = abuf->addr;
17147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17148
17149 {
79e59fe6 17150 DF opval = CGEN_CPU_FPU (current_cpu)->ops->absdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17151 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17152 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17153 }
17154
17155 return vpc;
17156#undef FLD
17157}
17158
17159/* fdabss: fdabss$pack $FRj,$FRk */
17160
17161static SEM_PC
17162SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17163{
17164#define FLD(f) abuf->fields.sfmt_fdmadds.f
17165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17166 int UNUSED written = 0;
17167 IADDR UNUSED pc = abuf->addr;
17168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17169
17170{
17171 {
79e59fe6 17172 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17173 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17174 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17175 }
17176 {
b29791a8
DE
17177 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17178 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
17179 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17180 }
17181}
17182
17183 return vpc;
17184#undef FLD
17185}
17186
17187/* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17188
17189static SEM_PC
17190SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17191{
17192#define FLD(f) abuf->fields.sfmt_cfmadds.f
17193 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17194 int UNUSED written = 0;
17195 IADDR UNUSED pc = abuf->addr;
17196 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17197
17198if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17199 {
79e59fe6 17200 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17201 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17202 written |= (1 << 3);
17203 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17204 }
17205}
17206
17207 abuf->written = written;
17208 return vpc;
17209#undef FLD
17210}
17211
17212/* fsqrts: fsqrts$pack $FRj,$FRk */
17213
17214static SEM_PC
17215SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17216{
17217#define FLD(f) abuf->fields.sfmt_cfmadds.f
17218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17219 int UNUSED written = 0;
17220 IADDR UNUSED pc = abuf->addr;
17221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17222
17223 {
79e59fe6 17224 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17225 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17226 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17227 }
17228
17229 return vpc;
17230#undef FLD
17231}
17232
17233/* fdsqrts: fdsqrts$pack $FRj,$FRk */
17234
17235static SEM_PC
17236SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17237{
17238#define FLD(f) abuf->fields.sfmt_fdmadds.f
17239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17240 int UNUSED written = 0;
17241 IADDR UNUSED pc = abuf->addr;
17242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17243
17244{
17245 {
79e59fe6 17246 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17247 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17248 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17249 }
17250 {
b29791a8
DE
17251 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17252 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
17253 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17254 }
17255}
17256
17257 return vpc;
17258#undef FLD
17259}
17260
17261/* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17262
17263static SEM_PC
17264SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17265{
17266#define FLD(f) abuf->fields.sfmt_fdmadds.f
17267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17268 int UNUSED written = 0;
17269 IADDR UNUSED pc = abuf->addr;
17270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17271
17272{
17273frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17274 {
79e59fe6 17275 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17276 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17277 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17278 }
17279frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17280 {
b29791a8
DE
17281 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17282 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
17283 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17284 }
17285}
17286
17287 return vpc;
17288#undef FLD
17289}
17290
17291/* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17292
17293static SEM_PC
17294SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17295{
17296#define FLD(f) abuf->fields.sfmt_fmaddd.f
17297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17298 int UNUSED written = 0;
17299 IADDR UNUSED pc = abuf->addr;
17300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17301
17302 {
79e59fe6 17303 DF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
b34f6357
DB
17304 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17305 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17306 }
17307
17308 return vpc;
17309#undef FLD
17310}
17311
17312/* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17313
17314static SEM_PC
17315SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17316{
17317#define FLD(f) abuf->fields.sfmt_cfmadds.f
17318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17319 int UNUSED written = 0;
17320 IADDR UNUSED pc = abuf->addr;
17321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17322
17323if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17324 {
79e59fe6 17325 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17326 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17327 written |= (1 << 3);
17328 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17329 }
17330}
17331
17332 abuf->written = written;
17333 return vpc;
17334#undef FLD
17335}
17336
17337/* nfsqrts: nfsqrts$pack $FRj,$FRk */
17338
17339static SEM_PC
17340SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17341{
17342#define FLD(f) abuf->fields.sfmt_cfmadds.f
17343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17344 int UNUSED written = 0;
17345 IADDR UNUSED pc = abuf->addr;
17346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17347
17348{
17349frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17350 {
79e59fe6 17351 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
b34f6357
DB
17352 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17353 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17354 }
17355}
17356
17357 return vpc;
17358#undef FLD
17359}
17360
17361/* fadds: fadds$pack $FRi,$FRj,$FRk */
17362
17363static SEM_PC
17364SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17365{
17366#define FLD(f) abuf->fields.sfmt_cfmadds.f
17367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17368 int UNUSED written = 0;
17369 IADDR UNUSED pc = abuf->addr;
17370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17371
17372 {
79e59fe6 17373 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
17374 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17375 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17376 }
17377
17378 return vpc;
17379#undef FLD
17380}
17381
17382/* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17383
17384static SEM_PC
17385SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17386{
17387#define FLD(f) abuf->fields.sfmt_cfmadds.f
17388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17389 int UNUSED written = 0;
17390 IADDR UNUSED pc = abuf->addr;
17391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17392
17393 {
79e59fe6 17394 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
17395 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17396 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17397 }
17398
17399 return vpc;
17400#undef FLD
17401}
17402
17403/* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17404
17405static SEM_PC
17406SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17407{
17408#define FLD(f) abuf->fields.sfmt_cfmadds.f
17409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17410 int UNUSED written = 0;
17411 IADDR UNUSED pc = abuf->addr;
17412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17413
17414 {
79e59fe6 17415 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
17416 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17417 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17418 }
17419
17420 return vpc;
17421#undef FLD
17422}
17423
17424/* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17425
17426static SEM_PC
17427SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17428{
17429#define FLD(f) abuf->fields.sfmt_cfmadds.f
17430 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17431 int UNUSED written = 0;
17432 IADDR UNUSED pc = abuf->addr;
17433 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17434
17435 {
79e59fe6 17436 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
17437 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17438 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17439 }
17440
17441 return vpc;
17442#undef FLD
17443}
17444
17445/* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17446
17447static SEM_PC
17448SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17449{
17450#define FLD(f) abuf->fields.sfmt_fmaddd.f
17451 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17452 int UNUSED written = 0;
17453 IADDR UNUSED pc = abuf->addr;
17454 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17455
17456 {
79e59fe6 17457 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
17458 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17459 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17460 }
17461
17462 return vpc;
17463#undef FLD
17464}
17465
17466/* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17467
17468static SEM_PC
17469SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17470{
17471#define FLD(f) abuf->fields.sfmt_fmaddd.f
17472 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17473 int UNUSED written = 0;
17474 IADDR UNUSED pc = abuf->addr;
17475 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17476
17477 {
79e59fe6 17478 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
17479 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17480 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17481 }
17482
17483 return vpc;
17484#undef FLD
17485}
17486
17487/* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17488
17489static SEM_PC
17490SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17491{
17492#define FLD(f) abuf->fields.sfmt_fmaddd.f
17493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17494 int UNUSED written = 0;
17495 IADDR UNUSED pc = abuf->addr;
17496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17497
17498 {
79e59fe6 17499 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
17500 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17501 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17502 }
17503
17504 return vpc;
17505#undef FLD
17506}
17507
17508/* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17509
17510static SEM_PC
17511SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17512{
17513#define FLD(f) abuf->fields.sfmt_fmaddd.f
17514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17515 int UNUSED written = 0;
17516 IADDR UNUSED pc = abuf->addr;
17517 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17518
17519 {
79e59fe6 17520 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
17521 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17522 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17523 }
17524
17525 return vpc;
17526#undef FLD
17527}
17528
17529/* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17530
17531static SEM_PC
17532SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17533{
17534#define FLD(f) abuf->fields.sfmt_cfmadds.f
17535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17536 int UNUSED written = 0;
17537 IADDR UNUSED pc = abuf->addr;
17538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17539
17540if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17541 {
79e59fe6 17542 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
17543 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17544 written |= (1 << 4);
17545 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17546 }
17547}
17548
17549 abuf->written = written;
17550 return vpc;
17551#undef FLD
17552}
17553
17554/* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17555
17556static SEM_PC
17557SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17558{
17559#define FLD(f) abuf->fields.sfmt_cfmadds.f
17560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17561 int UNUSED written = 0;
17562 IADDR UNUSED pc = abuf->addr;
17563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17564
17565if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17566 {
79e59fe6 17567 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
17568 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17569 written |= (1 << 4);
17570 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17571 }
17572}
17573
17574 abuf->written = written;
17575 return vpc;
17576#undef FLD
17577}
17578
17579/* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17580
17581static SEM_PC
17582SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17583{
17584#define FLD(f) abuf->fields.sfmt_cfmadds.f
17585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17586 int UNUSED written = 0;
17587 IADDR UNUSED pc = abuf->addr;
17588 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17589
17590if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17591 {
79e59fe6 17592 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
17593 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17594 written |= (1 << 4);
17595 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17596 }
17597}
17598
17599 abuf->written = written;
17600 return vpc;
17601#undef FLD
17602}
17603
17604/* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17605
17606static SEM_PC
17607SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17608{
17609#define FLD(f) abuf->fields.sfmt_cfmadds.f
17610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17611 int UNUSED written = 0;
17612 IADDR UNUSED pc = abuf->addr;
17613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17614
17615if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17616 {
79e59fe6 17617 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
17618 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17619 written |= (1 << 4);
17620 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17621 }
17622}
17623
17624 abuf->written = written;
17625 return vpc;
17626#undef FLD
17627}
17628
17629/* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17630
17631static SEM_PC
17632SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17633{
17634#define FLD(f) abuf->fields.sfmt_cfmadds.f
17635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17636 int UNUSED written = 0;
17637 IADDR UNUSED pc = abuf->addr;
17638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17639
17640{
17641frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17642 {
79e59fe6 17643 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
17644 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17645 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17646 }
17647}
17648
17649 return vpc;
17650#undef FLD
17651}
17652
17653/* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17654
17655static SEM_PC
17656SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17657{
17658#define FLD(f) abuf->fields.sfmt_cfmadds.f
17659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17660 int UNUSED written = 0;
17661 IADDR UNUSED pc = abuf->addr;
17662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17663
17664{
17665frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17666 {
79e59fe6 17667 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
17668 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17669 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17670 }
17671}
17672
17673 return vpc;
17674#undef FLD
17675}
17676
17677/* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17678
17679static SEM_PC
17680SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17681{
17682#define FLD(f) abuf->fields.sfmt_cfmadds.f
17683 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17684 int UNUSED written = 0;
17685 IADDR UNUSED pc = abuf->addr;
17686 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17687
17688{
17689frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17690 {
79e59fe6 17691 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
17692 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17693 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17694 }
17695}
17696
17697 return vpc;
17698#undef FLD
17699}
17700
17701/* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17702
17703static SEM_PC
17704SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17705{
17706#define FLD(f) abuf->fields.sfmt_cfmadds.f
17707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17708 int UNUSED written = 0;
17709 IADDR UNUSED pc = abuf->addr;
17710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17711
17712{
17713frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17714 {
79e59fe6 17715 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
17716 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17717 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17718 }
17719}
17720
17721 return vpc;
17722#undef FLD
17723}
17724
17725/* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17726
17727static SEM_PC
17728SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17729{
17730#define FLD(f) abuf->fields.sfmt_cfcmps.f
17731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17732 int UNUSED written = 0;
17733 IADDR UNUSED pc = abuf->addr;
17734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17735
79e59fe6 17736if (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
17737 {
17738 UQI opval = 2;
17739 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17740 written |= (1 << 2);
17741 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17742 }
17743} else {
79e59fe6 17744if (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
17745 {
17746 UQI opval = 8;
17747 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17748 written |= (1 << 2);
17749 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17750 }
17751} else {
79e59fe6 17752if (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
17753 {
17754 UQI opval = 4;
17755 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17756 written |= (1 << 2);
17757 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17758 }
17759} else {
17760 {
17761 UQI opval = 1;
17762 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17763 written |= (1 << 2);
17764 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17765 }
17766}
17767}
17768}
17769
17770 abuf->written = written;
17771 return vpc;
17772#undef FLD
17773}
17774
17775/* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17776
17777static SEM_PC
17778SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17779{
17780#define FLD(f) abuf->fields.sfmt_fcmpd.f
17781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17782 int UNUSED written = 0;
17783 IADDR UNUSED pc = abuf->addr;
17784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17785
79e59fe6 17786if (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
17787 {
17788 UQI opval = 2;
17789 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17790 written |= (1 << 2);
17791 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17792 }
17793} else {
79e59fe6 17794if (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
17795 {
17796 UQI opval = 8;
17797 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17798 written |= (1 << 2);
17799 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17800 }
17801} else {
79e59fe6 17802if (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
17803 {
17804 UQI opval = 4;
17805 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17806 written |= (1 << 2);
17807 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17808 }
17809} else {
17810 {
17811 UQI opval = 1;
17812 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17813 written |= (1 << 2);
17814 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17815 }
17816}
17817}
17818}
17819
17820 abuf->written = written;
17821 return vpc;
17822#undef FLD
17823}
17824
17825/* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17826
17827static SEM_PC
17828SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17829{
17830#define FLD(f) abuf->fields.sfmt_cfcmps.f
17831 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17832 int UNUSED written = 0;
17833 IADDR UNUSED pc = abuf->addr;
17834 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17835
17836if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
79e59fe6 17837if (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
17838 {
17839 UQI opval = 2;
17840 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17841 written |= (1 << 4);
17842 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17843 }
17844} else {
79e59fe6 17845if (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
17846 {
17847 UQI opval = 8;
17848 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17849 written |= (1 << 4);
17850 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17851 }
17852} else {
79e59fe6 17853if (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
17854 {
17855 UQI opval = 4;
17856 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17857 written |= (1 << 4);
17858 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17859 }
17860} else {
17861 {
17862 UQI opval = 1;
17863 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17864 written |= (1 << 4);
17865 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17866 }
17867}
17868}
17869}
17870}
17871
17872 abuf->written = written;
17873 return vpc;
17874#undef FLD
17875}
17876
17877/* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17878
17879static SEM_PC
17880SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17881{
17882#define FLD(f) abuf->fields.sfmt_nfdcmps.f
17883 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17884 int UNUSED written = 0;
17885 IADDR UNUSED pc = abuf->addr;
17886 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17887
17888{
79e59fe6 17889if (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
17890 {
17891 UQI opval = 2;
17892 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17893 written |= (1 << 7);
17894 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17895 }
17896} else {
79e59fe6 17897if (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
17898 {
17899 UQI opval = 8;
17900 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17901 written |= (1 << 7);
17902 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17903 }
17904} else {
79e59fe6 17905if (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
17906 {
17907 UQI opval = 4;
17908 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17909 written |= (1 << 7);
17910 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17911 }
17912} else {
17913 {
17914 UQI opval = 1;
17915 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17916 written |= (1 << 7);
17917 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17918 }
17919}
17920}
17921}
b29791a8 17922if (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
17923 {
17924 UQI opval = 2;
b29791a8 17925 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17926 written |= (1 << 8);
17927 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17928 }
17929} else {
b29791a8 17930if (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
17931 {
17932 UQI opval = 8;
b29791a8 17933 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17934 written |= (1 << 8);
17935 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17936 }
17937} else {
b29791a8 17938if (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
17939 {
17940 UQI opval = 4;
b29791a8 17941 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17942 written |= (1 << 8);
17943 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17944 }
17945} else {
17946 {
17947 UQI opval = 1;
b29791a8 17948 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
17949 written |= (1 << 8);
17950 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17951 }
17952}
17953}
17954}
17955}
17956
17957 abuf->written = written;
17958 return vpc;
17959#undef FLD
17960}
17961
17962/* fmadds: fmadds$pack $FRi,$FRj,$FRk */
17963
17964static SEM_PC
17965SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17966{
17967#define FLD(f) abuf->fields.sfmt_cfmadds.f
17968 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17969 int UNUSED written = 0;
17970 IADDR UNUSED pc = abuf->addr;
17971 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17972
17973 {
79e59fe6 17974 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
17975 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17976 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17977 }
17978
17979 return vpc;
17980#undef FLD
17981}
17982
17983/* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
17984
17985static SEM_PC
17986SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17987{
17988#define FLD(f) abuf->fields.sfmt_cfmadds.f
17989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17990 int UNUSED written = 0;
17991 IADDR UNUSED pc = abuf->addr;
17992 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17993
17994 {
79e59fe6 17995 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
17996 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17997 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17998 }
17999
18000 return vpc;
18001#undef FLD
18002}
18003
18004/* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18005
18006static SEM_PC
18007SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18008{
18009#define FLD(f) abuf->fields.sfmt_fmaddd.f
18010 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18011 int UNUSED written = 0;
18012 IADDR UNUSED pc = abuf->addr;
18013 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18014
18015 {
79e59fe6 18016 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
18017 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18018 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18019 }
18020
18021 return vpc;
18022#undef FLD
18023}
18024
18025/* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18026
18027static SEM_PC
18028SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18029{
18030#define FLD(f) abuf->fields.sfmt_fmaddd.f
18031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18032 int UNUSED written = 0;
18033 IADDR UNUSED pc = abuf->addr;
18034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18035
18036 {
79e59fe6 18037 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
18038 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18039 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18040 }
18041
18042 return vpc;
18043#undef FLD
18044}
18045
18046/* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18047
18048static SEM_PC
18049SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18050{
18051#define FLD(f) abuf->fields.sfmt_fdmadds.f
18052 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18053 int UNUSED written = 0;
18054 IADDR UNUSED pc = abuf->addr;
18055 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18056
18057{
18058 {
79e59fe6 18059 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
18060 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18061 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18062 }
18063 {
b29791a8
DE
18064 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18065 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18066 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18067 }
18068}
18069
18070 return vpc;
18071#undef FLD
18072}
18073
18074/* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18075
18076static SEM_PC
18077SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18078{
18079#define FLD(f) abuf->fields.sfmt_fdmadds.f
18080 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18081 int UNUSED written = 0;
18082 IADDR UNUSED pc = abuf->addr;
18083 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18084
18085{
18086frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18087 {
79e59fe6 18088 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
18089 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18090 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18091 }
18092frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18093 {
b29791a8
DE
18094 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)));
18095 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18096 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18097 }
18098}
18099
18100 return vpc;
18101#undef FLD
18102}
18103
18104/* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18105
18106static SEM_PC
18107SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18108{
18109#define FLD(f) abuf->fields.sfmt_cfmadds.f
18110 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18111 int UNUSED written = 0;
18112 IADDR UNUSED pc = abuf->addr;
18113 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18114
18115if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18116 {
79e59fe6 18117 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
18118 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18119 written |= (1 << 5);
18120 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18121 }
18122}
18123
18124 abuf->written = written;
18125 return vpc;
18126#undef FLD
18127}
18128
18129/* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18130
18131static SEM_PC
18132SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18133{
18134#define FLD(f) abuf->fields.sfmt_cfmadds.f
18135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18136 int UNUSED written = 0;
18137 IADDR UNUSED pc = abuf->addr;
18138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18139
18140if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18141 {
79e59fe6 18142 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
18143 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18144 written |= (1 << 5);
18145 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18146 }
18147}
18148
18149 abuf->written = written;
18150 return vpc;
18151#undef FLD
18152}
18153
18154/* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18155
18156static SEM_PC
18157SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18158{
18159#define FLD(f) abuf->fields.sfmt_cfmadds.f
18160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18161 int UNUSED written = 0;
18162 IADDR UNUSED pc = abuf->addr;
18163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18164
18165{
18166frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18167 {
79e59fe6 18168 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
18169 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18170 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18171 }
18172}
18173
18174 return vpc;
18175#undef FLD
18176}
18177
18178/* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18179
18180static SEM_PC
18181SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18182{
18183#define FLD(f) abuf->fields.sfmt_cfmadds.f
18184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18185 int UNUSED written = 0;
18186 IADDR UNUSED pc = abuf->addr;
18187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18188
18189{
18190frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18191 {
79e59fe6 18192 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
18193 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18194 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18195 }
18196}
18197
18198 return vpc;
18199#undef FLD
18200}
18201
18202/* fmas: fmas$pack $FRi,$FRj,$FRk */
18203
18204static SEM_PC
18205SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18206{
18207#define FLD(f) abuf->fields.sfmt_fdmadds.f
18208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18209 int UNUSED written = 0;
18210 IADDR UNUSED pc = abuf->addr;
18211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18212
18213{
18214 {
79e59fe6 18215 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
18216 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18217 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18218 }
18219 {
b29791a8
DE
18220 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)));
18221 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18222 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18223 }
18224}
18225
18226 return vpc;
18227#undef FLD
18228}
18229
18230/* fmss: fmss$pack $FRi,$FRj,$FRk */
18231
18232static SEM_PC
18233SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18234{
18235#define FLD(f) abuf->fields.sfmt_fdmadds.f
18236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18237 int UNUSED written = 0;
18238 IADDR UNUSED pc = abuf->addr;
18239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18240
18241{
18242 {
79e59fe6 18243 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
18244 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18245 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18246 }
18247 {
b29791a8
DE
18248 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)));
18249 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18250 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18251 }
18252}
18253
18254 return vpc;
18255#undef FLD
18256}
18257
18258/* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18259
18260static SEM_PC
18261SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18262{
18263#define FLD(f) abuf->fields.sfmt_fdmas.f
18264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18265 int UNUSED written = 0;
18266 IADDR UNUSED pc = abuf->addr;
18267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18268
18269{
18270 {
79e59fe6 18271 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
18272 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18273 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18274 }
18275 {
b29791a8
DE
18276 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)));
18277 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18278 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18279 }
18280 {
b29791a8
DE
18281 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)));
18282 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18283 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18284 }
18285 {
b29791a8
DE
18286 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18287 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
18288 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18289 }
18290}
18291
18292 return vpc;
18293#undef FLD
18294}
18295
18296/* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18297
18298static SEM_PC
18299SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18300{
18301#define FLD(f) abuf->fields.sfmt_fdmas.f
18302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18303 int UNUSED written = 0;
18304 IADDR UNUSED pc = abuf->addr;
18305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18306
18307{
18308 {
79e59fe6 18309 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
18310 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18311 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18312 }
18313 {
b29791a8
DE
18314 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)));
18315 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18316 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18317 }
18318 {
b29791a8
DE
18319 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)));
18320 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18321 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18322 }
18323 {
b29791a8
DE
18324 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18325 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
18326 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18327 }
18328}
18329
18330 return vpc;
18331#undef FLD
18332}
18333
18334/* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18335
18336static SEM_PC
18337SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18338{
18339#define FLD(f) abuf->fields.sfmt_fdmas.f
18340 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18341 int UNUSED written = 0;
18342 IADDR UNUSED pc = abuf->addr;
18343 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18344
18345{
18346frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18347frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18348frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18349frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18350 {
79e59fe6 18351 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
18352 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18353 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18354 }
18355 {
b29791a8
DE
18356 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)));
18357 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18358 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18359 }
18360 {
b29791a8
DE
18361 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)));
18362 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18363 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18364 }
18365 {
b29791a8
DE
18366 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18367 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
18368 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18369 }
18370}
18371
18372 return vpc;
18373#undef FLD
18374}
18375
18376/* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18377
18378static SEM_PC
18379SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18380{
18381#define FLD(f) abuf->fields.sfmt_fdmas.f
18382 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18383 int UNUSED written = 0;
18384 IADDR UNUSED pc = abuf->addr;
18385 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18386
18387{
18388frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18389frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18390frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18391frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18392 {
79e59fe6 18393 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
18394 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18395 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18396 }
18397 {
b29791a8
DE
18398 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)));
18399 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18400 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18401 }
18402 {
b29791a8
DE
18403 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)));
18404 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
18405 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18406 }
18407 {
b29791a8
DE
18408 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18409 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
18410 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18411 }
18412}
18413
18414 return vpc;
18415#undef FLD
18416}
18417
18418/* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18419
18420static SEM_PC
18421SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18422{
18423#define FLD(f) abuf->fields.sfmt_cfmas.f
18424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18425 int UNUSED written = 0;
18426 IADDR UNUSED pc = abuf->addr;
18427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18428
18429if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18430{
18431 {
79e59fe6 18432 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
18433 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18434 written |= (1 << 9);
18435 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18436 }
18437 {
b29791a8
DE
18438 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)));
18439 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18440 written |= (1 << 10);
18441 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18442 }
18443}
18444}
18445
18446 abuf->written = written;
18447 return vpc;
18448#undef FLD
18449}
18450
18451/* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18452
18453static SEM_PC
18454SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18455{
18456#define FLD(f) abuf->fields.sfmt_cfmas.f
18457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18458 int UNUSED written = 0;
18459 IADDR UNUSED pc = abuf->addr;
18460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18461
18462if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18463{
18464 {
79e59fe6 18465 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
18466 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18467 written |= (1 << 9);
18468 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18469 }
18470 {
b29791a8
DE
18471 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)));
18472 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18473 written |= (1 << 10);
18474 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18475 }
18476}
18477}
18478
18479 abuf->written = written;
18480 return vpc;
18481#undef FLD
18482}
18483
18484/* fmad: fmad$pack $FRi,$FRj,$FRk */
18485
18486static SEM_PC
18487SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18488{
18489#define FLD(f) abuf->fields.sfmt_fdmadds.f
18490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18491 int UNUSED written = 0;
18492 IADDR UNUSED pc = abuf->addr;
18493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18494
18495{
18496 {
d2c7a1a6 18497 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
18498 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18499 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18500 }
18501 {
d2c7a1a6 18502 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->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 18503 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18504 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18505 }
18506}
18507
18508 return vpc;
18509#undef FLD
18510}
18511
18512/* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18513
18514static SEM_PC
18515SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18516{
18517#define FLD(f) abuf->fields.sfmt_fdmadds.f
18518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18519 int UNUSED written = 0;
18520 IADDR UNUSED pc = abuf->addr;
18521 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18522
18523{
18524 {
d2c7a1a6 18525 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
18526 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18527 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18528 }
18529 {
d2c7a1a6 18530 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->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 18531 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18532 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18533 }
18534}
18535
18536 return vpc;
18537#undef FLD
18538}
18539
18540/* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18541
18542static SEM_PC
18543SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18544{
18545#define FLD(f) abuf->fields.sfmt_fdmadds.f
18546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18547 int UNUSED written = 0;
18548 IADDR UNUSED pc = abuf->addr;
18549 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18550
18551{
18552frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18553 {
79e59fe6 18554 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
18555 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18556 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18557 }
18558frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18559 {
b29791a8
DE
18560 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)));
18561 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18562 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18563 }
18564}
18565
18566 return vpc;
18567#undef FLD
18568}
18569
18570/* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18571
18572static SEM_PC
18573SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18574{
18575#define FLD(f) abuf->fields.sfmt_fdmadds.f
18576 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18577 int UNUSED written = 0;
18578 IADDR UNUSED pc = abuf->addr;
18579 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18580
18581{
18582frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18583 {
79e59fe6 18584 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
18585 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18586 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18587 }
18588frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18589 {
b29791a8
DE
18590 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)));
18591 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18592 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18593 }
18594}
18595
18596 return vpc;
18597#undef FLD
18598}
18599
18600/* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18601
18602static SEM_PC
18603SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18604{
18605#define FLD(f) abuf->fields.sfmt_fdmadds.f
18606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18607 int UNUSED written = 0;
18608 IADDR UNUSED pc = abuf->addr;
18609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18610
18611{
18612 {
79e59fe6 18613 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
18614 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18615 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18616 }
18617 {
b29791a8
DE
18618 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)));
18619 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18620 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18621 }
18622}
18623
18624 return vpc;
18625#undef FLD
18626}
18627
18628/* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18629
18630static SEM_PC
18631SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18632{
18633#define FLD(f) abuf->fields.sfmt_fdmadds.f
18634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18635 int UNUSED written = 0;
18636 IADDR UNUSED pc = abuf->addr;
18637 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18638
18639{
18640 {
79e59fe6 18641 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
18642 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18643 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18644 }
18645 {
b29791a8
DE
18646 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)));
18647 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18648 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18649 }
18650}
18651
18652 return vpc;
18653#undef FLD
18654}
18655
18656/* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18657
18658static SEM_PC
18659SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18660{
18661#define FLD(f) abuf->fields.sfmt_fdmadds.f
18662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18663 int UNUSED written = 0;
18664 IADDR UNUSED pc = abuf->addr;
18665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18666
18667{
18668 {
79e59fe6 18669 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
18670 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18671 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18672 }
18673 {
b29791a8
DE
18674 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)));
18675 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18676 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18677 }
18678}
18679
18680 return vpc;
18681#undef FLD
18682}
18683
18684/* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18685
18686static SEM_PC
18687SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18688{
18689#define FLD(f) abuf->fields.sfmt_fdmadds.f
18690 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18691 int UNUSED written = 0;
18692 IADDR UNUSED pc = abuf->addr;
18693 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18694
18695{
18696 {
79e59fe6 18697 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
18698 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18699 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18700 }
18701 {
b29791a8
DE
18702 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)));
18703 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18704 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18705 }
18706}
18707
18708 return vpc;
18709#undef FLD
18710}
18711
18712/* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18713
18714static SEM_PC
18715SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18716{
18717#define FLD(f) abuf->fields.sfmt_fdmadds.f
18718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18719 int UNUSED written = 0;
18720 IADDR UNUSED pc = abuf->addr;
18721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18722
18723{
18724 {
79e59fe6 18725 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
18726 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18727 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18728 }
18729 {
b29791a8
DE
18730 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)));
18731 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18732 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18733 }
18734}
18735
18736 return vpc;
18737#undef FLD
18738}
18739
18740/* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18741
18742static SEM_PC
18743SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18744{
18745#define FLD(f) abuf->fields.sfmt_fdmadds.f
18746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18747 int UNUSED written = 0;
18748 IADDR UNUSED pc = abuf->addr;
18749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18750
18751{
18752 {
b29791a8 18753 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
18754 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18755 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18756 }
18757 {
b29791a8
DE
18758 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)));
18759 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18760 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18761 }
18762}
18763
18764 return vpc;
18765#undef FLD
18766}
18767
18768/* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18769
18770static SEM_PC
18771SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18772{
18773#define FLD(f) abuf->fields.sfmt_fdmadds.f
18774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18775 int UNUSED written = 0;
18776 IADDR UNUSED pc = abuf->addr;
18777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18778
18779{
18780frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18781 {
b29791a8 18782 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
18783 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18784 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18785 }
18786frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18787 {
b29791a8
DE
18788 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)));
18789 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18790 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18791 }
18792}
18793
18794 return vpc;
18795#undef FLD
18796}
18797
18798/* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18799
18800static SEM_PC
18801SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18802{
18803#define FLD(f) abuf->fields.sfmt_fdmadds.f
18804 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18805 int UNUSED written = 0;
18806 IADDR UNUSED pc = abuf->addr;
18807 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18808
18809{
18810frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18811 {
79e59fe6 18812 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
18813 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18814 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18815 }
18816frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18817 {
b29791a8
DE
18818 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)));
18819 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18820 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18821 }
18822}
18823
18824 return vpc;
18825#undef FLD
18826}
18827
18828/* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18829
18830static SEM_PC
18831SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18832{
18833#define FLD(f) abuf->fields.sfmt_fdmadds.f
18834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18835 int UNUSED written = 0;
18836 IADDR UNUSED pc = abuf->addr;
18837 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18838
18839{
18840frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18841 {
79e59fe6 18842 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
18843 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18844 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18845 }
18846frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18847 {
b29791a8
DE
18848 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)));
18849 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18850 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18851 }
18852}
18853
18854 return vpc;
18855#undef FLD
18856}
18857
18858/* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18859
18860static SEM_PC
18861SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18862{
18863#define FLD(f) abuf->fields.sfmt_fdmadds.f
18864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18865 int UNUSED written = 0;
18866 IADDR UNUSED pc = abuf->addr;
18867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18868
18869{
18870frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18871 {
79e59fe6 18872 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
18873 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18874 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18875 }
18876frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18877 {
b29791a8
DE
18878 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)));
18879 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18880 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18881 }
18882}
18883
18884 return vpc;
18885#undef FLD
18886}
18887
18888/* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18889
18890static SEM_PC
18891SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18892{
18893#define FLD(f) abuf->fields.sfmt_fdmadds.f
18894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18895 int UNUSED written = 0;
18896 IADDR UNUSED pc = abuf->addr;
18897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18898
18899{
18900frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18901 {
79e59fe6 18902 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
18903 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18904 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18905 }
18906frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18907 {
b29791a8
DE
18908 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)));
18909 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18910 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18911 }
18912}
18913
18914 return vpc;
18915#undef FLD
18916}
18917
18918/* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18919
18920static SEM_PC
18921SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18922{
18923#define FLD(f) abuf->fields.sfmt_fdmadds.f
18924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18925 int UNUSED written = 0;
18926 IADDR UNUSED pc = abuf->addr;
18927 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18928
18929{
18930frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18931 {
79e59fe6 18932 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
18933 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18934 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18935 }
18936frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18937 {
b29791a8
DE
18938 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)));
18939 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
18940 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18941 }
18942}
18943
18944 return vpc;
18945#undef FLD
18946}
18947
18948/* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18949
18950static SEM_PC
18951SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18952{
18953#define FLD(f) abuf->fields.sfmt_nfdcmps.f
18954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18955 int UNUSED written = 0;
18956 IADDR UNUSED pc = abuf->addr;
18957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18958
18959{
18960frvbf_set_ne_index (current_cpu, FLD (f_FRk));
79e59fe6 18961if (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
18962 {
18963 UQI opval = 2;
18964 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18965 written |= (1 << 8);
18966 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18967 }
18968} else {
79e59fe6 18969if (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
18970 {
18971 UQI opval = 8;
18972 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18973 written |= (1 << 8);
18974 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18975 }
18976} else {
79e59fe6 18977if (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
18978 {
18979 UQI opval = 4;
18980 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18981 written |= (1 << 8);
18982 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18983 }
18984} else {
18985 {
18986 UQI opval = 1;
18987 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18988 written |= (1 << 8);
18989 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18990 }
18991}
18992}
18993}
18994frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
b29791a8 18995if (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
18996 {
18997 UQI opval = 2;
b29791a8 18998 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
18999 written |= (1 << 9);
19000 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19001 }
19002} else {
b29791a8 19003if (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
19004 {
19005 UQI opval = 8;
b29791a8 19006 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19007 written |= (1 << 9);
19008 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19009 }
19010} else {
b29791a8 19011if (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
19012 {
19013 UQI opval = 4;
b29791a8 19014 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19015 written |= (1 << 9);
19016 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19017 }
19018} else {
19019 {
19020 UQI opval = 1;
b29791a8 19021 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
b34f6357
DB
19022 written |= (1 << 9);
19023 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19024 }
19025}
19026}
19027}
19028}
19029
19030 abuf->written = written;
19031 return vpc;
19032#undef FLD
19033}
19034
19035/* mhsetlos: mhsetlos$pack $u12,$FRklo */
19036
19037static SEM_PC
19038SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19039{
19040#define FLD(f) abuf->fields.sfmt_mhsetlos.f
19041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19042 int UNUSED written = 0;
19043 IADDR UNUSED pc = abuf->addr;
19044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19045
19046 {
19047 UHI opval = FLD (f_u12);
19048 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19049 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19050 }
19051
19052 return vpc;
19053#undef FLD
19054}
19055
19056/* mhsethis: mhsethis$pack $u12,$FRkhi */
19057
19058static SEM_PC
19059SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19060{
19061#define FLD(f) abuf->fields.sfmt_mhsethis.f
19062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19063 int UNUSED written = 0;
19064 IADDR UNUSED pc = abuf->addr;
19065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19066
19067 {
19068 UHI opval = FLD (f_u12);
19069 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19070 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19071 }
19072
19073 return vpc;
19074#undef FLD
19075}
19076
19077/* mhdsets: mhdsets$pack $u12,$FRintk */
19078
19079static SEM_PC
19080SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19081{
19082#define FLD(f) abuf->fields.sfmt_mhdsets.f
19083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19084 int UNUSED written = 0;
19085 IADDR UNUSED pc = abuf->addr;
19086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19087
19088{
19089 {
19090 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19091 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19092 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19093 }
19094 {
19095 UHI opval = FLD (f_u12);
b29791a8 19096 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19097 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19098 }
19099 {
19100 UHI opval = FLD (f_u12);
b29791a8 19101 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19102 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19103 }
19104}
19105
19106 return vpc;
19107#undef FLD
19108}
19109
19110/* mhsetloh: mhsetloh$pack $s5,$FRklo */
19111
19112static SEM_PC
19113SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19114{
19115#define FLD(f) abuf->fields.sfmt_mhsetloh.f
19116 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19117 int UNUSED written = 0;
19118 IADDR UNUSED pc = abuf->addr;
19119 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19120
19121{
19122 HI tmp_tmp;
19123 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19124 tmp_tmp = ANDHI (tmp_tmp, 2047);
19125 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19126 {
19127 UHI opval = tmp_tmp;
19128 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19129 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19130 }
19131}
19132
19133 return vpc;
19134#undef FLD
19135}
19136
19137/* mhsethih: mhsethih$pack $s5,$FRkhi */
19138
19139static SEM_PC
19140SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19141{
19142#define FLD(f) abuf->fields.sfmt_mhsethih.f
19143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19144 int UNUSED written = 0;
19145 IADDR UNUSED pc = abuf->addr;
19146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19147
19148{
19149 HI tmp_tmp;
19150 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19151 tmp_tmp = ANDHI (tmp_tmp, 2047);
19152 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19153 {
19154 UHI opval = tmp_tmp;
19155 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19156 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19157 }
19158}
19159
19160 return vpc;
19161#undef FLD
19162}
19163
19164/* mhdseth: mhdseth$pack $s5,$FRintk */
19165
19166static SEM_PC
19167SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19168{
19169#define FLD(f) abuf->fields.sfmt_mhdseth.f
19170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19171 int UNUSED written = 0;
19172 IADDR UNUSED pc = abuf->addr;
19173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19174
19175{
19176 {
19177 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19178 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19179 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19180 }
19181{
19182 HI tmp_tmp;
b29791a8 19183 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRk), 0));
b34f6357
DB
19184 tmp_tmp = ANDHI (tmp_tmp, 2047);
19185 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19186 {
19187 UHI opval = tmp_tmp;
b29791a8 19188 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19189 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19190 }
19191}
19192{
19193 HI tmp_tmp;
b29791a8 19194 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRk), 0));
b34f6357
DB
19195 tmp_tmp = ANDHI (tmp_tmp, 2047);
19196 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19197 {
19198 UHI opval = tmp_tmp;
b29791a8 19199 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19200 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19201 }
19202}
19203}
19204
19205 return vpc;
19206#undef FLD
19207}
19208
19209/* mand: mand$pack $FRinti,$FRintj,$FRintk */
19210
19211static SEM_PC
19212SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19213{
19214#define FLD(f) abuf->fields.sfmt_mwcut.f
19215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19216 int UNUSED written = 0;
19217 IADDR UNUSED pc = abuf->addr;
19218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19219
19220 {
19221 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19222 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19223 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19224 }
19225
19226 return vpc;
19227#undef FLD
19228}
19229
19230/* mor: mor$pack $FRinti,$FRintj,$FRintk */
19231
19232static SEM_PC
19233SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19234{
19235#define FLD(f) abuf->fields.sfmt_mwcut.f
19236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19237 int UNUSED written = 0;
19238 IADDR UNUSED pc = abuf->addr;
19239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19240
19241 {
19242 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19243 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19244 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19245 }
19246
19247 return vpc;
19248#undef FLD
19249}
19250
19251/* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19252
19253static SEM_PC
19254SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19255{
19256#define FLD(f) abuf->fields.sfmt_mwcut.f
19257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19258 int UNUSED written = 0;
19259 IADDR UNUSED pc = abuf->addr;
19260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19261
19262 {
19263 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19264 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19265 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19266 }
19267
19268 return vpc;
19269#undef FLD
19270}
19271
19272/* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19273
19274static SEM_PC
19275SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19276{
19277#define FLD(f) abuf->fields.sfmt_cmand.f
19278 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19279 int UNUSED written = 0;
19280 IADDR UNUSED pc = abuf->addr;
19281 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19282
19283if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19284 {
19285 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19286 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19287 written |= (1 << 4);
19288 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19289 }
19290}
19291
19292 abuf->written = written;
19293 return vpc;
19294#undef FLD
19295}
19296
19297/* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19298
19299static SEM_PC
19300SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19301{
19302#define FLD(f) abuf->fields.sfmt_cmand.f
19303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19304 int UNUSED written = 0;
19305 IADDR UNUSED pc = abuf->addr;
19306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19307
19308if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19309 {
19310 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19311 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19312 written |= (1 << 4);
19313 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19314 }
19315}
19316
19317 abuf->written = written;
19318 return vpc;
19319#undef FLD
19320}
19321
19322/* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19323
19324static SEM_PC
19325SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19326{
19327#define FLD(f) abuf->fields.sfmt_cmand.f
19328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19329 int UNUSED written = 0;
19330 IADDR UNUSED pc = abuf->addr;
19331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19332
19333if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19334 {
19335 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19336 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19337 written |= (1 << 4);
19338 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19339 }
19340}
19341
19342 abuf->written = written;
19343 return vpc;
19344#undef FLD
19345}
19346
19347/* mnot: mnot$pack $FRintj,$FRintk */
19348
19349static SEM_PC
19350SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19351{
19352#define FLD(f) abuf->fields.sfmt_mcut.f
19353 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19354 int UNUSED written = 0;
19355 IADDR UNUSED pc = abuf->addr;
19356 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19357
19358 {
19359 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19360 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19361 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19362 }
19363
19364 return vpc;
19365#undef FLD
19366}
19367
19368/* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19369
19370static SEM_PC
19371SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19372{
19373#define FLD(f) abuf->fields.sfmt_cmand.f
19374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19375 int UNUSED written = 0;
19376 IADDR UNUSED pc = abuf->addr;
19377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19378
19379if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19380 {
19381 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19382 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19383 written |= (1 << 3);
19384 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19385 }
19386}
19387
19388 abuf->written = written;
19389 return vpc;
19390#undef FLD
19391}
19392
19393/* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19394
19395static SEM_PC
19396SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19397{
19398#define FLD(f) abuf->fields.sfmt_mwcuti.f
19399 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19400 int UNUSED written = 0;
19401 IADDR UNUSED pc = abuf->addr;
19402 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19403
19404 {
19405 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19406 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19407 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19408 }
19409
19410 return vpc;
19411#undef FLD
19412}
19413
19414/* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19415
19416static SEM_PC
19417SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19418{
19419#define FLD(f) abuf->fields.sfmt_mwcuti.f
19420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19421 int UNUSED written = 0;
19422 IADDR UNUSED pc = abuf->addr;
19423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19424
19425 {
19426 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19427 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19428 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19429 }
19430
19431 return vpc;
19432#undef FLD
19433}
19434
19435/* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19436
19437static SEM_PC
19438SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19439{
19440#define FLD(f) abuf->fields.sfmt_mwcut.f
19441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19442 int UNUSED written = 0;
19443 IADDR UNUSED pc = abuf->addr;
19444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19445
19446 {
b29791a8 19447 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
19448 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19449 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19450 }
19451
19452 return vpc;
19453#undef FLD
19454}
19455
19456/* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19457
19458static SEM_PC
19459SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19460{
19461#define FLD(f) abuf->fields.sfmt_mwcuti.f
19462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19463 int UNUSED written = 0;
19464 IADDR UNUSED pc = abuf->addr;
19465 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19466
19467 {
b29791a8 19468 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
19469 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19470 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19471 }
19472
19473 return vpc;
19474#undef FLD
19475}
19476
19477/* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19478
19479static SEM_PC
19480SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19481{
19482#define FLD(f) abuf->fields.sfmt_mcut.f
19483 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19484 int UNUSED written = 0;
19485 IADDR UNUSED pc = abuf->addr;
19486 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19487
19488 {
19489 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19490 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19491 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19492 }
19493
19494 return vpc;
19495#undef FLD
19496}
19497
19498/* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19499
19500static SEM_PC
19501SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19502{
19503#define FLD(f) abuf->fields.sfmt_mcuti.f
19504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19505 int UNUSED written = 0;
19506 IADDR UNUSED pc = abuf->addr;
19507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19508
19509 {
19510 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19511 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19512 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19513 }
19514
19515 return vpc;
19516#undef FLD
19517}
19518
19519/* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19520
19521static SEM_PC
19522SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19523{
19524#define FLD(f) abuf->fields.sfmt_mcut.f
19525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19526 int UNUSED written = 0;
19527 IADDR UNUSED pc = abuf->addr;
19528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19529
19530 {
19531 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19532 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19533 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19534 }
19535
19536 return vpc;
19537#undef FLD
19538}
19539
19540/* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19541
19542static SEM_PC
19543SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19544{
19545#define FLD(f) abuf->fields.sfmt_mcuti.f
19546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19547 int UNUSED written = 0;
19548 IADDR UNUSED pc = abuf->addr;
19549 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19550
19551 {
19552 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19553 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19554 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19555 }
19556
19557 return vpc;
19558#undef FLD
19559}
19560
19561/* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19562
19563static SEM_PC
19564SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19565{
19566#define FLD(f) abuf->fields.sfmt_mdcutssi.f
19567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19568 int UNUSED written = 0;
19569 IADDR UNUSED pc = abuf->addr;
19570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19571
19572if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19573frvbf_media_acc_not_aligned (current_cpu);
19574} else {
19575if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19576frvbf_media_register_not_aligned (current_cpu);
19577} else {
19578{
19579 {
19580 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19581 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19582 written |= (1 << 5);
19583 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19584 }
19585 {
b29791a8
DE
19586 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)), FLD (f_s6));
19587 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
19588 written |= (1 << 6);
19589 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19590 }
19591}
19592}
19593}
19594
19595 abuf->written = written;
19596 return vpc;
19597#undef FLD
19598}
19599
19600/* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19601
19602static SEM_PC
19603SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19604{
19605#define FLD(f) abuf->fields.sfmt_mwcut.f
19606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19607 int UNUSED written = 0;
19608 IADDR UNUSED pc = abuf->addr;
19609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19610
19611 {
19612 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19613 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19614 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19615 }
19616
19617 return vpc;
19618#undef FLD
19619}
19620
19621/* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19622
19623static SEM_PC
19624SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19625{
19626#define FLD(f) abuf->fields.sfmt_msllhi.f
19627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19628 int UNUSED written = 0;
19629 IADDR UNUSED pc = abuf->addr;
19630 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19631
19632{
19633 {
19634 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19635 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19636 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19637 }
19638 {
19639 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19640 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19641 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19642 }
19643 {
b29791a8
DE
19644 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19645 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19646 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19647 }
19648 {
b29791a8
DE
19649 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19650 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19651 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19652 }
19653}
19654
19655 return vpc;
19656#undef FLD
19657}
19658
19659/* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19660
19661static SEM_PC
19662SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19663{
19664#define FLD(f) abuf->fields.sfmt_msllhi.f
19665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19666 int UNUSED written = 0;
19667 IADDR UNUSED pc = abuf->addr;
19668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19669
19670{
19671 {
19672 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19673 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19674 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19675 }
19676 {
19677 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19678 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19679 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19680 }
19681 {
b29791a8
DE
19682 UHI opval = SRLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19683 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19684 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19685 }
19686 {
b29791a8
DE
19687 UHI opval = SRLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19688 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19689 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19690 }
19691}
19692
19693 return vpc;
19694#undef FLD
19695}
19696
19697/* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19698
19699static SEM_PC
19700SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19701{
19702#define FLD(f) abuf->fields.sfmt_msllhi.f
19703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19704 int UNUSED written = 0;
19705 IADDR UNUSED pc = abuf->addr;
19706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19707
19708{
19709 {
19710 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19711 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19712 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19713 }
19714 {
19715 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19716 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19717 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19718 }
19719 {
b29791a8
DE
19720 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19721 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19722 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19723 }
19724 {
b29791a8
DE
19725 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19726 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19727 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19728 }
19729}
19730
19731 return vpc;
19732#undef FLD
19733}
19734
19735/* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19736
19737static SEM_PC
19738SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19739{
19740#define FLD(f) abuf->fields.sfmt_mdrotli.f
19741 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19742 int UNUSED written = 0;
19743 IADDR UNUSED pc = abuf->addr;
19744 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19745
19746if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19747frvbf_media_register_not_aligned (current_cpu);
19748} else {
19749{
19750 {
19751 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19752 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19753 written |= (1 << 5);
19754 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19755 }
19756 {
b29791a8
DE
19757 USI opval = ROLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_s6), 31));
19758 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
19759 written |= (1 << 6);
19760 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19761 }
19762}
19763}
19764
19765 abuf->written = written;
19766 return vpc;
19767#undef FLD
19768}
19769
19770/* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19771
19772static SEM_PC
19773SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19774{
19775#define FLD(f) abuf->fields.sfmt_mcplhi.f
19776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19777 int UNUSED written = 0;
19778 IADDR UNUSED pc = abuf->addr;
19779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19780
19781{
19782 HI tmp_arg1;
19783 HI tmp_arg2;
19784 HI tmp_shift;
19785 {
19786 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19787 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19788 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19789 }
19790 {
19791 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19792 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19793 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19794 }
19795 tmp_shift = ANDSI (FLD (f_u6), 15);
b29791a8 19796 tmp_arg1 = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), tmp_shift);
b34f6357
DB
19797if (NEHI (tmp_shift, 0)) {
19798{
b29791a8 19799 tmp_arg2 = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
b34f6357
DB
19800 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19801 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19802}
19803}
19804 {
19805 UHI opval = tmp_arg1;
b29791a8 19806 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19807 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19808 }
19809}
19810
19811 return vpc;
19812#undef FLD
19813}
19814
19815/* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19816
19817static SEM_PC
19818SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19819{
19820#define FLD(f) abuf->fields.sfmt_mwcuti.f
19821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19822 int UNUSED written = 0;
19823 IADDR UNUSED pc = abuf->addr;
19824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19825
19826{
19827 SI tmp_tmp;
19828 SI tmp_shift;
19829 tmp_shift = ANDSI (FLD (f_u6), 31);
19830 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19831if (NESI (tmp_shift, 0)) {
19832{
19833 SI tmp_tmp1;
b29791a8 19834 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
b34f6357
DB
19835 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19836}
19837}
19838 {
19839 SI opval = tmp_tmp;
19840 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19841 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19842 }
19843}
19844
19845 return vpc;
19846#undef FLD
19847}
19848
19849/* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19850
19851static SEM_PC
19852SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19853{
19854#define FLD(f) abuf->fields.sfmt_cmaddhss.f
19855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19856 int UNUSED written = 0;
19857 IADDR UNUSED pc = abuf->addr;
19858 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19859
19860{
19861 HI tmp_argihi;
19862 HI tmp_argilo;
19863 HI tmp_argjhi;
19864 HI tmp_argjlo;
19865{
b29791a8
DE
19866 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19867 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19868 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19869 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
19870}
19871if (GTHI (tmp_argihi, tmp_argjhi)) {
19872 {
19873 UHI opval = tmp_argjhi;
b29791a8 19874 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19875 written |= (1 << 9);
19876 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19877 }
19878} else {
19879if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19880 {
19881 UHI opval = INVHI (tmp_argjhi);
b29791a8 19882 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19883 written |= (1 << 9);
19884 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19885 }
19886} else {
19887 {
19888 UHI opval = tmp_argihi;
b29791a8 19889 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19890 written |= (1 << 9);
19891 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19892 }
19893}
19894}
19895if (GTHI (tmp_argilo, tmp_argjlo)) {
19896 {
19897 UHI opval = tmp_argjlo;
b29791a8 19898 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19899 written |= (1 << 10);
19900 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19901 }
19902} else {
19903if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19904 {
19905 UHI opval = INVHI (tmp_argjlo);
b29791a8 19906 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19907 written |= (1 << 10);
19908 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19909 }
19910} else {
19911 {
19912 UHI opval = tmp_argilo;
b29791a8 19913 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19914 written |= (1 << 10);
19915 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19916 }
19917}
19918}
19919}
19920
19921 abuf->written = written;
19922 return vpc;
19923#undef FLD
19924}
19925
19926/* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19927
19928static SEM_PC
19929SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19930{
19931#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19933 int UNUSED written = 0;
19934 IADDR UNUSED pc = abuf->addr;
19935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19936
19937if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19938frvbf_media_register_not_aligned (current_cpu);
19939} else {
19940{
19941 HI tmp_argihi;
19942 HI tmp_argilo;
19943 HI tmp_argjhi;
19944 HI tmp_argjlo;
19945 {
19946 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19947 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19948 written |= (1 << 14);
19949 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19950 }
19951{
b29791a8
DE
19952 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19953 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19954 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19955 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
19956}
19957if (GTHI (tmp_argihi, tmp_argjhi)) {
19958 {
19959 UHI opval = tmp_argjhi;
b29791a8 19960 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19961 written |= (1 << 15);
19962 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19963 }
19964} else {
19965if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19966 {
19967 UHI opval = INVHI (tmp_argjhi);
b29791a8 19968 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19969 written |= (1 << 15);
19970 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19971 }
19972} else {
19973 {
19974 UHI opval = tmp_argihi;
b29791a8 19975 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19976 written |= (1 << 15);
19977 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19978 }
19979}
19980}
19981if (GTHI (tmp_argilo, tmp_argjlo)) {
19982 {
19983 UHI opval = tmp_argjlo;
b29791a8 19984 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19985 written |= (1 << 17);
19986 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19987 }
19988} else {
19989if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19990 {
19991 UHI opval = INVHI (tmp_argjlo);
b29791a8 19992 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
19993 written |= (1 << 17);
19994 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19995 }
19996} else {
19997 {
19998 UHI opval = tmp_argilo;
b29791a8 19999 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20000 written |= (1 << 17);
20001 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20002 }
20003}
20004}
20005{
b29791a8
DE
20006 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20007 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20008 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20009 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20010}
20011if (GTHI (tmp_argihi, tmp_argjhi)) {
20012 {
20013 UHI opval = tmp_argjhi;
b29791a8 20014 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20015 written |= (1 << 16);
20016 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20017 }
20018} else {
20019if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20020 {
20021 UHI opval = INVHI (tmp_argjhi);
b29791a8 20022 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20023 written |= (1 << 16);
20024 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20025 }
20026} else {
20027 {
20028 UHI opval = tmp_argihi;
b29791a8 20029 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20030 written |= (1 << 16);
20031 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20032 }
20033}
20034}
20035if (GTHI (tmp_argilo, tmp_argjlo)) {
20036 {
20037 UHI opval = tmp_argjlo;
b29791a8 20038 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20039 written |= (1 << 18);
20040 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20041 }
20042} else {
20043if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20044 {
20045 UHI opval = INVHI (tmp_argjlo);
b29791a8 20046 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20047 written |= (1 << 18);
20048 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20049 }
20050} else {
20051 {
20052 UHI opval = tmp_argilo;
b29791a8 20053 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
20054 written |= (1 << 18);
20055 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20056 }
20057}
20058}
20059}
20060}
20061
20062 abuf->written = written;
20063 return vpc;
20064#undef FLD
20065}
20066
20067/* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20068
20069static SEM_PC
20070SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20071{
20072#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20074 int UNUSED written = 0;
20075 IADDR UNUSED pc = abuf->addr;
20076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20077
20078{
20079 UHI tmp_argihi;
20080 UHI tmp_argilo;
20081 UHI tmp_argjhi;
20082 UHI tmp_argjlo;
20083{
b29791a8
DE
20084 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20085 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20086 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20087 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20088}
20089if (GTUHI (tmp_argihi, tmp_argjhi)) {
20090 {
20091 UHI opval = tmp_argjhi;
b29791a8 20092 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20093 written |= (1 << 9);
20094 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20095 }
20096} else {
20097 {
20098 UHI opval = tmp_argihi;
b29791a8 20099 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20100 written |= (1 << 9);
20101 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20102 }
20103}
20104if (GTUHI (tmp_argilo, tmp_argjlo)) {
20105 {
20106 UHI opval = tmp_argjlo;
b29791a8 20107 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20108 written |= (1 << 10);
20109 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20110 }
20111} else {
20112 {
20113 UHI opval = tmp_argilo;
b29791a8 20114 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20115 written |= (1 << 10);
20116 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20117 }
20118}
20119}
20120
20121 abuf->written = written;
20122 return vpc;
20123#undef FLD
20124}
20125
20126/* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20127
20128static SEM_PC
20129SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20130{
20131#define FLD(f) abuf->fields.sfmt_mcmpsh.f
20132 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20133 int UNUSED written = 0;
20134 IADDR UNUSED pc = abuf->addr;
20135 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20136
20137if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20138frvbf_media_cr_not_aligned (current_cpu);
20139} else {
20140{
20141 HI tmp_argihi;
20142 HI tmp_argilo;
20143 HI tmp_argjhi;
20144 HI tmp_argjlo;
20145{
b29791a8
DE
20146 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20147 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20148 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20149 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20150}
20151if (GTHI (tmp_argihi, tmp_argjhi)) {
20152 {
20153 UQI opval = 2;
20154 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20155 written |= (1 << 9);
20156 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20157 }
20158} else {
20159if (EQHI (tmp_argihi, tmp_argjhi)) {
20160 {
20161 UQI opval = 8;
20162 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20163 written |= (1 << 9);
20164 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20165 }
20166} else {
20167if (LTHI (tmp_argihi, tmp_argjhi)) {
20168 {
20169 UQI opval = 4;
20170 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20171 written |= (1 << 9);
20172 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20173 }
20174} else {
20175 {
20176 UQI opval = 1;
20177 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20178 written |= (1 << 9);
20179 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20180 }
20181}
20182}
20183}
20184if (GTHI (tmp_argilo, tmp_argjlo)) {
20185 {
20186 UQI opval = 2;
b29791a8 20187 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20188 written |= (1 << 10);
20189 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20190 }
20191} else {
20192if (EQHI (tmp_argilo, tmp_argjlo)) {
20193 {
20194 UQI opval = 8;
b29791a8 20195 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20196 written |= (1 << 10);
20197 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20198 }
20199} else {
20200if (LTHI (tmp_argilo, tmp_argjlo)) {
20201 {
20202 UQI opval = 4;
b29791a8 20203 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20204 written |= (1 << 10);
20205 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20206 }
20207} else {
20208 {
20209 UQI opval = 1;
b29791a8 20210 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20211 written |= (1 << 10);
20212 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20213 }
20214}
20215}
20216}
20217}
20218}
20219
20220 abuf->written = written;
20221 return vpc;
20222#undef FLD
20223}
20224
20225/* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20226
20227static SEM_PC
20228SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20229{
20230#define FLD(f) abuf->fields.sfmt_mcmpsh.f
20231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20232 int UNUSED written = 0;
20233 IADDR UNUSED pc = abuf->addr;
20234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20235
20236if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20237frvbf_media_cr_not_aligned (current_cpu);
20238} else {
20239{
20240 UHI tmp_argihi;
20241 UHI tmp_argilo;
20242 UHI tmp_argjhi;
20243 UHI tmp_argjlo;
20244{
b29791a8
DE
20245 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20246 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20247 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20248 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20249}
20250if (GTUHI (tmp_argihi, tmp_argjhi)) {
20251 {
20252 UQI opval = 2;
20253 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20254 written |= (1 << 9);
20255 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20256 }
20257} else {
20258if (EQHI (tmp_argihi, tmp_argjhi)) {
20259 {
20260 UQI opval = 8;
20261 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20262 written |= (1 << 9);
20263 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20264 }
20265} else {
20266if (LTUHI (tmp_argihi, tmp_argjhi)) {
20267 {
20268 UQI opval = 4;
20269 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20270 written |= (1 << 9);
20271 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20272 }
20273} else {
20274 {
20275 UQI opval = 1;
20276 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20277 written |= (1 << 9);
20278 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20279 }
20280}
20281}
20282}
20283if (GTUHI (tmp_argilo, tmp_argjlo)) {
20284 {
20285 UQI opval = 2;
b29791a8 20286 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20287 written |= (1 << 10);
20288 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20289 }
20290} else {
20291if (EQHI (tmp_argilo, tmp_argjlo)) {
20292 {
20293 UQI opval = 8;
b29791a8 20294 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20295 written |= (1 << 10);
20296 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20297 }
20298} else {
20299if (LTUHI (tmp_argilo, tmp_argjlo)) {
20300 {
20301 UQI opval = 4;
b29791a8 20302 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20303 written |= (1 << 10);
20304 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20305 }
20306} else {
20307 {
20308 UQI opval = 1;
b29791a8 20309 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
b34f6357
DB
20310 written |= (1 << 10);
20311 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20312 }
20313}
20314}
20315}
20316}
20317}
20318
20319 abuf->written = written;
20320 return vpc;
20321#undef FLD
20322}
20323
20324/* mabshs: mabshs$pack $FRintj,$FRintk */
20325
20326static SEM_PC
20327SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20328{
20329#define FLD(f) abuf->fields.sfmt_mabshs.f
20330 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20331 int UNUSED written = 0;
20332 IADDR UNUSED pc = abuf->addr;
20333 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20334
20335{
20336 HI tmp_arghi;
20337 HI tmp_arglo;
20338 {
20339 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20340 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20341 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20342 }
20343 {
20344 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20345 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20346 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20347 }
b29791a8
DE
20348 tmp_arghi = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
20349 tmp_arglo = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
7b1a2840 20350if (GTDI (ABSDI (EXTHIDI (tmp_arghi)), 32767)) {
b34f6357
DB
20351{
20352 {
20353 UHI opval = 32767;
b29791a8 20354 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20355 written |= (1 << 8);
20356 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20357 }
20358frvbf_media_overflow (current_cpu, 8);
20359}
20360} else {
7b1a2840 20361if (LTDI (ABSDI (EXTHIDI (tmp_arghi)), -32768)) {
b34f6357
DB
20362{
20363 {
20364 UHI opval = -32768;
b29791a8 20365 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20366 written |= (1 << 8);
20367 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20368 }
20369frvbf_media_overflow (current_cpu, 8);
20370}
20371} else {
20372 {
7b1a2840 20373 UHI opval = ABSDI (EXTHIDI (tmp_arghi));
b29791a8 20374 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20375 written |= (1 << 8);
20376 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20377 }
20378}
20379}
7b1a2840 20380if (GTDI (ABSDI (EXTHIDI (tmp_arglo)), 32767)) {
b34f6357
DB
20381{
20382 {
20383 UHI opval = 32767;
b29791a8 20384 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20385 written |= (1 << 9);
20386 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20387 }
20388frvbf_media_overflow (current_cpu, 4);
20389}
20390} else {
7b1a2840 20391if (LTDI (ABSDI (EXTHIDI (tmp_arglo)), -32768)) {
b34f6357
DB
20392{
20393 {
20394 UHI opval = -32768;
b29791a8 20395 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20396 written |= (1 << 9);
20397 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20398 }
20399frvbf_media_overflow (current_cpu, 4);
20400}
20401} else {
20402 {
7b1a2840 20403 UHI opval = ABSDI (EXTHIDI (tmp_arglo));
b29791a8 20404 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20405 written |= (1 << 9);
20406 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20407 }
20408}
20409}
20410}
20411
20412 abuf->written = written;
20413 return vpc;
20414#undef FLD
20415}
20416
20417/* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20418
20419static SEM_PC
20420SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20421{
20422#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20424 int UNUSED written = 0;
20425 IADDR UNUSED pc = abuf->addr;
20426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20427
20428{
20429 HI tmp_argihi;
20430 HI tmp_argilo;
20431 HI tmp_argjhi;
20432 HI tmp_argjlo;
20433{
b29791a8
DE
20434 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20435 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20436 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20437 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20438}
20439{
20440 DI tmp_tmp;
7b1a2840 20441 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20442if (GTDI (tmp_tmp, 32767)) {
20443{
20444 {
20445 UHI opval = 32767;
b29791a8 20446 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20447 written |= (1 << 9);
20448 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20449 }
20450frvbf_media_overflow (current_cpu, 8);
20451}
20452} else {
20453if (LTDI (tmp_tmp, -32768)) {
20454{
20455 {
20456 UHI opval = -32768;
b29791a8 20457 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20458 written |= (1 << 9);
20459 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20460 }
20461frvbf_media_overflow (current_cpu, 8);
20462}
20463} else {
20464 {
20465 UHI opval = tmp_tmp;
b29791a8 20466 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20467 written |= (1 << 9);
20468 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20469 }
20470}
20471}
20472}
20473{
20474 DI tmp_tmp;
7b1a2840 20475 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20476if (GTDI (tmp_tmp, 32767)) {
20477{
20478 {
20479 UHI opval = 32767;
b29791a8 20480 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20481 written |= (1 << 10);
20482 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20483 }
20484frvbf_media_overflow (current_cpu, 4);
20485}
20486} else {
20487if (LTDI (tmp_tmp, -32768)) {
20488{
20489 {
20490 UHI opval = -32768;
b29791a8 20491 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20492 written |= (1 << 10);
20493 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20494 }
20495frvbf_media_overflow (current_cpu, 4);
20496}
20497} else {
20498 {
20499 UHI opval = tmp_tmp;
b29791a8 20500 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20501 written |= (1 << 10);
20502 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20503 }
20504}
20505}
20506}
20507}
20508
20509 abuf->written = written;
20510 return vpc;
20511#undef FLD
20512}
20513
20514/* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20515
20516static SEM_PC
20517SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20518{
20519#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20521 int UNUSED written = 0;
20522 IADDR UNUSED pc = abuf->addr;
20523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20524
20525{
20526 UHI tmp_argihi;
20527 UHI tmp_argilo;
20528 UHI tmp_argjhi;
20529 UHI tmp_argjlo;
20530{
b29791a8
DE
20531 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20532 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20533 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20534 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20535}
20536{
20537 DI tmp_tmp;
7b1a2840 20538 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20539if (GTDI (tmp_tmp, 65535)) {
20540{
20541 {
20542 UHI opval = 65535;
b29791a8 20543 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20544 written |= (1 << 9);
20545 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20546 }
20547frvbf_media_overflow (current_cpu, 8);
20548}
20549} else {
20550if (LTDI (tmp_tmp, 0)) {
20551{
20552 {
20553 UHI opval = 0;
b29791a8 20554 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20555 written |= (1 << 9);
20556 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20557 }
20558frvbf_media_overflow (current_cpu, 8);
20559}
20560} else {
20561 {
20562 UHI opval = tmp_tmp;
b29791a8 20563 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20564 written |= (1 << 9);
20565 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20566 }
20567}
20568}
20569}
20570{
20571 DI tmp_tmp;
7b1a2840 20572 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20573if (GTDI (tmp_tmp, 65535)) {
20574{
20575 {
20576 UHI opval = 65535;
b29791a8 20577 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20578 written |= (1 << 10);
20579 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20580 }
20581frvbf_media_overflow (current_cpu, 4);
20582}
20583} else {
20584if (LTDI (tmp_tmp, 0)) {
20585{
20586 {
20587 UHI opval = 0;
b29791a8 20588 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20589 written |= (1 << 10);
20590 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20591 }
20592frvbf_media_overflow (current_cpu, 4);
20593}
20594} else {
20595 {
20596 UHI opval = tmp_tmp;
b29791a8 20597 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20598 written |= (1 << 10);
20599 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20600 }
20601}
20602}
20603}
20604}
20605
20606 abuf->written = written;
20607 return vpc;
20608#undef FLD
20609}
20610
20611/* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20612
20613static SEM_PC
20614SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20615{
20616#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20618 int UNUSED written = 0;
20619 IADDR UNUSED pc = abuf->addr;
20620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20621
20622{
20623 HI tmp_argihi;
20624 HI tmp_argilo;
20625 HI tmp_argjhi;
20626 HI tmp_argjlo;
20627{
b29791a8
DE
20628 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20629 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20630 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20631 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20632}
20633{
20634 DI tmp_tmp;
7b1a2840 20635 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20636if (GTDI (tmp_tmp, 32767)) {
20637{
20638 {
20639 UHI opval = 32767;
b29791a8 20640 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20641 written |= (1 << 9);
20642 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20643 }
20644frvbf_media_overflow (current_cpu, 8);
20645}
20646} else {
20647if (LTDI (tmp_tmp, -32768)) {
20648{
20649 {
20650 UHI opval = -32768;
b29791a8 20651 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20652 written |= (1 << 9);
20653 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20654 }
20655frvbf_media_overflow (current_cpu, 8);
20656}
20657} else {
20658 {
20659 UHI opval = tmp_tmp;
b29791a8 20660 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20661 written |= (1 << 9);
20662 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20663 }
20664}
20665}
20666}
20667{
20668 DI tmp_tmp;
7b1a2840 20669 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20670if (GTDI (tmp_tmp, 32767)) {
20671{
20672 {
20673 UHI opval = 32767;
b29791a8 20674 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20675 written |= (1 << 10);
20676 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20677 }
20678frvbf_media_overflow (current_cpu, 4);
20679}
20680} else {
20681if (LTDI (tmp_tmp, -32768)) {
20682{
20683 {
20684 UHI opval = -32768;
b29791a8 20685 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20686 written |= (1 << 10);
20687 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20688 }
20689frvbf_media_overflow (current_cpu, 4);
20690}
20691} else {
20692 {
20693 UHI opval = tmp_tmp;
b29791a8 20694 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20695 written |= (1 << 10);
20696 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20697 }
20698}
20699}
20700}
20701}
20702
20703 abuf->written = written;
20704 return vpc;
20705#undef FLD
20706}
20707
20708/* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20709
20710static SEM_PC
20711SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20712{
20713#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20714 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20715 int UNUSED written = 0;
20716 IADDR UNUSED pc = abuf->addr;
20717 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20718
20719{
20720 UHI tmp_argihi;
20721 UHI tmp_argilo;
20722 UHI tmp_argjhi;
20723 UHI tmp_argjlo;
20724{
b29791a8
DE
20725 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20726 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20727 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20728 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20729}
20730{
20731 DI tmp_tmp;
7b1a2840 20732 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20733if (GTDI (tmp_tmp, 65535)) {
20734{
20735 {
20736 UHI opval = 65535;
b29791a8 20737 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20738 written |= (1 << 9);
20739 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20740 }
20741frvbf_media_overflow (current_cpu, 8);
20742}
20743} else {
20744if (LTDI (tmp_tmp, 0)) {
20745{
20746 {
20747 UHI opval = 0;
b29791a8 20748 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20749 written |= (1 << 9);
20750 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20751 }
20752frvbf_media_overflow (current_cpu, 8);
20753}
20754} else {
20755 {
20756 UHI opval = tmp_tmp;
b29791a8 20757 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20758 written |= (1 << 9);
20759 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20760 }
20761}
20762}
20763}
20764{
20765 DI tmp_tmp;
7b1a2840 20766 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20767if (GTDI (tmp_tmp, 65535)) {
20768{
20769 {
20770 UHI opval = 65535;
b29791a8 20771 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20772 written |= (1 << 10);
20773 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20774 }
20775frvbf_media_overflow (current_cpu, 4);
20776}
20777} else {
20778if (LTDI (tmp_tmp, 0)) {
20779{
20780 {
20781 UHI opval = 0;
b29791a8 20782 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20783 written |= (1 << 10);
20784 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20785 }
20786frvbf_media_overflow (current_cpu, 4);
20787}
20788} else {
20789 {
20790 UHI opval = tmp_tmp;
b29791a8 20791 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20792 written |= (1 << 10);
20793 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20794 }
20795}
20796}
20797}
20798}
20799
20800 abuf->written = written;
20801 return vpc;
20802#undef FLD
20803}
20804
20805/* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20806
20807static SEM_PC
20808SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20809{
20810#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20811 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20812 int UNUSED written = 0;
20813 IADDR UNUSED pc = abuf->addr;
20814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20815
20816if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20817{
20818 HI tmp_argihi;
20819 HI tmp_argilo;
20820 HI tmp_argjhi;
20821 HI tmp_argjlo;
20822{
b29791a8
DE
20823 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20824 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20825 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20826 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20827}
20828{
20829 DI tmp_tmp;
7b1a2840 20830 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
20831if (GTDI (tmp_tmp, 32767)) {
20832{
20833 {
20834 UHI opval = 32767;
b29791a8 20835 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20836 written |= (1 << 11);
20837 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20838 }
20839frvbf_media_overflow (current_cpu, 8);
20840}
20841} else {
20842if (LTDI (tmp_tmp, -32768)) {
20843{
20844 {
20845 UHI opval = -32768;
b29791a8 20846 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20847 written |= (1 << 11);
20848 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20849 }
20850frvbf_media_overflow (current_cpu, 8);
20851}
20852} else {
20853 {
20854 UHI opval = tmp_tmp;
b29791a8 20855 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20856 written |= (1 << 11);
20857 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20858 }
20859}
20860}
20861}
20862{
20863 DI tmp_tmp;
7b1a2840 20864 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
20865if (GTDI (tmp_tmp, 32767)) {
20866{
20867 {
20868 UHI opval = 32767;
b29791a8 20869 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20870 written |= (1 << 12);
20871 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20872 }
20873frvbf_media_overflow (current_cpu, 4);
20874}
20875} else {
20876if (LTDI (tmp_tmp, -32768)) {
20877{
20878 {
20879 UHI opval = -32768;
b29791a8 20880 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20881 written |= (1 << 12);
20882 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20883 }
20884frvbf_media_overflow (current_cpu, 4);
20885}
20886} else {
20887 {
20888 UHI opval = tmp_tmp;
b29791a8 20889 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20890 written |= (1 << 12);
20891 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20892 }
20893}
20894}
20895}
20896}
20897}
20898
20899 abuf->written = written;
20900 return vpc;
20901#undef FLD
20902}
20903
20904/* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20905
20906static SEM_PC
20907SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20908{
20909#define FLD(f) abuf->fields.sfmt_cmaddhss.f
20910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20911 int UNUSED written = 0;
20912 IADDR UNUSED pc = abuf->addr;
20913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20914
20915if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20916{
20917 UHI tmp_argihi;
20918 UHI tmp_argilo;
20919 UHI tmp_argjhi;
20920 UHI tmp_argjlo;
20921{
b29791a8
DE
20922 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20923 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20924 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20925 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
20926}
20927{
20928 DI tmp_tmp;
7b1a2840 20929 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
20930if (GTDI (tmp_tmp, 65535)) {
20931{
20932 {
20933 UHI opval = 65535;
b29791a8 20934 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20935 written |= (1 << 11);
20936 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20937 }
20938frvbf_media_overflow (current_cpu, 8);
20939}
20940} else {
20941if (LTDI (tmp_tmp, 0)) {
20942{
20943 {
20944 UHI opval = 0;
b29791a8 20945 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20946 written |= (1 << 11);
20947 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20948 }
20949frvbf_media_overflow (current_cpu, 8);
20950}
20951} else {
20952 {
20953 UHI opval = tmp_tmp;
b29791a8 20954 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20955 written |= (1 << 11);
20956 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20957 }
20958}
20959}
20960}
20961{
20962 DI tmp_tmp;
7b1a2840 20963 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
20964if (GTDI (tmp_tmp, 65535)) {
20965{
20966 {
20967 UHI opval = 65535;
b29791a8 20968 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20969 written |= (1 << 12);
20970 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20971 }
20972frvbf_media_overflow (current_cpu, 4);
20973}
20974} else {
20975if (LTDI (tmp_tmp, 0)) {
20976{
20977 {
20978 UHI opval = 0;
b29791a8 20979 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20980 written |= (1 << 12);
20981 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20982 }
20983frvbf_media_overflow (current_cpu, 4);
20984}
20985} else {
20986 {
20987 UHI opval = tmp_tmp;
b29791a8 20988 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
20989 written |= (1 << 12);
20990 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20991 }
20992}
20993}
20994}
20995}
20996}
20997
20998 abuf->written = written;
20999 return vpc;
21000#undef FLD
21001}
21002
21003/* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21004
21005static SEM_PC
21006SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21007{
21008#define FLD(f) abuf->fields.sfmt_cmaddhss.f
21009 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21010 int UNUSED written = 0;
21011 IADDR UNUSED pc = abuf->addr;
21012 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21013
21014if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21015{
21016 HI tmp_argihi;
21017 HI tmp_argilo;
21018 HI tmp_argjhi;
21019 HI tmp_argjlo;
21020{
b29791a8
DE
21021 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21022 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21023 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21024 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21025}
21026{
21027 DI tmp_tmp;
7b1a2840 21028 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21029if (GTDI (tmp_tmp, 32767)) {
21030{
21031 {
21032 UHI opval = 32767;
b29791a8 21033 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21034 written |= (1 << 11);
21035 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21036 }
21037frvbf_media_overflow (current_cpu, 8);
21038}
21039} else {
21040if (LTDI (tmp_tmp, -32768)) {
21041{
21042 {
21043 UHI opval = -32768;
b29791a8 21044 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21045 written |= (1 << 11);
21046 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21047 }
21048frvbf_media_overflow (current_cpu, 8);
21049}
21050} else {
21051 {
21052 UHI opval = tmp_tmp;
b29791a8 21053 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21054 written |= (1 << 11);
21055 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21056 }
21057}
21058}
21059}
21060{
21061 DI tmp_tmp;
7b1a2840 21062 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21063if (GTDI (tmp_tmp, 32767)) {
21064{
21065 {
21066 UHI opval = 32767;
b29791a8 21067 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21068 written |= (1 << 12);
21069 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21070 }
21071frvbf_media_overflow (current_cpu, 4);
21072}
21073} else {
21074if (LTDI (tmp_tmp, -32768)) {
21075{
21076 {
21077 UHI opval = -32768;
b29791a8 21078 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21079 written |= (1 << 12);
21080 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21081 }
21082frvbf_media_overflow (current_cpu, 4);
21083}
21084} else {
21085 {
21086 UHI opval = tmp_tmp;
b29791a8 21087 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21088 written |= (1 << 12);
21089 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21090 }
21091}
21092}
21093}
21094}
21095}
21096
21097 abuf->written = written;
21098 return vpc;
21099#undef FLD
21100}
21101
21102/* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21103
21104static SEM_PC
21105SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21106{
21107#define FLD(f) abuf->fields.sfmt_cmaddhss.f
21108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21109 int UNUSED written = 0;
21110 IADDR UNUSED pc = abuf->addr;
21111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21112
21113if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21114{
21115 UHI tmp_argihi;
21116 UHI tmp_argilo;
21117 UHI tmp_argjhi;
21118 UHI tmp_argjlo;
21119{
b29791a8
DE
21120 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21121 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21122 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21123 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21124}
21125{
21126 DI tmp_tmp;
7b1a2840 21127 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21128if (GTDI (tmp_tmp, 65535)) {
21129{
21130 {
21131 UHI opval = 65535;
b29791a8 21132 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21133 written |= (1 << 11);
21134 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21135 }
21136frvbf_media_overflow (current_cpu, 8);
21137}
21138} else {
21139if (LTDI (tmp_tmp, 0)) {
21140{
21141 {
21142 UHI opval = 0;
b29791a8 21143 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21144 written |= (1 << 11);
21145 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21146 }
21147frvbf_media_overflow (current_cpu, 8);
21148}
21149} else {
21150 {
21151 UHI opval = tmp_tmp;
b29791a8 21152 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21153 written |= (1 << 11);
21154 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21155 }
21156}
21157}
21158}
21159{
21160 DI tmp_tmp;
7b1a2840 21161 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21162if (GTDI (tmp_tmp, 65535)) {
21163{
21164 {
21165 UHI opval = 65535;
b29791a8 21166 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21167 written |= (1 << 12);
21168 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21169 }
21170frvbf_media_overflow (current_cpu, 4);
21171}
21172} else {
21173if (LTDI (tmp_tmp, 0)) {
21174{
21175 {
21176 UHI opval = 0;
b29791a8 21177 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21178 written |= (1 << 12);
21179 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21180 }
21181frvbf_media_overflow (current_cpu, 4);
21182}
21183} else {
21184 {
21185 UHI opval = tmp_tmp;
b29791a8 21186 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21187 written |= (1 << 12);
21188 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21189 }
21190}
21191}
21192}
21193}
21194}
21195
21196 abuf->written = written;
21197 return vpc;
21198#undef FLD
21199}
21200
21201/* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21202
21203static SEM_PC
21204SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21205{
21206#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21208 int UNUSED written = 0;
21209 IADDR UNUSED pc = abuf->addr;
21210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21211
21212if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21213frvbf_media_register_not_aligned (current_cpu);
21214} else {
21215{
21216 HI tmp_argihi;
21217 HI tmp_argilo;
21218 HI tmp_argjhi;
21219 HI tmp_argjlo;
21220 {
21221 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21222 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21223 written |= (1 << 14);
21224 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21225 }
21226{
b29791a8
DE
21227 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21228 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21229 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21230 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21231}
21232{
21233 DI tmp_tmp;
7b1a2840 21234 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21235if (GTDI (tmp_tmp, 32767)) {
21236{
21237 {
21238 UHI opval = 32767;
b29791a8 21239 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21240 written |= (1 << 15);
21241 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21242 }
21243frvbf_media_overflow (current_cpu, 8);
21244}
21245} else {
21246if (LTDI (tmp_tmp, -32768)) {
21247{
21248 {
21249 UHI opval = -32768;
b29791a8 21250 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21251 written |= (1 << 15);
21252 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21253 }
21254frvbf_media_overflow (current_cpu, 8);
21255}
21256} else {
21257 {
21258 UHI opval = tmp_tmp;
b29791a8 21259 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21260 written |= (1 << 15);
21261 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21262 }
21263}
21264}
21265}
21266{
21267 DI tmp_tmp;
7b1a2840 21268 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21269if (GTDI (tmp_tmp, 32767)) {
21270{
21271 {
21272 UHI opval = 32767;
b29791a8 21273 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21274 written |= (1 << 17);
21275 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21276 }
21277frvbf_media_overflow (current_cpu, 4);
21278}
21279} else {
21280if (LTDI (tmp_tmp, -32768)) {
21281{
21282 {
21283 UHI opval = -32768;
b29791a8 21284 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21285 written |= (1 << 17);
21286 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21287 }
21288frvbf_media_overflow (current_cpu, 4);
21289}
21290} else {
21291 {
21292 UHI opval = tmp_tmp;
b29791a8 21293 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21294 written |= (1 << 17);
21295 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21296 }
21297}
21298}
21299}
21300{
b29791a8
DE
21301 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21302 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21303 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21304 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21305}
21306{
21307 DI tmp_tmp;
7b1a2840 21308 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21309if (GTDI (tmp_tmp, 32767)) {
21310{
21311 {
21312 UHI opval = 32767;
b29791a8 21313 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21314 written |= (1 << 16);
21315 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21316 }
21317frvbf_media_overflow (current_cpu, 2);
21318}
21319} else {
21320if (LTDI (tmp_tmp, -32768)) {
21321{
21322 {
21323 UHI opval = -32768;
b29791a8 21324 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21325 written |= (1 << 16);
21326 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21327 }
21328frvbf_media_overflow (current_cpu, 2);
21329}
21330} else {
21331 {
21332 UHI opval = tmp_tmp;
b29791a8 21333 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21334 written |= (1 << 16);
21335 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21336 }
21337}
21338}
21339}
21340{
21341 DI tmp_tmp;
7b1a2840 21342 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21343if (GTDI (tmp_tmp, 32767)) {
21344{
21345 {
21346 UHI opval = 32767;
b29791a8 21347 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21348 written |= (1 << 18);
21349 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21350 }
21351frvbf_media_overflow (current_cpu, 1);
21352}
21353} else {
21354if (LTDI (tmp_tmp, -32768)) {
21355{
21356 {
21357 UHI opval = -32768;
b29791a8 21358 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21359 written |= (1 << 18);
21360 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21361 }
21362frvbf_media_overflow (current_cpu, 1);
21363}
21364} else {
21365 {
21366 UHI opval = tmp_tmp;
b29791a8 21367 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21368 written |= (1 << 18);
21369 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21370 }
21371}
21372}
21373}
21374}
21375}
21376
21377 abuf->written = written;
21378 return vpc;
21379#undef FLD
21380}
21381
21382/* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21383
21384static SEM_PC
21385SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21386{
21387#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21389 int UNUSED written = 0;
21390 IADDR UNUSED pc = abuf->addr;
21391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21392
21393if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21394frvbf_media_register_not_aligned (current_cpu);
21395} else {
21396{
21397 UHI tmp_argihi;
21398 UHI tmp_argilo;
21399 UHI tmp_argjhi;
21400 UHI tmp_argjlo;
21401 {
21402 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21403 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21404 written |= (1 << 14);
21405 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21406 }
21407{
b29791a8
DE
21408 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21409 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21410 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21411 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21412}
21413{
21414 DI tmp_tmp;
7b1a2840 21415 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21416if (GTDI (tmp_tmp, 65535)) {
21417{
21418 {
21419 UHI opval = 65535;
b29791a8 21420 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21421 written |= (1 << 15);
21422 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21423 }
21424frvbf_media_overflow (current_cpu, 8);
21425}
21426} else {
21427if (LTDI (tmp_tmp, 0)) {
21428{
21429 {
21430 UHI opval = 0;
b29791a8 21431 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21432 written |= (1 << 15);
21433 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21434 }
21435frvbf_media_overflow (current_cpu, 8);
21436}
21437} else {
21438 {
21439 UHI opval = tmp_tmp;
b29791a8 21440 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21441 written |= (1 << 15);
21442 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21443 }
21444}
21445}
21446}
21447{
21448 DI tmp_tmp;
7b1a2840 21449 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21450if (GTDI (tmp_tmp, 65535)) {
21451{
21452 {
21453 UHI opval = 65535;
b29791a8 21454 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21455 written |= (1 << 17);
21456 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21457 }
21458frvbf_media_overflow (current_cpu, 4);
21459}
21460} else {
21461if (LTDI (tmp_tmp, 0)) {
21462{
21463 {
21464 UHI opval = 0;
b29791a8 21465 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21466 written |= (1 << 17);
21467 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21468 }
21469frvbf_media_overflow (current_cpu, 4);
21470}
21471} else {
21472 {
21473 UHI opval = tmp_tmp;
b29791a8 21474 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21475 written |= (1 << 17);
21476 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21477 }
21478}
21479}
21480}
21481{
b29791a8
DE
21482 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21483 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21484 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21485 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21486}
21487{
21488 DI tmp_tmp;
7b1a2840 21489 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21490if (GTDI (tmp_tmp, 65535)) {
21491{
21492 {
21493 UHI opval = 65535;
b29791a8 21494 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21495 written |= (1 << 16);
21496 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21497 }
21498frvbf_media_overflow (current_cpu, 2);
21499}
21500} else {
21501if (LTDI (tmp_tmp, 0)) {
21502{
21503 {
21504 UHI opval = 0;
b29791a8 21505 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21506 written |= (1 << 16);
21507 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21508 }
21509frvbf_media_overflow (current_cpu, 2);
21510}
21511} else {
21512 {
21513 UHI opval = tmp_tmp;
b29791a8 21514 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21515 written |= (1 << 16);
21516 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21517 }
21518}
21519}
21520}
21521{
21522 DI tmp_tmp;
7b1a2840 21523 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21524if (GTDI (tmp_tmp, 65535)) {
21525{
21526 {
21527 UHI opval = 65535;
b29791a8 21528 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21529 written |= (1 << 18);
21530 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21531 }
21532frvbf_media_overflow (current_cpu, 1);
21533}
21534} else {
21535if (LTDI (tmp_tmp, 0)) {
21536{
21537 {
21538 UHI opval = 0;
b29791a8 21539 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21540 written |= (1 << 18);
21541 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21542 }
21543frvbf_media_overflow (current_cpu, 1);
21544}
21545} else {
21546 {
21547 UHI opval = tmp_tmp;
b29791a8 21548 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21549 written |= (1 << 18);
21550 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21551 }
21552}
21553}
21554}
21555}
21556}
21557
21558 abuf->written = written;
21559 return vpc;
21560#undef FLD
21561}
21562
21563/* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21564
21565static SEM_PC
21566SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21567{
21568#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21569 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21570 int UNUSED written = 0;
21571 IADDR UNUSED pc = abuf->addr;
21572 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21573
21574if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21575frvbf_media_register_not_aligned (current_cpu);
21576} else {
21577{
21578 HI tmp_argihi;
21579 HI tmp_argilo;
21580 HI tmp_argjhi;
21581 HI tmp_argjlo;
21582 {
21583 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21584 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21585 written |= (1 << 14);
21586 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21587 }
21588{
b29791a8
DE
21589 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21590 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21591 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21592 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21593}
21594{
21595 DI tmp_tmp;
7b1a2840 21596 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21597if (GTDI (tmp_tmp, 32767)) {
21598{
21599 {
21600 UHI opval = 32767;
b29791a8 21601 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21602 written |= (1 << 15);
21603 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21604 }
21605frvbf_media_overflow (current_cpu, 8);
21606}
21607} else {
21608if (LTDI (tmp_tmp, -32768)) {
21609{
21610 {
21611 UHI opval = -32768;
b29791a8 21612 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21613 written |= (1 << 15);
21614 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21615 }
21616frvbf_media_overflow (current_cpu, 8);
21617}
21618} else {
21619 {
21620 UHI opval = tmp_tmp;
b29791a8 21621 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21622 written |= (1 << 15);
21623 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21624 }
21625}
21626}
21627}
21628{
21629 DI tmp_tmp;
7b1a2840 21630 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21631if (GTDI (tmp_tmp, 32767)) {
21632{
21633 {
21634 UHI opval = 32767;
b29791a8 21635 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21636 written |= (1 << 17);
21637 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21638 }
21639frvbf_media_overflow (current_cpu, 4);
21640}
21641} else {
21642if (LTDI (tmp_tmp, -32768)) {
21643{
21644 {
21645 UHI opval = -32768;
b29791a8 21646 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21647 written |= (1 << 17);
21648 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21649 }
21650frvbf_media_overflow (current_cpu, 4);
21651}
21652} else {
21653 {
21654 UHI opval = tmp_tmp;
b29791a8 21655 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21656 written |= (1 << 17);
21657 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21658 }
21659}
21660}
21661}
21662{
b29791a8
DE
21663 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21664 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21665 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21666 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21667}
21668{
21669 DI tmp_tmp;
7b1a2840 21670 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21671if (GTDI (tmp_tmp, 32767)) {
21672{
21673 {
21674 UHI opval = 32767;
b29791a8 21675 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21676 written |= (1 << 16);
21677 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21678 }
21679frvbf_media_overflow (current_cpu, 2);
21680}
21681} else {
21682if (LTDI (tmp_tmp, -32768)) {
21683{
21684 {
21685 UHI opval = -32768;
b29791a8 21686 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21687 written |= (1 << 16);
21688 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21689 }
21690frvbf_media_overflow (current_cpu, 2);
21691}
21692} else {
21693 {
21694 UHI opval = tmp_tmp;
b29791a8 21695 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21696 written |= (1 << 16);
21697 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21698 }
21699}
21700}
21701}
21702{
21703 DI tmp_tmp;
7b1a2840 21704 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21705if (GTDI (tmp_tmp, 32767)) {
21706{
21707 {
21708 UHI opval = 32767;
b29791a8 21709 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21710 written |= (1 << 18);
21711 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21712 }
21713frvbf_media_overflow (current_cpu, 1);
21714}
21715} else {
21716if (LTDI (tmp_tmp, -32768)) {
21717{
21718 {
21719 UHI opval = -32768;
b29791a8 21720 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21721 written |= (1 << 18);
21722 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21723 }
21724frvbf_media_overflow (current_cpu, 1);
21725}
21726} else {
21727 {
21728 UHI opval = tmp_tmp;
b29791a8 21729 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21730 written |= (1 << 18);
21731 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21732 }
21733}
21734}
21735}
21736}
21737}
21738
21739 abuf->written = written;
21740 return vpc;
21741#undef FLD
21742}
21743
21744/* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21745
21746static SEM_PC
21747SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21748{
21749#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21751 int UNUSED written = 0;
21752 IADDR UNUSED pc = abuf->addr;
21753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21754
21755if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21756frvbf_media_register_not_aligned (current_cpu);
21757} else {
21758{
21759 UHI tmp_argihi;
21760 UHI tmp_argilo;
21761 UHI tmp_argjhi;
21762 UHI tmp_argjlo;
21763 {
21764 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21765 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21766 written |= (1 << 14);
21767 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21768 }
21769{
b29791a8
DE
21770 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21771 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21772 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21773 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21774}
21775{
21776 DI tmp_tmp;
7b1a2840 21777 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21778if (GTDI (tmp_tmp, 65535)) {
21779{
21780 {
21781 UHI opval = 65535;
b29791a8 21782 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21783 written |= (1 << 15);
21784 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21785 }
21786frvbf_media_overflow (current_cpu, 8);
21787}
21788} else {
21789if (LTDI (tmp_tmp, 0)) {
21790{
21791 {
21792 UHI opval = 0;
b29791a8 21793 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21794 written |= (1 << 15);
21795 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21796 }
21797frvbf_media_overflow (current_cpu, 8);
21798}
21799} else {
21800 {
21801 UHI opval = tmp_tmp;
b29791a8 21802 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21803 written |= (1 << 15);
21804 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21805 }
21806}
21807}
21808}
21809{
21810 DI tmp_tmp;
7b1a2840 21811 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21812if (GTDI (tmp_tmp, 65535)) {
21813{
21814 {
21815 UHI opval = 65535;
b29791a8 21816 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21817 written |= (1 << 17);
21818 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21819 }
21820frvbf_media_overflow (current_cpu, 4);
21821}
21822} else {
21823if (LTDI (tmp_tmp, 0)) {
21824{
21825 {
21826 UHI opval = 0;
b29791a8 21827 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21828 written |= (1 << 17);
21829 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21830 }
21831frvbf_media_overflow (current_cpu, 4);
21832}
21833} else {
21834 {
21835 UHI opval = tmp_tmp;
b29791a8 21836 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21837 written |= (1 << 17);
21838 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21839 }
21840}
21841}
21842}
21843{
b29791a8
DE
21844 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21845 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21846 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21847 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21848}
21849{
21850 DI tmp_tmp;
7b1a2840 21851 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
21852if (GTDI (tmp_tmp, 65535)) {
21853{
21854 {
21855 UHI opval = 65535;
b29791a8 21856 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21857 written |= (1 << 16);
21858 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21859 }
21860frvbf_media_overflow (current_cpu, 2);
21861}
21862} else {
21863if (LTDI (tmp_tmp, 0)) {
21864{
21865 {
21866 UHI opval = 0;
b29791a8 21867 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21868 written |= (1 << 16);
21869 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21870 }
21871frvbf_media_overflow (current_cpu, 2);
21872}
21873} else {
21874 {
21875 UHI opval = tmp_tmp;
b29791a8 21876 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21877 written |= (1 << 16);
21878 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21879 }
21880}
21881}
21882}
21883{
21884 DI tmp_tmp;
7b1a2840 21885 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
21886if (GTDI (tmp_tmp, 65535)) {
21887{
21888 {
21889 UHI opval = 65535;
b29791a8 21890 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21891 written |= (1 << 18);
21892 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21893 }
21894frvbf_media_overflow (current_cpu, 1);
21895}
21896} else {
21897if (LTDI (tmp_tmp, 0)) {
21898{
21899 {
21900 UHI opval = 0;
b29791a8 21901 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21902 written |= (1 << 18);
21903 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21904 }
21905frvbf_media_overflow (current_cpu, 1);
21906}
21907} else {
21908 {
21909 UHI opval = tmp_tmp;
b29791a8 21910 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
21911 written |= (1 << 18);
21912 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21913 }
21914}
21915}
21916}
21917}
21918}
21919
21920 abuf->written = written;
21921 return vpc;
21922#undef FLD
21923}
21924
21925/* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21926
21927static SEM_PC
21928SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21929{
21930#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21932 int UNUSED written = 0;
21933 IADDR UNUSED pc = abuf->addr;
21934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21935
21936if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21937frvbf_media_register_not_aligned (current_cpu);
21938} else {
21939if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21940{
21941 HI tmp_argihi;
21942 HI tmp_argilo;
21943 HI tmp_argjhi;
21944 HI tmp_argjlo;
21945 {
21946 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21947 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21948 written |= (1 << 16);
21949 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21950 }
21951{
b29791a8
DE
21952 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21953 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21954 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21955 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
21956}
21957{
21958 DI tmp_tmp;
7b1a2840 21959 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
21960if (GTDI (tmp_tmp, 32767)) {
21961{
21962 {
21963 UHI opval = 32767;
b29791a8 21964 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21965 written |= (1 << 17);
21966 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21967 }
21968frvbf_media_overflow (current_cpu, 8);
21969}
21970} else {
21971if (LTDI (tmp_tmp, -32768)) {
21972{
21973 {
21974 UHI opval = -32768;
b29791a8 21975 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21976 written |= (1 << 17);
21977 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21978 }
21979frvbf_media_overflow (current_cpu, 8);
21980}
21981} else {
21982 {
21983 UHI opval = tmp_tmp;
b29791a8 21984 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21985 written |= (1 << 17);
21986 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21987 }
21988}
21989}
21990}
21991{
21992 DI tmp_tmp;
7b1a2840 21993 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
21994if (GTDI (tmp_tmp, 32767)) {
21995{
21996 {
21997 UHI opval = 32767;
b29791a8 21998 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
21999 written |= (1 << 19);
22000 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22001 }
22002frvbf_media_overflow (current_cpu, 4);
22003}
22004} else {
22005if (LTDI (tmp_tmp, -32768)) {
22006{
22007 {
22008 UHI opval = -32768;
b29791a8 22009 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22010 written |= (1 << 19);
22011 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22012 }
22013frvbf_media_overflow (current_cpu, 4);
22014}
22015} else {
22016 {
22017 UHI opval = tmp_tmp;
b29791a8 22018 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22019 written |= (1 << 19);
22020 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22021 }
22022}
22023}
22024}
22025{
b29791a8
DE
22026 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22027 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22028 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22029 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22030}
22031{
22032 DI tmp_tmp;
7b1a2840 22033 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22034if (GTDI (tmp_tmp, 32767)) {
22035{
22036 {
22037 UHI opval = 32767;
b29791a8 22038 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22039 written |= (1 << 18);
22040 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22041 }
22042frvbf_media_overflow (current_cpu, 2);
22043}
22044} else {
22045if (LTDI (tmp_tmp, -32768)) {
22046{
22047 {
22048 UHI opval = -32768;
b29791a8 22049 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22050 written |= (1 << 18);
22051 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22052 }
22053frvbf_media_overflow (current_cpu, 2);
22054}
22055} else {
22056 {
22057 UHI opval = tmp_tmp;
b29791a8 22058 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22059 written |= (1 << 18);
22060 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22061 }
22062}
22063}
22064}
22065{
22066 DI tmp_tmp;
7b1a2840 22067 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22068if (GTDI (tmp_tmp, 32767)) {
22069{
22070 {
22071 UHI opval = 32767;
b29791a8 22072 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22073 written |= (1 << 20);
22074 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22075 }
22076frvbf_media_overflow (current_cpu, 1);
22077}
22078} else {
22079if (LTDI (tmp_tmp, -32768)) {
22080{
22081 {
22082 UHI opval = -32768;
b29791a8 22083 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22084 written |= (1 << 20);
22085 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22086 }
22087frvbf_media_overflow (current_cpu, 1);
22088}
22089} else {
22090 {
22091 UHI opval = tmp_tmp;
b29791a8 22092 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22093 written |= (1 << 20);
22094 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22095 }
22096}
22097}
22098}
22099}
22100}
22101}
22102
22103 abuf->written = written;
22104 return vpc;
22105#undef FLD
22106}
22107
22108/* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22109
22110static SEM_PC
22111SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22112{
22113#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22114 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22115 int UNUSED written = 0;
22116 IADDR UNUSED pc = abuf->addr;
22117 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22118
22119if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22120frvbf_media_register_not_aligned (current_cpu);
22121} else {
22122if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22123{
22124 UHI tmp_argihi;
22125 UHI tmp_argilo;
22126 UHI tmp_argjhi;
22127 UHI tmp_argjlo;
22128 {
22129 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22130 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22131 written |= (1 << 16);
22132 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22133 }
22134{
b29791a8
DE
22135 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22136 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22137 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22138 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22139}
22140{
22141 DI tmp_tmp;
7b1a2840 22142 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22143if (GTDI (tmp_tmp, 65535)) {
22144{
22145 {
22146 UHI opval = 65535;
b29791a8 22147 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22148 written |= (1 << 17);
22149 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22150 }
22151frvbf_media_overflow (current_cpu, 8);
22152}
22153} else {
22154if (LTDI (tmp_tmp, 0)) {
22155{
22156 {
22157 UHI opval = 0;
b29791a8 22158 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22159 written |= (1 << 17);
22160 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22161 }
22162frvbf_media_overflow (current_cpu, 8);
22163}
22164} else {
22165 {
22166 UHI opval = tmp_tmp;
b29791a8 22167 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22168 written |= (1 << 17);
22169 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22170 }
22171}
22172}
22173}
22174{
22175 DI tmp_tmp;
7b1a2840 22176 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22177if (GTDI (tmp_tmp, 65535)) {
22178{
22179 {
22180 UHI opval = 65535;
b29791a8 22181 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22182 written |= (1 << 19);
22183 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22184 }
22185frvbf_media_overflow (current_cpu, 4);
22186}
22187} else {
22188if (LTDI (tmp_tmp, 0)) {
22189{
22190 {
22191 UHI opval = 0;
b29791a8 22192 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22193 written |= (1 << 19);
22194 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22195 }
22196frvbf_media_overflow (current_cpu, 4);
22197}
22198} else {
22199 {
22200 UHI opval = tmp_tmp;
b29791a8 22201 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22202 written |= (1 << 19);
22203 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22204 }
22205}
22206}
22207}
22208{
b29791a8
DE
22209 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22210 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22211 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22212 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22213}
22214{
22215 DI tmp_tmp;
7b1a2840 22216 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22217if (GTDI (tmp_tmp, 65535)) {
22218{
22219 {
22220 UHI opval = 65535;
b29791a8 22221 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22222 written |= (1 << 18);
22223 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22224 }
22225frvbf_media_overflow (current_cpu, 2);
22226}
22227} else {
22228if (LTDI (tmp_tmp, 0)) {
22229{
22230 {
22231 UHI opval = 0;
b29791a8 22232 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22233 written |= (1 << 18);
22234 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22235 }
22236frvbf_media_overflow (current_cpu, 2);
22237}
22238} else {
22239 {
22240 UHI opval = tmp_tmp;
b29791a8 22241 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22242 written |= (1 << 18);
22243 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22244 }
22245}
22246}
22247}
22248{
22249 DI tmp_tmp;
7b1a2840 22250 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22251if (GTDI (tmp_tmp, 65535)) {
22252{
22253 {
22254 UHI opval = 65535;
b29791a8 22255 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22256 written |= (1 << 20);
22257 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22258 }
22259frvbf_media_overflow (current_cpu, 1);
22260}
22261} else {
22262if (LTDI (tmp_tmp, 0)) {
22263{
22264 {
22265 UHI opval = 0;
b29791a8 22266 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22267 written |= (1 << 20);
22268 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22269 }
22270frvbf_media_overflow (current_cpu, 1);
22271}
22272} else {
22273 {
22274 UHI opval = tmp_tmp;
b29791a8 22275 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22276 written |= (1 << 20);
22277 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22278 }
22279}
22280}
22281}
22282}
22283}
22284}
22285
22286 abuf->written = written;
22287 return vpc;
22288#undef FLD
22289}
22290
22291/* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22292
22293static SEM_PC
22294SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22295{
22296#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22298 int UNUSED written = 0;
22299 IADDR UNUSED pc = abuf->addr;
22300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22301
22302if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22303frvbf_media_register_not_aligned (current_cpu);
22304} else {
22305if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22306{
22307 HI tmp_argihi;
22308 HI tmp_argilo;
22309 HI tmp_argjhi;
22310 HI tmp_argjlo;
22311 {
22312 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22313 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22314 written |= (1 << 16);
22315 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22316 }
22317{
b29791a8
DE
22318 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22319 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22320 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22321 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22322}
22323{
22324 DI tmp_tmp;
7b1a2840 22325 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22326if (GTDI (tmp_tmp, 32767)) {
22327{
22328 {
22329 UHI opval = 32767;
b29791a8 22330 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22331 written |= (1 << 17);
22332 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22333 }
22334frvbf_media_overflow (current_cpu, 8);
22335}
22336} else {
22337if (LTDI (tmp_tmp, -32768)) {
22338{
22339 {
22340 UHI opval = -32768;
b29791a8 22341 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22342 written |= (1 << 17);
22343 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22344 }
22345frvbf_media_overflow (current_cpu, 8);
22346}
22347} else {
22348 {
22349 UHI opval = tmp_tmp;
b29791a8 22350 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22351 written |= (1 << 17);
22352 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22353 }
22354}
22355}
22356}
22357{
22358 DI tmp_tmp;
7b1a2840 22359 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22360if (GTDI (tmp_tmp, 32767)) {
22361{
22362 {
22363 UHI opval = 32767;
b29791a8 22364 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22365 written |= (1 << 19);
22366 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22367 }
22368frvbf_media_overflow (current_cpu, 4);
22369}
22370} else {
22371if (LTDI (tmp_tmp, -32768)) {
22372{
22373 {
22374 UHI opval = -32768;
b29791a8 22375 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22376 written |= (1 << 19);
22377 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22378 }
22379frvbf_media_overflow (current_cpu, 4);
22380}
22381} else {
22382 {
22383 UHI opval = tmp_tmp;
b29791a8 22384 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22385 written |= (1 << 19);
22386 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22387 }
22388}
22389}
22390}
22391{
b29791a8
DE
22392 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22393 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22394 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22395 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22396}
22397{
22398 DI tmp_tmp;
7b1a2840 22399 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b34f6357
DB
22400if (GTDI (tmp_tmp, 32767)) {
22401{
22402 {
22403 UHI opval = 32767;
b29791a8 22404 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22405 written |= (1 << 18);
22406 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22407 }
22408frvbf_media_overflow (current_cpu, 2);
22409}
22410} else {
22411if (LTDI (tmp_tmp, -32768)) {
22412{
22413 {
22414 UHI opval = -32768;
b29791a8 22415 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22416 written |= (1 << 18);
22417 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22418 }
22419frvbf_media_overflow (current_cpu, 2);
22420}
22421} else {
22422 {
22423 UHI opval = tmp_tmp;
b29791a8 22424 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22425 written |= (1 << 18);
22426 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22427 }
22428}
22429}
22430}
22431{
22432 DI tmp_tmp;
7b1a2840 22433 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b34f6357
DB
22434if (GTDI (tmp_tmp, 32767)) {
22435{
22436 {
22437 UHI opval = 32767;
b29791a8 22438 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22439 written |= (1 << 20);
22440 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22441 }
22442frvbf_media_overflow (current_cpu, 1);
22443}
22444} else {
22445if (LTDI (tmp_tmp, -32768)) {
22446{
22447 {
22448 UHI opval = -32768;
b29791a8 22449 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22450 written |= (1 << 20);
22451 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22452 }
22453frvbf_media_overflow (current_cpu, 1);
22454}
22455} else {
22456 {
22457 UHI opval = tmp_tmp;
b29791a8 22458 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22459 written |= (1 << 20);
22460 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22461 }
22462}
22463}
22464}
22465}
22466}
22467}
22468
22469 abuf->written = written;
22470 return vpc;
22471#undef FLD
22472}
22473
22474/* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22475
22476static SEM_PC
22477SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22478{
22479#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22481 int UNUSED written = 0;
22482 IADDR UNUSED pc = abuf->addr;
22483 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22484
22485if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22486frvbf_media_register_not_aligned (current_cpu);
22487} else {
22488if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22489{
22490 UHI tmp_argihi;
22491 UHI tmp_argilo;
22492 UHI tmp_argjhi;
22493 UHI tmp_argjlo;
22494 {
22495 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22496 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22497 written |= (1 << 16);
22498 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22499 }
22500{
b29791a8
DE
22501 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22502 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22503 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22504 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22505}
22506{
22507 DI tmp_tmp;
7b1a2840 22508 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22509if (GTDI (tmp_tmp, 65535)) {
22510{
22511 {
22512 UHI opval = 65535;
b29791a8 22513 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22514 written |= (1 << 17);
22515 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22516 }
22517frvbf_media_overflow (current_cpu, 8);
22518}
22519} else {
22520if (LTDI (tmp_tmp, 0)) {
22521{
22522 {
22523 UHI opval = 0;
b29791a8 22524 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22525 written |= (1 << 17);
22526 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22527 }
22528frvbf_media_overflow (current_cpu, 8);
22529}
22530} else {
22531 {
22532 UHI opval = tmp_tmp;
b29791a8 22533 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22534 written |= (1 << 17);
22535 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22536 }
22537}
22538}
22539}
22540{
22541 DI tmp_tmp;
7b1a2840 22542 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22543if (GTDI (tmp_tmp, 65535)) {
22544{
22545 {
22546 UHI opval = 65535;
b29791a8 22547 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22548 written |= (1 << 19);
22549 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22550 }
22551frvbf_media_overflow (current_cpu, 4);
22552}
22553} else {
22554if (LTDI (tmp_tmp, 0)) {
22555{
22556 {
22557 UHI opval = 0;
b29791a8 22558 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22559 written |= (1 << 19);
22560 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22561 }
22562frvbf_media_overflow (current_cpu, 4);
22563}
22564} else {
22565 {
22566 UHI opval = tmp_tmp;
b29791a8 22567 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
22568 written |= (1 << 19);
22569 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22570 }
22571}
22572}
22573}
22574{
b29791a8
DE
22575 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22576 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22577 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22578 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
22579}
22580{
22581 DI tmp_tmp;
7b1a2840 22582 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b34f6357
DB
22583if (GTDI (tmp_tmp, 65535)) {
22584{
22585 {
22586 UHI opval = 65535;
b29791a8 22587 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22588 written |= (1 << 18);
22589 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22590 }
22591frvbf_media_overflow (current_cpu, 2);
22592}
22593} else {
22594if (LTDI (tmp_tmp, 0)) {
22595{
22596 {
22597 UHI opval = 0;
b29791a8 22598 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22599 written |= (1 << 18);
22600 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22601 }
22602frvbf_media_overflow (current_cpu, 2);
22603}
22604} else {
22605 {
22606 UHI opval = tmp_tmp;
b29791a8 22607 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22608 written |= (1 << 18);
22609 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22610 }
22611}
22612}
22613}
22614{
22615 DI tmp_tmp;
7b1a2840 22616 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b34f6357
DB
22617if (GTDI (tmp_tmp, 65535)) {
22618{
22619 {
22620 UHI opval = 65535;
b29791a8 22621 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22622 written |= (1 << 20);
22623 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22624 }
22625frvbf_media_overflow (current_cpu, 1);
22626}
22627} else {
22628if (LTDI (tmp_tmp, 0)) {
22629{
22630 {
22631 UHI opval = 0;
b29791a8 22632 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22633 written |= (1 << 20);
22634 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22635 }
22636frvbf_media_overflow (current_cpu, 1);
22637}
22638} else {
22639 {
22640 UHI opval = tmp_tmp;
b29791a8 22641 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
22642 written |= (1 << 20);
22643 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22644 }
22645}
22646}
22647}
22648}
22649}
22650}
22651
22652 abuf->written = written;
22653 return vpc;
22654#undef FLD
22655}
22656
676a64f4
RS
22657/* mqlclrhs: mqlclrhs$pack $FRintieven,$FRintjeven,$FRintkeven */
22658
22659static SEM_PC
22660SEM_FN_NAME (frvbf,mqlclrhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22661{
22662#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22664 int UNUSED written = 0;
22665 IADDR UNUSED pc = abuf->addr;
22666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22667
22668if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22669frvbf_media_register_not_aligned (current_cpu);
22670} else {
22671{
22672 HI tmp_a1;
22673 HI tmp_a2;
22674 HI tmp_a3;
22675 HI tmp_a4;
22676 HI tmp_b1;
22677 HI tmp_b2;
22678 HI tmp_b3;
22679 HI tmp_b4;
22680 {
22681 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22683 written |= (1 << 14);
22684 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22685 }
22686{
b29791a8
DE
22687 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22688 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22689 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22690 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22691}
22692{
b29791a8
DE
22693 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22694 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22695 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22696 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22697}
22698 {
22699 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 22700 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22701 written |= (1 << 15);
22702 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22703 }
22704 {
22705 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 22706 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22707 written |= (1 << 17);
22708 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22709 }
22710 {
22711 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 22712 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22713 written |= (1 << 16);
22714 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22715 }
22716 {
22717 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 22718 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22719 written |= (1 << 18);
22720 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22721 }
22722}
22723}
22724
22725 abuf->written = written;
22726 return vpc;
22727#undef FLD
22728}
22729
22730/* mqlmths: mqlmths$pack $FRintieven,$FRintjeven,$FRintkeven */
22731
22732static SEM_PC
22733SEM_FN_NAME (frvbf,mqlmths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22734{
22735#define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22737 int UNUSED written = 0;
22738 IADDR UNUSED pc = abuf->addr;
22739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22740
22741if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22742frvbf_media_register_not_aligned (current_cpu);
22743} else {
22744{
22745 HI tmp_a1;
22746 HI tmp_a2;
22747 HI tmp_a3;
22748 HI tmp_a4;
22749 HI tmp_b1;
22750 HI tmp_b2;
22751 HI tmp_b3;
22752 HI tmp_b4;
22753 {
22754 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22755 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22756 written |= (1 << 14);
22757 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22758 }
22759{
b29791a8
DE
22760 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22761 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22762 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22763 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22764}
22765{
b29791a8
DE
22766 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22767 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22768 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22769 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
676a64f4
RS
22770}
22771 {
22772 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 22773 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22774 written |= (1 << 15);
22775 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22776 }
22777 {
22778 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 22779 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22780 written |= (1 << 17);
22781 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22782 }
22783 {
22784 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 22785 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22786 written |= (1 << 16);
22787 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22788 }
22789 {
22790 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 22791 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22792 written |= (1 << 18);
22793 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22794 }
22795}
22796}
22797
22798 abuf->written = written;
22799 return vpc;
22800#undef FLD
22801}
22802
22803/* mqsllhi: mqsllhi$pack $FRintieven,$u6,$FRintkeven */
22804
22805static SEM_PC
22806SEM_FN_NAME (frvbf,mqsllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22807{
22808#define FLD(f) abuf->fields.sfmt_mqsllhi.f
22809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22810 int UNUSED written = 0;
22811 IADDR UNUSED pc = abuf->addr;
22812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22813
22814if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22815frvbf_media_register_not_aligned (current_cpu);
22816} else {
22817{
22818 {
22819 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22820 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22821 written |= (1 << 9);
22822 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22823 }
22824 {
22825 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22826 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22827 written |= (1 << 10);
22828 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22829 }
22830 {
b29791a8
DE
22831 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22832 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22833 written |= (1 << 11);
22834 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22835 }
22836 {
b29791a8
DE
22837 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22838 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22839 written |= (1 << 13);
22840 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22841 }
22842 {
b29791a8
DE
22843 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22844 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22845 written |= (1 << 12);
22846 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22847 }
22848 {
b29791a8
DE
22849 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22850 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22851 written |= (1 << 14);
22852 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22853 }
22854}
22855}
22856
22857 abuf->written = written;
22858 return vpc;
22859#undef FLD
22860}
22861
22862/* mqsrahi: mqsrahi$pack $FRintieven,$u6,$FRintkeven */
22863
22864static SEM_PC
22865SEM_FN_NAME (frvbf,mqsrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22866{
22867#define FLD(f) abuf->fields.sfmt_mqsllhi.f
22868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22869 int UNUSED written = 0;
22870 IADDR UNUSED pc = abuf->addr;
22871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22872
22873if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22874frvbf_media_register_not_aligned (current_cpu);
22875} else {
22876{
22877 {
22878 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22879 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22880 written |= (1 << 9);
22881 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22882 }
22883 {
22884 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22885 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22886 written |= (1 << 10);
22887 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22888 }
22889 {
b29791a8
DE
22890 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22891 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22892 written |= (1 << 11);
22893 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22894 }
22895 {
b29791a8
DE
22896 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22897 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
676a64f4
RS
22898 written |= (1 << 13);
22899 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22900 }
22901 {
b29791a8
DE
22902 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22903 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22904 written |= (1 << 12);
22905 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22906 }
22907 {
b29791a8
DE
22908 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22909 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
676a64f4
RS
22910 written |= (1 << 14);
22911 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22912 }
22913}
22914}
22915
22916 abuf->written = written;
22917 return vpc;
22918#undef FLD
22919}
22920
b34f6357
DB
22921/* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22922
22923static SEM_PC
22924SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22925{
22926#define FLD(f) abuf->fields.sfmt_mdasaccs.f
22927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22928 int UNUSED written = 0;
22929 IADDR UNUSED pc = abuf->addr;
22930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22931
e930b1f5
DB
22932if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22933if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
22934if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22935frvbf_media_acc_not_aligned (current_cpu);
22936} else {
22937{
22938 DI tmp_tmp;
b29791a8 22939 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 22940if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
22941{
22942 {
bce3bbcb 22943 DI opval = MAKEDI (127, 0xffffffff);
b34f6357 22944 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22945 written |= (1 << 4);
b34f6357
DB
22946 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22947 }
22948frvbf_media_overflow (current_cpu, 8);
22949}
22950} else {
bce3bbcb 22951if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
22952{
22953 {
bce3bbcb 22954 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357 22955 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22956 written |= (1 << 4);
b34f6357
DB
22957 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22958 }
22959frvbf_media_overflow (current_cpu, 8);
22960}
22961} else {
22962 {
22963 DI opval = tmp_tmp;
22964 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 22965 written |= (1 << 4);
b34f6357
DB
22966 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22967 }
22968}
22969}
22970}
e930b1f5
DB
22971}
22972}
b34f6357
DB
22973}
22974
22975 abuf->written = written;
22976 return vpc;
22977#undef FLD
22978}
22979
22980/* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22981
22982static SEM_PC
22983SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22984{
22985#define FLD(f) abuf->fields.sfmt_mdasaccs.f
22986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22987 int UNUSED written = 0;
22988 IADDR UNUSED pc = abuf->addr;
22989 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22990
e930b1f5
DB
22991if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22992if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
22993if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22994frvbf_media_acc_not_aligned (current_cpu);
22995} else {
22996{
22997 DI tmp_tmp;
b29791a8 22998 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 22999if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23000{
23001 {
bce3bbcb 23002 DI opval = MAKEDI (127, 0xffffffff);
b34f6357 23003 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23004 written |= (1 << 4);
b34f6357
DB
23005 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23006 }
23007frvbf_media_overflow (current_cpu, 8);
23008}
23009} else {
bce3bbcb 23010if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23011{
23012 {
bce3bbcb 23013 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357 23014 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23015 written |= (1 << 4);
b34f6357
DB
23016 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23017 }
23018frvbf_media_overflow (current_cpu, 8);
23019}
23020} else {
23021 {
23022 DI opval = tmp_tmp;
23023 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 23024 written |= (1 << 4);
b34f6357
DB
23025 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23026 }
23027}
23028}
23029}
e930b1f5
DB
23030}
23031}
b34f6357
DB
23032}
23033
23034 abuf->written = written;
23035 return vpc;
23036#undef FLD
23037}
23038
23039/* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
23040
23041static SEM_PC
23042SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23043{
23044#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23046 int UNUSED written = 0;
23047 IADDR UNUSED pc = abuf->addr;
23048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23049
e930b1f5
DB
23050if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23051if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23052if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23053frvbf_media_acc_not_aligned (current_cpu);
23054} else {
23055if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23056frvbf_media_acc_not_aligned (current_cpu);
23057} else {
23058{
23059{
23060 DI tmp_tmp;
b29791a8 23061 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23062if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23063{
23064 {
bce3bbcb 23065 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
23066 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23067 written |= (1 << 6);
23068 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23069 }
23070frvbf_media_overflow (current_cpu, 8);
23071}
23072} else {
bce3bbcb 23073if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23074{
23075 {
bce3bbcb 23076 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
23077 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23078 written |= (1 << 6);
23079 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23080 }
23081frvbf_media_overflow (current_cpu, 8);
23082}
23083} else {
23084 {
23085 DI opval = tmp_tmp;
23086 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23087 written |= (1 << 6);
23088 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23089 }
23090}
23091}
23092}
23093{
23094 DI tmp_tmp;
b29791a8 23095 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23096if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23097{
23098 {
bce3bbcb 23099 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23100 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23101 written |= (1 << 7);
23102 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23103 }
23104frvbf_media_overflow (current_cpu, 4);
23105}
23106} else {
bce3bbcb 23107if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23108{
23109 {
bce3bbcb 23110 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23111 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23112 written |= (1 << 7);
23113 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23114 }
23115frvbf_media_overflow (current_cpu, 4);
23116}
23117} else {
23118 {
23119 DI opval = tmp_tmp;
b29791a8 23120 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23121 written |= (1 << 7);
23122 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23123 }
23124}
23125}
23126}
23127}
23128}
e930b1f5
DB
23129}
23130}
b34f6357
DB
23131}
23132
23133 abuf->written = written;
23134 return vpc;
23135#undef FLD
23136}
23137
23138/* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23139
23140static SEM_PC
23141SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23142{
23143#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23145 int UNUSED written = 0;
23146 IADDR UNUSED pc = abuf->addr;
23147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23148
e930b1f5
DB
23149if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23150if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23151if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23152frvbf_media_acc_not_aligned (current_cpu);
23153} else {
23154if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23155frvbf_media_acc_not_aligned (current_cpu);
23156} else {
23157{
23158{
23159 DI tmp_tmp;
b29791a8 23160 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23161if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23162{
23163 {
bce3bbcb 23164 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
23165 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23166 written |= (1 << 6);
23167 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23168 }
23169frvbf_media_overflow (current_cpu, 8);
23170}
23171} else {
bce3bbcb 23172if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23173{
23174 {
bce3bbcb 23175 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
23176 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23177 written |= (1 << 6);
23178 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23179 }
23180frvbf_media_overflow (current_cpu, 8);
23181}
23182} else {
23183 {
23184 DI opval = tmp_tmp;
23185 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23186 written |= (1 << 6);
23187 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23188 }
23189}
23190}
23191}
23192{
23193 DI tmp_tmp;
b29791a8 23194 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23195if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23196{
23197 {
bce3bbcb 23198 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23199 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23200 written |= (1 << 7);
23201 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23202 }
23203frvbf_media_overflow (current_cpu, 4);
23204}
23205} else {
bce3bbcb 23206if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23207{
23208 {
bce3bbcb 23209 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23210 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23211 written |= (1 << 7);
23212 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23213 }
23214frvbf_media_overflow (current_cpu, 4);
23215}
23216} else {
23217 {
23218 DI opval = tmp_tmp;
b29791a8 23219 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23220 written |= (1 << 7);
23221 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23222 }
23223}
23224}
23225}
23226}
23227}
e930b1f5
DB
23228}
23229}
b34f6357
DB
23230}
23231
23232 abuf->written = written;
23233 return vpc;
23234#undef FLD
23235}
23236
23237/* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23238
23239static SEM_PC
23240SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23241{
23242#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23244 int UNUSED written = 0;
23245 IADDR UNUSED pc = abuf->addr;
23246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23247
e930b1f5
DB
23248if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23249if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23250if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23251frvbf_media_acc_not_aligned (current_cpu);
23252} else {
23253if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23254frvbf_media_acc_not_aligned (current_cpu);
23255} else {
23256{
23257{
23258 DI tmp_tmp;
b29791a8 23259 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23260if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23261{
23262 {
bce3bbcb 23263 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
23264 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23265 written |= (1 << 4);
23266 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23267 }
23268frvbf_media_overflow (current_cpu, 8);
23269}
23270} else {
bce3bbcb 23271if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23272{
23273 {
bce3bbcb 23274 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
23275 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23276 written |= (1 << 4);
23277 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23278 }
23279frvbf_media_overflow (current_cpu, 8);
23280}
23281} else {
23282 {
23283 DI opval = tmp_tmp;
23284 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23285 written |= (1 << 4);
23286 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23287 }
23288}
23289}
23290}
23291{
23292 DI tmp_tmp;
b29791a8 23293 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23294if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23295{
23296 {
bce3bbcb 23297 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23298 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23299 written |= (1 << 5);
23300 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23301 }
23302frvbf_media_overflow (current_cpu, 4);
23303}
23304} else {
bce3bbcb 23305if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23306{
23307 {
bce3bbcb 23308 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23309 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23310 written |= (1 << 5);
23311 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23312 }
23313frvbf_media_overflow (current_cpu, 4);
23314}
23315} else {
23316 {
23317 DI opval = tmp_tmp;
b29791a8 23318 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23319 written |= (1 << 5);
23320 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23321 }
23322}
23323}
23324}
23325}
23326}
e930b1f5
DB
23327}
23328}
b34f6357
DB
23329}
23330
23331 abuf->written = written;
23332 return vpc;
23333#undef FLD
23334}
23335
23336/* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23337
23338static SEM_PC
23339SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23340{
23341#define FLD(f) abuf->fields.sfmt_mdasaccs.f
23342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23343 int UNUSED written = 0;
23344 IADDR UNUSED pc = abuf->addr;
23345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23346
e930b1f5
DB
23347if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23348if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23349if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23350frvbf_media_acc_not_aligned (current_cpu);
23351} else {
23352if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23353frvbf_media_acc_not_aligned (current_cpu);
23354} else {
23355{
23356{
23357 DI tmp_tmp;
b29791a8 23358 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23359if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23360{
23361 {
bce3bbcb 23362 DI opval = MAKEDI (127, 0xffffffff);
b34f6357
DB
23363 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23364 written |= (1 << 6);
23365 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23366 }
23367frvbf_media_overflow (current_cpu, 8);
23368}
23369} else {
bce3bbcb 23370if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23371{
23372 {
bce3bbcb 23373 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b34f6357
DB
23374 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23375 written |= (1 << 6);
23376 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23377 }
23378frvbf_media_overflow (current_cpu, 8);
23379}
23380} else {
23381 {
23382 DI opval = tmp_tmp;
23383 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23384 written |= (1 << 6);
23385 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23386 }
23387}
23388}
23389}
23390{
23391 DI tmp_tmp;
b29791a8 23392 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
bce3bbcb 23393if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23394{
23395 {
bce3bbcb 23396 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23397 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23398 written |= (1 << 7);
23399 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23400 }
23401frvbf_media_overflow (current_cpu, 4);
23402}
23403} else {
bce3bbcb 23404if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23405{
23406 {
bce3bbcb 23407 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23408 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23409 written |= (1 << 7);
23410 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23411 }
23412frvbf_media_overflow (current_cpu, 4);
23413}
23414} else {
23415 {
23416 DI opval = tmp_tmp;
b29791a8 23417 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23418 written |= (1 << 7);
23419 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23420 }
23421}
23422}
23423}
23424{
23425 DI tmp_tmp;
b29791a8 23426 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23427if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23428{
23429 {
bce3bbcb 23430 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23431 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23432 written |= (1 << 8);
23433 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23434 }
23435frvbf_media_overflow (current_cpu, 2);
23436}
23437} else {
bce3bbcb 23438if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23439{
23440 {
bce3bbcb 23441 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23442 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23443 written |= (1 << 8);
23444 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23445 }
23446frvbf_media_overflow (current_cpu, 2);
23447}
23448} else {
23449 {
23450 DI opval = tmp_tmp;
b29791a8 23451 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23452 written |= (1 << 8);
23453 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23454 }
23455}
23456}
23457}
23458{
23459 DI tmp_tmp;
b29791a8 23460 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
bce3bbcb 23461if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
b34f6357
DB
23462{
23463 {
bce3bbcb 23464 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 23465 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23466 written |= (1 << 9);
23467 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23468 }
23469frvbf_media_overflow (current_cpu, 1);
23470}
23471} else {
bce3bbcb 23472if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
b34f6357
DB
23473{
23474 {
bce3bbcb 23475 DI opval = INVDI (MAKEDI (127, 0xffffffff));
b29791a8 23476 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23477 written |= (1 << 9);
23478 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23479 }
23480frvbf_media_overflow (current_cpu, 1);
23481}
23482} else {
23483 {
23484 DI opval = tmp_tmp;
b29791a8 23485 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23486 written |= (1 << 9);
23487 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23488 }
23489}
23490}
23491}
23492}
23493}
e930b1f5
DB
23494}
23495}
b34f6357
DB
23496}
23497
23498 abuf->written = written;
23499 return vpc;
23500#undef FLD
23501}
23502
23503/* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23504
23505static SEM_PC
23506SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23507{
23508#define FLD(f) abuf->fields.sfmt_cmmachs.f
23509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23510 int UNUSED written = 0;
23511 IADDR UNUSED pc = abuf->addr;
23512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23513
e930b1f5 23514if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23515if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23516frvbf_media_acc_not_aligned (current_cpu);
23517} else {
23518{
23519 HI tmp_argihi;
23520 HI tmp_argilo;
23521 HI tmp_argjhi;
23522 HI tmp_argjlo;
23523{
b29791a8
DE
23524 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23525 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23526 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23527 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23528}
23529 {
23530 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23531 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23532 written |= (1 << 9);
23533 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23534 }
23535 {
23536 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 23537 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23538 written |= (1 << 10);
23539 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23540 }
23541}
e930b1f5 23542}
b34f6357
DB
23543}
23544
23545 abuf->written = written;
23546 return vpc;
23547#undef FLD
23548}
23549
23550/* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23551
23552static SEM_PC
23553SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23554{
23555#define FLD(f) abuf->fields.sfmt_cmmachs.f
23556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23557 int UNUSED written = 0;
23558 IADDR UNUSED pc = abuf->addr;
23559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23560
e930b1f5 23561if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23562if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23563frvbf_media_acc_not_aligned (current_cpu);
23564} else {
23565{
23566 UHI tmp_argihi;
23567 UHI tmp_argilo;
23568 UHI tmp_argjhi;
23569 UHI tmp_argjlo;
23570{
b29791a8
DE
23571 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23572 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23573 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23574 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23575}
23576 {
23577 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23578 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23579 written |= (1 << 9);
23580 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23581 }
23582 {
23583 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 23584 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23585 written |= (1 << 10);
23586 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23587 }
23588}
e930b1f5 23589}
b34f6357
DB
23590}
23591
23592 abuf->written = written;
23593 return vpc;
23594#undef FLD
23595}
23596
23597/* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23598
23599static SEM_PC
23600SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23601{
23602#define FLD(f) abuf->fields.sfmt_cmmachs.f
23603 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23604 int UNUSED written = 0;
23605 IADDR UNUSED pc = abuf->addr;
23606 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23607
e930b1f5 23608if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23609if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23610frvbf_media_acc_not_aligned (current_cpu);
23611} else {
23612{
23613 HI tmp_argihi;
23614 HI tmp_argilo;
23615 HI tmp_argjhi;
23616 HI tmp_argjlo;
23617{
b29791a8
DE
23618 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23619 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23620 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23621 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23622}
23623 {
23624 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23625 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23626 written |= (1 << 9);
23627 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23628 }
23629 {
23630 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
b29791a8 23631 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23632 written |= (1 << 10);
23633 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23634 }
23635}
e930b1f5 23636}
b34f6357
DB
23637}
23638
23639 abuf->written = written;
23640 return vpc;
23641#undef FLD
23642}
23643
23644/* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23645
23646static SEM_PC
23647SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23648{
23649#define FLD(f) abuf->fields.sfmt_cmmachs.f
23650 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23651 int UNUSED written = 0;
23652 IADDR UNUSED pc = abuf->addr;
23653 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23654
e930b1f5 23655if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23656if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23657frvbf_media_acc_not_aligned (current_cpu);
23658} else {
23659{
23660 UHI tmp_argihi;
23661 UHI tmp_argilo;
23662 UHI tmp_argjhi;
23663 UHI tmp_argjlo;
23664{
b29791a8
DE
23665 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23666 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23667 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23668 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23669}
23670 {
23671 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23672 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23673 written |= (1 << 9);
23674 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23675 }
23676 {
23677 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
b29791a8 23678 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23679 written |= (1 << 10);
23680 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23681 }
23682}
e930b1f5 23683}
b34f6357
DB
23684}
23685
23686 abuf->written = written;
23687 return vpc;
23688#undef FLD
23689}
23690
23691/* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23692
23693static SEM_PC
23694SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23695{
23696#define FLD(f) abuf->fields.sfmt_cmmachs.f
23697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23698 int UNUSED written = 0;
23699 IADDR UNUSED pc = abuf->addr;
23700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23701
e930b1f5 23702if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23703if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23704frvbf_media_acc_not_aligned (current_cpu);
23705} else {
23706if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23707{
23708 HI tmp_argihi;
23709 HI tmp_argilo;
23710 HI tmp_argjhi;
23711 HI tmp_argjlo;
23712{
b29791a8
DE
23713 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23714 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23715 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23716 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23717}
23718 {
23719 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23720 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23721 written |= (1 << 11);
23722 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23723 }
23724 {
23725 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 23726 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23727 written |= (1 << 12);
23728 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23729 }
23730}
23731}
e930b1f5 23732}
b34f6357
DB
23733}
23734
23735 abuf->written = written;
23736 return vpc;
23737#undef FLD
23738}
23739
23740/* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23741
23742static SEM_PC
23743SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23744{
23745#define FLD(f) abuf->fields.sfmt_cmmachs.f
23746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23747 int UNUSED written = 0;
23748 IADDR UNUSED pc = abuf->addr;
23749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23750
e930b1f5 23751if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23752if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23753frvbf_media_acc_not_aligned (current_cpu);
23754} else {
23755if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23756{
23757 UHI tmp_argihi;
23758 UHI tmp_argilo;
23759 UHI tmp_argjhi;
23760 UHI tmp_argjlo;
23761{
b29791a8
DE
23762 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23763 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23764 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23765 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23766}
23767 {
23768 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23769 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23770 written |= (1 << 11);
23771 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23772 }
23773 {
23774 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 23775 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23776 written |= (1 << 12);
23777 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23778 }
23779}
23780}
e930b1f5 23781}
b34f6357
DB
23782}
23783
23784 abuf->written = written;
23785 return vpc;
23786#undef FLD
23787}
23788
23789/* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23790
23791static SEM_PC
23792SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23793{
23794#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23795 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23796 int UNUSED written = 0;
23797 IADDR UNUSED pc = abuf->addr;
23798 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23799
e930b1f5 23800if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23801if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23802frvbf_media_acc_not_aligned (current_cpu);
23803} else {
23804if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23805frvbf_media_register_not_aligned (current_cpu);
23806} else {
23807{
23808 HI tmp_argihi;
23809 HI tmp_argilo;
23810 HI tmp_argjhi;
23811 HI tmp_argjlo;
23812{
b29791a8
DE
23813 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23814 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23815 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23816 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23817}
23818 {
23819 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23820 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23821 written |= (1 << 13);
23822 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23823 }
23824 {
23825 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 23826 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23827 written |= (1 << 14);
23828 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23829 }
23830{
b29791a8
DE
23831 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23832 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23833 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23834 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23835}
23836 {
23837 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b29791a8 23838 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23839 written |= (1 << 15);
23840 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23841 }
23842 {
23843 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 23844 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23845 written |= (1 << 16);
23846 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23847 }
23848}
23849}
e930b1f5 23850}
b34f6357
DB
23851}
23852
23853 abuf->written = written;
23854 return vpc;
23855#undef FLD
23856}
23857
23858/* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23859
23860static SEM_PC
23861SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23862{
23863#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23865 int UNUSED written = 0;
23866 IADDR UNUSED pc = abuf->addr;
23867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23868
e930b1f5 23869if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23870if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23871frvbf_media_acc_not_aligned (current_cpu);
23872} else {
23873if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23874frvbf_media_register_not_aligned (current_cpu);
23875} else {
23876{
23877 UHI tmp_argihi;
23878 UHI tmp_argilo;
23879 UHI tmp_argjhi;
23880 UHI tmp_argjlo;
23881{
b29791a8
DE
23882 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23883 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23884 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23885 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23886}
23887 {
23888 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23889 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23890 written |= (1 << 13);
23891 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23892 }
23893 {
23894 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 23895 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23896 written |= (1 << 14);
23897 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23898 }
23899{
b29791a8
DE
23900 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23901 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23902 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23903 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23904}
23905 {
23906 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b29791a8 23907 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23908 written |= (1 << 15);
23909 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23910 }
23911 {
23912 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 23913 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23914 written |= (1 << 16);
23915 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23916 }
23917}
23918}
e930b1f5 23919}
b34f6357
DB
23920}
23921
23922 abuf->written = written;
23923 return vpc;
23924#undef FLD
23925}
23926
23927/* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23928
23929static SEM_PC
23930SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23931{
23932#define FLD(f) abuf->fields.sfmt_cmqmachs.f
23933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23934 int UNUSED written = 0;
23935 IADDR UNUSED pc = abuf->addr;
23936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23937
e930b1f5 23938if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
23939if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23940frvbf_media_acc_not_aligned (current_cpu);
23941} else {
23942if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23943frvbf_media_register_not_aligned (current_cpu);
23944} else {
23945{
23946 HI tmp_argihi;
23947 HI tmp_argilo;
23948 HI tmp_argjhi;
23949 HI tmp_argjlo;
23950{
b29791a8
DE
23951 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23952 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23953 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23954 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23955}
23956 {
23957 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23958 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23959 written |= (1 << 13);
23960 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23961 }
23962 {
23963 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
b29791a8 23964 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
23965 written |= (1 << 14);
23966 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23967 }
23968{
b29791a8
DE
23969 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23970 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23971 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23972 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
23973}
23974 {
23975 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
b29791a8 23976 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
23977 written |= (1 << 15);
23978 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23979 }
23980 {
23981 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
b29791a8 23982 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
23983 written |= (1 << 16);
23984 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23985 }
23986}
23987}
e930b1f5 23988}
b34f6357
DB
23989}
23990
23991 abuf->written = written;
23992 return vpc;
23993#undef FLD
23994}
23995
23996/* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23997
23998static SEM_PC
23999SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24000{
24001#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24002 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24003 int UNUSED written = 0;
24004 IADDR UNUSED pc = abuf->addr;
24005 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24006
e930b1f5 24007if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24008if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24009frvbf_media_acc_not_aligned (current_cpu);
24010} else {
24011if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24012frvbf_media_register_not_aligned (current_cpu);
24013} else {
24014{
24015 UHI tmp_argihi;
24016 UHI tmp_argilo;
24017 UHI tmp_argjhi;
24018 UHI tmp_argjlo;
24019{
b29791a8
DE
24020 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24021 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24022 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24023 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24024}
24025 {
24026 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24027 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24028 written |= (1 << 13);
24029 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24030 }
24031 {
24032 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
b29791a8 24033 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24034 written |= (1 << 14);
24035 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24036 }
24037{
b29791a8
DE
24038 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24039 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24040 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24041 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24042}
24043 {
24044 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
b29791a8 24045 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24046 written |= (1 << 15);
24047 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24048 }
24049 {
24050 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
b29791a8 24051 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24052 written |= (1 << 16);
24053 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24054 }
24055}
24056}
e930b1f5 24057}
b34f6357
DB
24058}
24059
24060 abuf->written = written;
24061 return vpc;
24062#undef FLD
24063}
24064
24065/* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24066
24067static SEM_PC
24068SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24069{
24070#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24072 int UNUSED written = 0;
24073 IADDR UNUSED pc = abuf->addr;
24074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24075
e930b1f5 24076if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24077if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24078frvbf_media_acc_not_aligned (current_cpu);
24079} else {
24080if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24081frvbf_media_register_not_aligned (current_cpu);
24082} else {
24083if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24084{
24085 HI tmp_argihi;
24086 HI tmp_argilo;
24087 HI tmp_argjhi;
24088 HI tmp_argjlo;
24089{
b29791a8
DE
24090 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24091 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24092 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24093 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24094}
24095 {
24096 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24097 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24098 written |= (1 << 15);
24099 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24100 }
24101 {
24102 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 24103 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24104 written |= (1 << 16);
24105 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24106 }
24107{
b29791a8
DE
24108 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24109 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24110 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24111 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24112}
24113 {
24114 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
b29791a8 24115 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24116 written |= (1 << 17);
24117 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24118 }
24119 {
24120 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
b29791a8 24121 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24122 written |= (1 << 18);
24123 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24124 }
24125}
24126}
24127}
e930b1f5 24128}
b34f6357
DB
24129}
24130
24131 abuf->written = written;
24132 return vpc;
24133#undef FLD
24134}
24135
24136/* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24137
24138static SEM_PC
24139SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24140{
24141#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24142 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24143 int UNUSED written = 0;
24144 IADDR UNUSED pc = abuf->addr;
24145 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24146
e930b1f5 24147if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24148if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24149frvbf_media_acc_not_aligned (current_cpu);
24150} else {
24151if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24152frvbf_media_register_not_aligned (current_cpu);
24153} else {
24154if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24155{
24156 UHI tmp_argihi;
24157 UHI tmp_argilo;
24158 UHI tmp_argjhi;
24159 UHI tmp_argjlo;
24160{
b29791a8
DE
24161 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24162 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24163 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24164 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24165}
24166 {
24167 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24168 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24169 written |= (1 << 15);
24170 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24171 }
24172 {
24173 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 24174 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24175 written |= (1 << 16);
24176 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24177 }
24178{
b29791a8
DE
24179 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24180 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24181 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24182 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24183}
24184 {
24185 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
b29791a8 24186 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24187 written |= (1 << 17);
24188 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24189 }
24190 {
24191 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
b29791a8 24192 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24193 written |= (1 << 18);
24194 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24195 }
24196}
24197}
24198}
e930b1f5 24199}
b34f6357
DB
24200}
24201
24202 abuf->written = written;
24203 return vpc;
24204#undef FLD
24205}
24206
24207/* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24208
24209static SEM_PC
24210SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24211{
24212#define FLD(f) abuf->fields.sfmt_cmmachs.f
24213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24214 int UNUSED written = 0;
24215 IADDR UNUSED pc = abuf->addr;
24216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24217
e930b1f5 24218if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24219if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24220frvbf_media_acc_not_aligned (current_cpu);
24221} else {
24222{
24223 HI tmp_argihi;
24224 HI tmp_argilo;
24225 HI tmp_argjhi;
24226 HI tmp_argjlo;
24227{
b29791a8
DE
24228 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24229 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24230 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24231 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24232}
24233{
24234 DI tmp_tmp;
24235 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24236if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24237{
24238 {
24239 DI opval = MAKEDI (127, 0xffffffff);
24240 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24241 written |= (1 << 11);
24242 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24243 }
24244frvbf_media_overflow (current_cpu, 8);
24245}
24246} else {
24247if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24248{
24249 {
24250 DI opval = MAKEDI (0xffffff80, 0);
24251 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24252 written |= (1 << 11);
24253 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24254 }
24255frvbf_media_overflow (current_cpu, 8);
24256}
24257} else {
24258 {
24259 DI opval = tmp_tmp;
24260 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24261 written |= (1 << 11);
24262 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24263 }
24264}
24265}
24266}
24267{
24268 DI tmp_tmp;
b29791a8 24269 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24270if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24271{
24272 {
24273 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24274 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24275 written |= (1 << 12);
24276 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24277 }
24278frvbf_media_overflow (current_cpu, 4);
24279}
24280} else {
24281if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24282{
24283 {
24284 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24285 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24286 written |= (1 << 12);
24287 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24288 }
24289frvbf_media_overflow (current_cpu, 4);
24290}
24291} else {
24292 {
24293 DI opval = tmp_tmp;
b29791a8 24294 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24295 written |= (1 << 12);
24296 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24297 }
24298}
24299}
24300}
24301}
e930b1f5 24302}
b34f6357
DB
24303}
24304
24305 abuf->written = written;
24306 return vpc;
24307#undef FLD
24308}
24309
24310/* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24311
24312static SEM_PC
24313SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24314{
24315#define FLD(f) abuf->fields.sfmt_cmmachu.f
24316 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24317 int UNUSED written = 0;
24318 IADDR UNUSED pc = abuf->addr;
24319 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24320
e930b1f5 24321if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24322if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24323frvbf_media_acc_not_aligned (current_cpu);
24324} else {
24325{
24326 UHI tmp_argihi;
24327 UHI tmp_argilo;
24328 UHI tmp_argjhi;
24329 UHI tmp_argjlo;
24330{
b29791a8
DE
24331 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24332 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24333 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24334 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24335}
24336{
24337 DI tmp_tmp;
24338 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24339if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24340{
24341 {
24342 UDI opval = MAKEDI (255, 0xffffffff);
24343 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24344 written |= (1 << 11);
24345 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24346 }
24347frvbf_media_overflow (current_cpu, 8);
24348}
24349} else {
24350if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24351{
24352 {
24353 UDI opval = MAKEDI (0, 0);
24354 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24355 written |= (1 << 11);
24356 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24357 }
24358frvbf_media_overflow (current_cpu, 8);
24359}
24360} else {
24361 {
24362 UDI opval = tmp_tmp;
24363 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24364 written |= (1 << 11);
24365 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24366 }
24367}
24368}
24369}
24370{
24371 DI tmp_tmp;
b29791a8 24372 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24373if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24374{
24375 {
24376 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24377 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24378 written |= (1 << 12);
24379 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24380 }
24381frvbf_media_overflow (current_cpu, 4);
24382}
24383} else {
24384if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24385{
24386 {
24387 UDI opval = MAKEDI (0, 0);
b29791a8 24388 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24389 written |= (1 << 12);
24390 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24391 }
24392frvbf_media_overflow (current_cpu, 4);
24393}
24394} else {
24395 {
24396 UDI opval = tmp_tmp;
b29791a8 24397 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24398 written |= (1 << 12);
24399 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24400 }
24401}
24402}
24403}
24404}
e930b1f5 24405}
b34f6357
DB
24406}
24407
24408 abuf->written = written;
24409 return vpc;
24410#undef FLD
24411}
24412
24413/* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24414
24415static SEM_PC
24416SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24417{
24418#define FLD(f) abuf->fields.sfmt_cmmachs.f
24419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24420 int UNUSED written = 0;
24421 IADDR UNUSED pc = abuf->addr;
24422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24423
e930b1f5 24424if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24425if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24426frvbf_media_acc_not_aligned (current_cpu);
24427} else {
24428{
24429 HI tmp_argihi;
24430 HI tmp_argilo;
24431 HI tmp_argjhi;
24432 HI tmp_argjlo;
24433{
b29791a8
DE
24434 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24435 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24436 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24437 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24438}
24439{
24440 DI tmp_tmp;
24441 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24442if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24443{
24444 {
24445 DI opval = MAKEDI (127, 0xffffffff);
24446 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24447 written |= (1 << 11);
24448 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24449 }
24450frvbf_media_overflow (current_cpu, 8);
24451}
24452} else {
24453if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24454{
24455 {
24456 DI opval = MAKEDI (0xffffff80, 0);
24457 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24458 written |= (1 << 11);
24459 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24460 }
24461frvbf_media_overflow (current_cpu, 8);
24462}
24463} else {
24464 {
24465 DI opval = tmp_tmp;
24466 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24467 written |= (1 << 11);
24468 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24469 }
24470}
24471}
24472}
24473{
24474 DI tmp_tmp;
b29791a8 24475 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24476if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24477{
24478 {
24479 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24480 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24481 written |= (1 << 12);
24482 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24483 }
24484frvbf_media_overflow (current_cpu, 4);
24485}
24486} else {
24487if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24488{
24489 {
24490 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24491 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24492 written |= (1 << 12);
24493 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24494 }
24495frvbf_media_overflow (current_cpu, 4);
24496}
24497} else {
24498 {
24499 DI opval = tmp_tmp;
b29791a8 24500 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24501 written |= (1 << 12);
24502 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24503 }
24504}
24505}
24506}
24507}
e930b1f5 24508}
b34f6357
DB
24509}
24510
24511 abuf->written = written;
24512 return vpc;
24513#undef FLD
24514}
24515
24516/* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24517
24518static SEM_PC
24519SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24520{
24521#define FLD(f) abuf->fields.sfmt_cmmachu.f
24522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24523 int UNUSED written = 0;
24524 IADDR UNUSED pc = abuf->addr;
24525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24526
e930b1f5 24527if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24528if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24529frvbf_media_acc_not_aligned (current_cpu);
24530} else {
24531{
24532 UHI tmp_argihi;
24533 UHI tmp_argilo;
24534 UHI tmp_argjhi;
24535 UHI tmp_argjlo;
24536{
b29791a8
DE
24537 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24538 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24539 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24540 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24541}
24542{
24543 DI tmp_tmp;
24544 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24545if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24546{
24547 {
24548 UDI opval = MAKEDI (255, 0xffffffff);
24549 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24550 written |= (1 << 11);
24551 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24552 }
24553frvbf_media_overflow (current_cpu, 8);
24554}
24555} else {
24556if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24557{
24558 {
24559 UDI opval = MAKEDI (0, 0);
24560 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24561 written |= (1 << 11);
24562 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24563 }
24564frvbf_media_overflow (current_cpu, 8);
24565}
24566} else {
24567 {
24568 UDI opval = tmp_tmp;
24569 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24570 written |= (1 << 11);
24571 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24572 }
24573}
24574}
24575}
24576{
24577 DI tmp_tmp;
b29791a8 24578 tmp_tmp = SUBDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24579if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24580{
24581 {
24582 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24583 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24584 written |= (1 << 12);
24585 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24586 }
24587frvbf_media_overflow (current_cpu, 4);
24588}
24589} else {
24590if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24591{
24592 {
24593 UDI opval = MAKEDI (0, 0);
b29791a8 24594 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24595 written |= (1 << 12);
24596 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24597 }
24598frvbf_media_overflow (current_cpu, 4);
24599}
24600} else {
24601 {
24602 UDI opval = tmp_tmp;
b29791a8 24603 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24604 written |= (1 << 12);
24605 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24606 }
24607}
24608}
24609}
24610}
e930b1f5 24611}
b34f6357
DB
24612}
24613
24614 abuf->written = written;
24615 return vpc;
24616#undef FLD
24617}
24618
24619/* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24620
24621static SEM_PC
24622SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24623{
24624#define FLD(f) abuf->fields.sfmt_cmmachs.f
24625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24626 int UNUSED written = 0;
24627 IADDR UNUSED pc = abuf->addr;
24628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24629
e930b1f5 24630if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24631if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24632frvbf_media_acc_not_aligned (current_cpu);
24633} else {
24634if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24635{
24636 HI tmp_argihi;
24637 HI tmp_argilo;
24638 HI tmp_argjhi;
24639 HI tmp_argjlo;
24640{
b29791a8
DE
24641 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24642 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24643 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24644 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24645}
24646{
24647 DI tmp_tmp;
24648 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24649if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24650{
24651 {
24652 DI opval = MAKEDI (127, 0xffffffff);
24653 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24654 written |= (1 << 13);
24655 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24656 }
24657frvbf_media_overflow (current_cpu, 8);
24658}
24659} else {
24660if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24661{
24662 {
24663 DI opval = MAKEDI (0xffffff80, 0);
24664 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24665 written |= (1 << 13);
24666 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24667 }
24668frvbf_media_overflow (current_cpu, 8);
24669}
24670} else {
24671 {
24672 DI opval = tmp_tmp;
24673 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24674 written |= (1 << 13);
24675 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24676 }
24677}
24678}
24679}
24680{
24681 DI tmp_tmp;
b29791a8 24682 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24683if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24684{
24685 {
24686 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24687 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24688 written |= (1 << 14);
24689 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24690 }
24691frvbf_media_overflow (current_cpu, 4);
24692}
24693} else {
24694if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24695{
24696 {
24697 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24698 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24699 written |= (1 << 14);
24700 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24701 }
24702frvbf_media_overflow (current_cpu, 4);
24703}
24704} else {
24705 {
24706 DI opval = tmp_tmp;
b29791a8 24707 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24708 written |= (1 << 14);
24709 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24710 }
24711}
24712}
24713}
24714}
24715}
e930b1f5 24716}
b34f6357
DB
24717}
24718
24719 abuf->written = written;
24720 return vpc;
24721#undef FLD
24722}
24723
24724/* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24725
24726static SEM_PC
24727SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24728{
24729#define FLD(f) abuf->fields.sfmt_cmmachu.f
24730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24731 int UNUSED written = 0;
24732 IADDR UNUSED pc = abuf->addr;
24733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24734
e930b1f5 24735if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
24736if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24737frvbf_media_acc_not_aligned (current_cpu);
24738} else {
24739if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24740{
24741 UHI tmp_argihi;
24742 UHI tmp_argilo;
24743 UHI tmp_argjhi;
24744 UHI tmp_argjlo;
24745{
b29791a8
DE
24746 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24747 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24748 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24749 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24750}
24751{
24752 DI tmp_tmp;
24753 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24754if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24755{
24756 {
24757 UDI opval = MAKEDI (255, 0xffffffff);
24758 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24759 written |= (1 << 13);
24760 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24761 }
24762frvbf_media_overflow (current_cpu, 8);
24763}
24764} else {
24765if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24766{
24767 {
24768 UDI opval = MAKEDI (0, 0);
24769 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24770 written |= (1 << 13);
24771 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24772 }
24773frvbf_media_overflow (current_cpu, 8);
24774}
24775} else {
24776 {
24777 UDI opval = tmp_tmp;
24778 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24779 written |= (1 << 13);
24780 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24781 }
24782}
24783}
24784}
24785{
24786 DI tmp_tmp;
b29791a8 24787 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
24788if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24789{
24790 {
24791 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 24792 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24793 written |= (1 << 14);
24794 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24795 }
24796frvbf_media_overflow (current_cpu, 4);
24797}
24798} else {
24799if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24800{
24801 {
24802 UDI opval = MAKEDI (0, 0);
b29791a8 24803 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24804 written |= (1 << 14);
24805 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24806 }
24807frvbf_media_overflow (current_cpu, 4);
24808}
24809} else {
24810 {
24811 UDI opval = tmp_tmp;
b29791a8 24812 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
24813 written |= (1 << 14);
24814 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24815 }
24816}
24817}
24818}
24819}
24820}
e930b1f5 24821}
b34f6357
DB
24822}
24823
24824 abuf->written = written;
24825 return vpc;
24826#undef FLD
24827}
24828
24829/* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24830
24831static SEM_PC
24832SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24833{
24834#define FLD(f) abuf->fields.sfmt_cmqmachs.f
24835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24836 int UNUSED written = 0;
24837 IADDR UNUSED pc = abuf->addr;
24838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24839
e930b1f5 24840if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
24841if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24842frvbf_media_acc_not_aligned (current_cpu);
24843} else {
24844if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24845frvbf_media_register_not_aligned (current_cpu);
24846} else {
24847{
24848 HI tmp_argihi;
24849 HI tmp_argilo;
24850 HI tmp_argjhi;
24851 HI tmp_argjlo;
24852{
b29791a8
DE
24853 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24854 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24855 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24856 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24857}
24858{
24859 DI tmp_tmp;
24860 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24861if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24862{
24863 {
24864 DI opval = MAKEDI (127, 0xffffffff);
24865 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24866 written |= (1 << 17);
24867 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24868 }
24869frvbf_media_overflow (current_cpu, 8);
24870}
24871} else {
24872if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24873{
24874 {
24875 DI opval = MAKEDI (0xffffff80, 0);
24876 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24877 written |= (1 << 17);
24878 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24879 }
24880frvbf_media_overflow (current_cpu, 8);
24881}
24882} else {
24883 {
24884 DI opval = tmp_tmp;
24885 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24886 written |= (1 << 17);
24887 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24888 }
24889}
24890}
24891}
24892{
24893 DI tmp_tmp;
b29791a8 24894 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24895if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24896{
24897 {
24898 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24899 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24900 written |= (1 << 18);
24901 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24902 }
24903frvbf_media_overflow (current_cpu, 4);
24904}
24905} else {
24906if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24907{
24908 {
24909 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24910 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24911 written |= (1 << 18);
24912 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24913 }
24914frvbf_media_overflow (current_cpu, 4);
24915}
24916} else {
24917 {
24918 DI opval = tmp_tmp;
b29791a8 24919 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
24920 written |= (1 << 18);
24921 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24922 }
24923}
24924}
24925}
24926{
b29791a8
DE
24927 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24928 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24929 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24930 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
24931}
24932{
24933 DI tmp_tmp;
b29791a8 24934 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
24935if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24936{
24937 {
24938 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24939 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24940 written |= (1 << 19);
24941 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24942 }
24943frvbf_media_overflow (current_cpu, 2);
24944}
24945} else {
24946if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24947{
24948 {
24949 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24950 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24951 written |= (1 << 19);
24952 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24953 }
24954frvbf_media_overflow (current_cpu, 2);
24955}
24956} else {
24957 {
24958 DI opval = tmp_tmp;
b29791a8 24959 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
24960 written |= (1 << 19);
24961 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24962 }
24963}
24964}
24965}
24966{
24967 DI tmp_tmp;
b29791a8 24968 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
24969if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24970{
24971 {
24972 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 24973 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24974 written |= (1 << 20);
24975 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24976 }
24977frvbf_media_overflow (current_cpu, 1);
24978}
24979} else {
24980if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24981{
24982 {
24983 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 24984 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24985 written |= (1 << 20);
24986 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24987 }
24988frvbf_media_overflow (current_cpu, 1);
24989}
24990} else {
24991 {
24992 DI opval = tmp_tmp;
b29791a8 24993 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
24994 written |= (1 << 20);
24995 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24996 }
24997}
24998}
24999}
25000}
25001}
e930b1f5 25002}
b34f6357
DB
25003}
25004
25005 abuf->written = written;
25006 return vpc;
25007#undef FLD
25008}
25009
25010/* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
25011
25012static SEM_PC
25013SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25014{
25015#define FLD(f) abuf->fields.sfmt_cmqmachu.f
25016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25017 int UNUSED written = 0;
25018 IADDR UNUSED pc = abuf->addr;
25019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25020
e930b1f5 25021if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
25022if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25023frvbf_media_acc_not_aligned (current_cpu);
25024} else {
25025if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25026frvbf_media_register_not_aligned (current_cpu);
25027} else {
25028{
25029 UHI tmp_argihi;
25030 UHI tmp_argilo;
25031 UHI tmp_argjhi;
25032 UHI tmp_argjlo;
25033{
b29791a8
DE
25034 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25035 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25036 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25037 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25038}
25039{
25040 DI tmp_tmp;
25041 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25042if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25043{
25044 {
25045 UDI opval = MAKEDI (255, 0xffffffff);
25046 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25047 written |= (1 << 17);
25048 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25049 }
25050frvbf_media_overflow (current_cpu, 8);
25051}
25052} else {
25053if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25054{
25055 {
25056 UDI opval = MAKEDI (0, 0);
25057 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25058 written |= (1 << 17);
25059 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25060 }
25061frvbf_media_overflow (current_cpu, 8);
25062}
25063} else {
25064 {
25065 UDI opval = tmp_tmp;
25066 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25067 written |= (1 << 17);
25068 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25069 }
25070}
25071}
25072}
25073{
25074 DI tmp_tmp;
b29791a8 25075 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25076if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25077{
25078 {
25079 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25080 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25081 written |= (1 << 18);
25082 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25083 }
25084frvbf_media_overflow (current_cpu, 4);
25085}
25086} else {
25087if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25088{
25089 {
25090 UDI opval = MAKEDI (0, 0);
b29791a8 25091 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25092 written |= (1 << 18);
25093 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25094 }
25095frvbf_media_overflow (current_cpu, 4);
25096}
25097} else {
25098 {
25099 UDI opval = tmp_tmp;
b29791a8 25100 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25101 written |= (1 << 18);
25102 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25103 }
25104}
25105}
25106}
25107{
b29791a8
DE
25108 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25109 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25110 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25111 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25112}
25113{
25114 DI tmp_tmp;
b29791a8 25115 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
b34f6357
DB
25116if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25117{
25118 {
25119 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25120 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25121 written |= (1 << 19);
25122 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25123 }
25124frvbf_media_overflow (current_cpu, 2);
25125}
25126} else {
25127if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25128{
25129 {
25130 UDI opval = MAKEDI (0, 0);
b29791a8 25131 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25132 written |= (1 << 19);
25133 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25134 }
25135frvbf_media_overflow (current_cpu, 2);
25136}
25137} else {
25138 {
25139 UDI opval = tmp_tmp;
b29791a8 25140 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25141 written |= (1 << 19);
25142 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25143 }
25144}
25145}
25146}
25147{
25148 DI tmp_tmp;
b29791a8 25149 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25150if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25151{
25152 {
25153 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25154 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25155 written |= (1 << 20);
25156 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25157 }
25158frvbf_media_overflow (current_cpu, 1);
25159}
25160} else {
25161if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25162{
25163 {
25164 UDI opval = MAKEDI (0, 0);
b29791a8 25165 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25166 written |= (1 << 20);
25167 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25168 }
25169frvbf_media_overflow (current_cpu, 1);
25170}
25171} else {
25172 {
25173 UDI opval = tmp_tmp;
b29791a8 25174 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25175 written |= (1 << 20);
25176 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25177 }
25178}
25179}
25180}
25181}
25182}
e930b1f5 25183}
b34f6357
DB
25184}
25185
25186 abuf->written = written;
25187 return vpc;
25188#undef FLD
25189}
25190
25191/* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25192
25193static SEM_PC
25194SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25195{
25196#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25198 int UNUSED written = 0;
25199 IADDR UNUSED pc = abuf->addr;
25200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25201
e930b1f5 25202if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25203if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25204frvbf_media_acc_not_aligned (current_cpu);
25205} else {
25206if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25207frvbf_media_register_not_aligned (current_cpu);
25208} else {
25209if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25210{
25211 HI tmp_argihi;
25212 HI tmp_argilo;
25213 HI tmp_argjhi;
25214 HI tmp_argjlo;
25215{
b29791a8
DE
25216 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25217 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25218 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25219 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25220}
25221{
25222 DI tmp_tmp;
25223 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25224if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25225{
25226 {
25227 DI opval = MAKEDI (127, 0xffffffff);
25228 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25229 written |= (1 << 19);
25230 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25231 }
25232frvbf_media_overflow (current_cpu, 8);
25233}
25234} else {
25235if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25236{
25237 {
25238 DI opval = MAKEDI (0xffffff80, 0);
25239 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25240 written |= (1 << 19);
25241 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25242 }
25243frvbf_media_overflow (current_cpu, 8);
25244}
25245} else {
25246 {
25247 DI opval = tmp_tmp;
25248 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25249 written |= (1 << 19);
25250 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25251 }
25252}
25253}
25254}
25255{
25256 DI tmp_tmp;
b29791a8 25257 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25258if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25259{
25260 {
25261 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25262 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25263 written |= (1 << 20);
25264 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25265 }
25266frvbf_media_overflow (current_cpu, 4);
25267}
25268} else {
25269if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25270{
25271 {
25272 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25273 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25274 written |= (1 << 20);
25275 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25276 }
25277frvbf_media_overflow (current_cpu, 4);
25278}
25279} else {
25280 {
25281 DI opval = tmp_tmp;
b29791a8 25282 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25283 written |= (1 << 20);
25284 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25285 }
25286}
25287}
25288}
25289{
b29791a8
DE
25290 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25291 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25292 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25293 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25294}
25295{
25296 DI tmp_tmp;
b29791a8 25297 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25298if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25299{
25300 {
25301 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25302 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25303 written |= (1 << 21);
25304 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25305 }
25306frvbf_media_overflow (current_cpu, 2);
25307}
25308} else {
25309if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25310{
25311 {
25312 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25313 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25314 written |= (1 << 21);
25315 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25316 }
25317frvbf_media_overflow (current_cpu, 2);
25318}
25319} else {
25320 {
25321 DI opval = tmp_tmp;
b29791a8 25322 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25323 written |= (1 << 21);
25324 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25325 }
25326}
25327}
25328}
25329{
25330 DI tmp_tmp;
b29791a8 25331 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25332if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25333{
25334 {
25335 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25336 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25337 written |= (1 << 22);
25338 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25339 }
25340frvbf_media_overflow (current_cpu, 1);
25341}
25342} else {
25343if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25344{
25345 {
25346 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25347 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25348 written |= (1 << 22);
25349 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25350 }
25351frvbf_media_overflow (current_cpu, 1);
25352}
25353} else {
25354 {
25355 DI opval = tmp_tmp;
b29791a8 25356 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25357 written |= (1 << 22);
25358 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25359 }
25360}
25361}
25362}
25363}
25364}
25365}
e930b1f5 25366}
b34f6357
DB
25367}
25368
25369 abuf->written = written;
25370 return vpc;
25371#undef FLD
25372}
25373
25374/* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25375
25376static SEM_PC
25377SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25378{
25379#define FLD(f) abuf->fields.sfmt_cmqmachu.f
25380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25381 int UNUSED written = 0;
25382 IADDR UNUSED pc = abuf->addr;
25383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25384
e930b1f5 25385if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
b34f6357
DB
25386if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25387frvbf_media_acc_not_aligned (current_cpu);
25388} else {
25389if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25390frvbf_media_register_not_aligned (current_cpu);
25391} else {
25392if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25393{
25394 UHI tmp_argihi;
25395 UHI tmp_argilo;
25396 UHI tmp_argjhi;
25397 UHI tmp_argjlo;
25398{
b29791a8
DE
25399 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25400 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25401 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25402 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25403}
25404{
25405 DI tmp_tmp;
25406 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25407if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25408{
25409 {
25410 UDI opval = MAKEDI (255, 0xffffffff);
25411 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25412 written |= (1 << 19);
25413 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25414 }
25415frvbf_media_overflow (current_cpu, 8);
25416}
25417} else {
25418if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25419{
25420 {
25421 UDI opval = MAKEDI (0, 0);
25422 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25423 written |= (1 << 19);
25424 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25425 }
25426frvbf_media_overflow (current_cpu, 8);
25427}
25428} else {
25429 {
25430 UDI opval = tmp_tmp;
25431 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25432 written |= (1 << 19);
25433 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25434 }
25435}
25436}
25437}
25438{
25439 DI tmp_tmp;
b29791a8 25440 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25441if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25442{
25443 {
25444 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25445 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25446 written |= (1 << 20);
25447 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25448 }
25449frvbf_media_overflow (current_cpu, 4);
25450}
25451} else {
25452if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25453{
25454 {
25455 UDI opval = MAKEDI (0, 0);
b29791a8 25456 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25457 written |= (1 << 20);
25458 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25459 }
25460frvbf_media_overflow (current_cpu, 4);
25461}
25462} else {
25463 {
25464 UDI opval = tmp_tmp;
b29791a8 25465 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
b34f6357
DB
25466 written |= (1 << 20);
25467 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25468 }
25469}
25470}
25471}
25472{
b29791a8
DE
25473 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25474 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25475 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25476 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25477}
25478{
25479 DI tmp_tmp;
b29791a8 25480 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
b34f6357
DB
25481if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25482{
25483 {
25484 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25485 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25486 written |= (1 << 21);
25487 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25488 }
25489frvbf_media_overflow (current_cpu, 2);
25490}
25491} else {
25492if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25493{
25494 {
25495 UDI opval = MAKEDI (0, 0);
b29791a8 25496 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25497 written |= (1 << 21);
25498 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25499 }
25500frvbf_media_overflow (current_cpu, 2);
25501}
25502} else {
25503 {
25504 UDI opval = tmp_tmp;
b29791a8 25505 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
b34f6357
DB
25506 written |= (1 << 21);
25507 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25508 }
25509}
25510}
25511}
25512{
25513 DI tmp_tmp;
b29791a8 25514 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
b34f6357
DB
25515if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25516{
25517 {
25518 UDI opval = MAKEDI (255, 0xffffffff);
b29791a8 25519 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25520 written |= (1 << 22);
25521 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25522 }
25523frvbf_media_overflow (current_cpu, 1);
25524}
25525} else {
25526if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25527{
25528 {
25529 UDI opval = MAKEDI (0, 0);
b29791a8 25530 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25531 written |= (1 << 22);
25532 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25533 }
25534frvbf_media_overflow (current_cpu, 1);
25535}
25536} else {
25537 {
25538 UDI opval = tmp_tmp;
b29791a8 25539 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
b34f6357
DB
25540 written |= (1 << 22);
25541 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25542 }
25543}
25544}
25545}
25546}
25547}
25548}
e930b1f5 25549}
b34f6357
DB
25550}
25551
25552 abuf->written = written;
25553 return vpc;
25554#undef FLD
25555}
25556
25557/* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25558
25559static SEM_PC
25560SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25561{
25562#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25564 int UNUSED written = 0;
25565 IADDR UNUSED pc = abuf->addr;
25566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25567
e930b1f5 25568if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25569if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25570frvbf_media_acc_not_aligned (current_cpu);
25571} else {
25572if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25573frvbf_media_register_not_aligned (current_cpu);
25574} else {
25575{
25576 HI tmp_argihi;
25577 HI tmp_argilo;
25578 HI tmp_argjhi;
25579 HI tmp_argjlo;
25580{
b29791a8
DE
25581 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25582 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25583 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25584 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25585}
25586{
25587 DI tmp_tmp;
b29791a8 25588 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25589if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25590{
25591 {
25592 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25593 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25594 written |= (1 << 19);
25595 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25596 }
25597frvbf_media_overflow (current_cpu, 2);
25598}
25599} else {
25600if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25601{
25602 {
25603 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25604 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25605 written |= (1 << 19);
25606 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25607 }
25608frvbf_media_overflow (current_cpu, 2);
25609}
25610} else {
25611 {
25612 DI opval = tmp_tmp;
b29791a8 25613 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25614 written |= (1 << 19);
25615 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25616 }
25617}
25618}
25619}
25620{
25621 DI tmp_tmp;
b29791a8 25622 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25623if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25624{
25625 {
25626 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25627 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25628 written |= (1 << 20);
25629 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25630 }
25631frvbf_media_overflow (current_cpu, 1);
25632}
25633} else {
25634if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25635{
25636 {
25637 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25638 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25639 written |= (1 << 20);
25640 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25641 }
25642frvbf_media_overflow (current_cpu, 1);
25643}
25644} else {
25645 {
25646 DI opval = tmp_tmp;
b29791a8 25647 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25648 written |= (1 << 20);
25649 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25650 }
25651}
25652}
25653}
25654{
b29791a8
DE
25655 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25656 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25657 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25658 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25659}
25660{
25661 DI tmp_tmp;
25662 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25663if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25664{
25665 {
25666 DI opval = MAKEDI (127, 0xffffffff);
25667 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25668 written |= (1 << 17);
25669 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25670 }
25671frvbf_media_overflow (current_cpu, 8);
25672}
25673} else {
25674if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25675{
25676 {
25677 DI opval = MAKEDI (0xffffff80, 0);
25678 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25679 written |= (1 << 17);
25680 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25681 }
25682frvbf_media_overflow (current_cpu, 8);
25683}
25684} else {
25685 {
25686 DI opval = tmp_tmp;
25687 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25688 written |= (1 << 17);
25689 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25690 }
25691}
25692}
25693}
25694{
25695 DI tmp_tmp;
b29791a8 25696 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25697if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25698{
25699 {
25700 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25701 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25702 written |= (1 << 18);
25703 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25704 }
25705frvbf_media_overflow (current_cpu, 4);
25706}
25707} else {
25708if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25709{
25710 {
25711 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25712 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25713 written |= (1 << 18);
25714 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25715 }
25716frvbf_media_overflow (current_cpu, 4);
25717}
25718} else {
25719 {
25720 DI opval = tmp_tmp;
b29791a8 25721 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25722 written |= (1 << 18);
25723 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25724 }
25725}
25726}
25727}
25728}
25729}
e930b1f5 25730}
b34f6357
DB
25731}
25732
25733 abuf->written = written;
25734 return vpc;
25735#undef FLD
25736}
25737
25738/* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25739
25740static SEM_PC
25741SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25742{
25743#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25745 int UNUSED written = 0;
25746 IADDR UNUSED pc = abuf->addr;
25747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25748
e930b1f5 25749if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25750if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25751frvbf_media_acc_not_aligned (current_cpu);
25752} else {
25753if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25754frvbf_media_register_not_aligned (current_cpu);
25755} else {
25756{
25757 HI tmp_argihi;
25758 HI tmp_argilo;
25759 HI tmp_argjhi;
25760 HI tmp_argjlo;
25761{
b29791a8
DE
25762 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25763 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25764 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25765 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25766}
25767{
25768 DI tmp_tmp;
b29791a8 25769 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
b34f6357
DB
25770if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25771{
25772 {
25773 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25774 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25775 written |= (1 << 19);
25776 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25777 }
25778frvbf_media_overflow (current_cpu, 2);
25779}
25780} else {
25781if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25782{
25783 {
25784 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25785 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25786 written |= (1 << 19);
25787 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25788 }
25789frvbf_media_overflow (current_cpu, 2);
25790}
25791} else {
25792 {
25793 DI opval = tmp_tmp;
b29791a8 25794 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
25795 written |= (1 << 19);
25796 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25797 }
25798}
25799}
25800}
25801{
25802 DI tmp_tmp;
b29791a8 25803 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25804if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25805{
25806 {
25807 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25808 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25809 written |= (1 << 20);
25810 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25811 }
25812frvbf_media_overflow (current_cpu, 1);
25813}
25814} else {
25815if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25816{
25817 {
25818 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25819 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25820 written |= (1 << 20);
25821 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25822 }
25823frvbf_media_overflow (current_cpu, 1);
25824}
25825} else {
25826 {
25827 DI opval = tmp_tmp;
b29791a8 25828 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
25829 written |= (1 << 20);
25830 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25831 }
25832}
25833}
25834}
25835{
b29791a8
DE
25836 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25837 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25838 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25839 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25840}
25841{
25842 DI tmp_tmp;
25843 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25844if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25845{
25846 {
25847 DI opval = MAKEDI (127, 0xffffffff);
25848 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25849 written |= (1 << 17);
25850 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25851 }
25852frvbf_media_overflow (current_cpu, 8);
25853}
25854} else {
25855if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25856{
25857 {
25858 DI opval = MAKEDI (0xffffff80, 0);
25859 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25860 written |= (1 << 17);
25861 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25862 }
25863frvbf_media_overflow (current_cpu, 8);
25864}
25865} else {
25866 {
25867 DI opval = tmp_tmp;
25868 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25869 written |= (1 << 17);
25870 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25871 }
25872}
25873}
25874}
25875{
25876 DI tmp_tmp;
b29791a8 25877 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25878if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25879{
25880 {
25881 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25882 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25883 written |= (1 << 18);
25884 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25885 }
25886frvbf_media_overflow (current_cpu, 4);
25887}
25888} else {
25889if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25890{
25891 {
25892 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 25893 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25894 written |= (1 << 18);
25895 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25896 }
25897frvbf_media_overflow (current_cpu, 4);
25898}
25899} else {
25900 {
25901 DI opval = tmp_tmp;
b29791a8 25902 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25903 written |= (1 << 18);
25904 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25905 }
25906}
25907}
25908}
25909}
25910}
e930b1f5 25911}
b34f6357
DB
25912}
25913
25914 abuf->written = written;
25915 return vpc;
25916#undef FLD
25917}
25918
25919/* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25920
25921static SEM_PC
25922SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25923{
25924#define FLD(f) abuf->fields.sfmt_cmqmachs.f
25925 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25926 int UNUSED written = 0;
25927 IADDR UNUSED pc = abuf->addr;
25928 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25929
e930b1f5 25930if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
25931if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25932frvbf_media_acc_not_aligned (current_cpu);
25933} else {
25934if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25935frvbf_media_register_not_aligned (current_cpu);
25936} else {
25937{
25938 HI tmp_argihi;
25939 HI tmp_argilo;
25940 HI tmp_argjhi;
25941 HI tmp_argjlo;
25942{
b29791a8
DE
25943 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25944 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25945 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25946 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
25947}
25948{
25949 DI tmp_tmp;
25950 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25951if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25952{
25953 {
25954 DI opval = MAKEDI (127, 0xffffffff);
25955 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25956 written |= (1 << 17);
25957 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25958 }
25959frvbf_media_overflow (current_cpu, 8);
25960}
25961} else {
25962if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25963{
25964 {
25965 DI opval = MAKEDI (0xffffff80, 0);
25966 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25967 written |= (1 << 17);
25968 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25969 }
25970frvbf_media_overflow (current_cpu, 8);
25971}
25972} else {
25973 {
25974 DI opval = tmp_tmp;
25975 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25976 written |= (1 << 17);
25977 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25978 }
25979}
25980}
25981}
25982{
25983 DI tmp_tmp;
b29791a8 25984 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
25985if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25986{
25987 {
25988 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 25989 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
25990 written |= (1 << 18);
25991 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25992 }
25993frvbf_media_overflow (current_cpu, 4);
25994}
25995} else {
25996if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25997{
25998 {
25999 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26000 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26001 written |= (1 << 18);
26002 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26003 }
26004frvbf_media_overflow (current_cpu, 4);
26005}
26006} else {
26007 {
26008 DI opval = tmp_tmp;
b29791a8 26009 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26010 written |= (1 << 18);
26011 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26012 }
26013}
26014}
26015}
26016{
b29791a8
DE
26017 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26018 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26019 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26020 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26021}
26022{
26023 DI tmp_tmp;
b29791a8 26024 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
b34f6357
DB
26025if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26026{
26027 {
26028 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26029 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
26030 written |= (1 << 19);
26031 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26032 }
26033frvbf_media_overflow (current_cpu, 2);
26034}
26035} else {
26036if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26037{
26038 {
26039 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26040 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
26041 written |= (1 << 19);
26042 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26043 }
26044frvbf_media_overflow (current_cpu, 2);
26045}
26046} else {
26047 {
26048 DI opval = tmp_tmp;
b29791a8 26049 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
b34f6357
DB
26050 written |= (1 << 19);
26051 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26052 }
26053}
26054}
26055}
26056{
26057 DI tmp_tmp;
b29791a8 26058 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
b34f6357
DB
26059if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26060{
26061 {
26062 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26063 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
26064 written |= (1 << 20);
26065 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26066 }
26067frvbf_media_overflow (current_cpu, 1);
26068}
26069} else {
26070if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26071{
26072 {
26073 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26074 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
26075 written |= (1 << 20);
26076 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26077 }
26078frvbf_media_overflow (current_cpu, 1);
26079}
26080} else {
26081 {
26082 DI opval = tmp_tmp;
b29791a8 26083 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
b34f6357
DB
26084 written |= (1 << 20);
26085 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26086 }
26087}
26088}
26089}
26090}
26091}
e930b1f5 26092}
b34f6357
DB
26093}
26094
26095 abuf->written = written;
26096 return vpc;
26097#undef FLD
26098}
26099
26100/* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26101
26102static SEM_PC
26103SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26104{
26105#define FLD(f) abuf->fields.sfmt_cmmachs.f
26106 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26107 int UNUSED written = 0;
26108 IADDR UNUSED pc = abuf->addr;
26109 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26110
e930b1f5 26111if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26112{
26113 HI tmp_argihi;
26114 HI tmp_argilo;
26115 HI tmp_argjhi;
26116 HI tmp_argjlo;
26117{
b29791a8
DE
26118 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26119 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26120 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26121 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26122}
26123{
26124 DI tmp_tmp1;
26125 DI tmp_tmp2;
26126 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26127 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26128 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26129if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26130{
26131 {
26132 DI opval = MAKEDI (127, 0xffffffff);
26133 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26134 written |= (1 << 9);
b34f6357
DB
26135 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26136 }
26137frvbf_media_overflow (current_cpu, 8);
26138}
26139} else {
26140if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26141{
26142 {
26143 DI opval = MAKEDI (0xffffff80, 0);
26144 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26145 written |= (1 << 9);
b34f6357
DB
26146 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26147 }
26148frvbf_media_overflow (current_cpu, 8);
26149}
26150} else {
26151 {
26152 DI opval = tmp_tmp1;
26153 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26154 written |= (1 << 9);
b34f6357
DB
26155 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26156 }
26157}
26158}
26159}
e930b1f5 26160}
b34f6357
DB
26161}
26162
26163 abuf->written = written;
26164 return vpc;
26165#undef FLD
26166}
26167
26168/* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26169
26170static SEM_PC
26171SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26172{
26173#define FLD(f) abuf->fields.sfmt_cmmachs.f
26174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26175 int UNUSED written = 0;
26176 IADDR UNUSED pc = abuf->addr;
26177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26178
e930b1f5 26179if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26180{
26181 UHI tmp_argihi;
26182 UHI tmp_argilo;
26183 UHI tmp_argjhi;
26184 UHI tmp_argjlo;
26185{
b29791a8
DE
26186 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26187 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26188 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26189 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26190}
26191{
26192 DI tmp_tmp1;
26193 DI tmp_tmp2;
26194 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26195 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26196 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26197if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26198{
26199 {
26200 DI opval = MAKEDI (255, 0xffffffff);
26201 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26202 written |= (1 << 9);
b34f6357
DB
26203 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26204 }
26205frvbf_media_overflow (current_cpu, 8);
26206}
26207} else {
26208if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26209{
26210 {
26211 DI opval = MAKEDI (0, 0);
26212 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26213 written |= (1 << 9);
b34f6357
DB
26214 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26215 }
26216frvbf_media_overflow (current_cpu, 8);
26217}
26218} else {
26219 {
26220 DI opval = tmp_tmp1;
26221 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26222 written |= (1 << 9);
b34f6357
DB
26223 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26224 }
26225}
26226}
26227}
e930b1f5 26228}
b34f6357
DB
26229}
26230
26231 abuf->written = written;
26232 return vpc;
26233#undef FLD
26234}
26235
26236/* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26237
26238static SEM_PC
26239SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26240{
26241#define FLD(f) abuf->fields.sfmt_cmmachs.f
26242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26243 int UNUSED written = 0;
26244 IADDR UNUSED pc = abuf->addr;
26245 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26246
e930b1f5 26247if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26248{
26249 HI tmp_argihi;
26250 HI tmp_argilo;
26251 HI tmp_argjhi;
26252 HI tmp_argjlo;
26253{
b29791a8
DE
26254 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26255 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26256 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26257 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26258}
26259{
26260 DI tmp_tmp1;
26261 DI tmp_tmp2;
26262 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26263 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26264 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26265if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26266{
26267 {
26268 DI opval = MAKEDI (127, 0xffffffff);
26269 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26270 written |= (1 << 9);
b34f6357
DB
26271 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26272 }
26273frvbf_media_overflow (current_cpu, 8);
26274}
26275} else {
26276if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26277{
26278 {
26279 DI opval = MAKEDI (0xffffff80, 0);
26280 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26281 written |= (1 << 9);
b34f6357
DB
26282 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26283 }
26284frvbf_media_overflow (current_cpu, 8);
26285}
26286} else {
26287 {
26288 DI opval = tmp_tmp1;
26289 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26290 written |= (1 << 9);
b34f6357
DB
26291 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26292 }
26293}
26294}
26295}
e930b1f5 26296}
b34f6357
DB
26297}
26298
26299 abuf->written = written;
26300 return vpc;
26301#undef FLD
26302}
26303
26304/* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26305
26306static SEM_PC
26307SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26308{
26309#define FLD(f) abuf->fields.sfmt_cmmachs.f
26310 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26311 int UNUSED written = 0;
26312 IADDR UNUSED pc = abuf->addr;
26313 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26314
e930b1f5 26315if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26316{
26317 UHI tmp_argihi;
26318 UHI tmp_argilo;
26319 UHI tmp_argjhi;
26320 UHI tmp_argjlo;
26321{
b29791a8
DE
26322 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26323 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26324 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26325 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26326}
26327{
26328 DI tmp_tmp1;
26329 DI tmp_tmp2;
26330 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26331 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26332 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26333if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26334{
26335 {
26336 DI opval = MAKEDI (255, 0xffffffff);
26337 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26338 written |= (1 << 9);
b34f6357
DB
26339 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26340 }
26341frvbf_media_overflow (current_cpu, 8);
26342}
26343} else {
26344if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26345{
26346 {
26347 DI opval = MAKEDI (0, 0);
26348 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26349 written |= (1 << 9);
b34f6357
DB
26350 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26351 }
26352frvbf_media_overflow (current_cpu, 8);
26353}
26354} else {
26355 {
26356 DI opval = tmp_tmp1;
26357 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26358 written |= (1 << 9);
b34f6357
DB
26359 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26360 }
26361}
26362}
26363}
e930b1f5 26364}
b34f6357
DB
26365}
26366
26367 abuf->written = written;
26368 return vpc;
26369#undef FLD
26370}
26371
26372/* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26373
26374static SEM_PC
26375SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26376{
26377#define FLD(f) abuf->fields.sfmt_cmmachs.f
26378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26379 int UNUSED written = 0;
26380 IADDR UNUSED pc = abuf->addr;
26381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26382
26383if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26384if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26385{
26386 HI tmp_argihi;
26387 HI tmp_argilo;
26388 HI tmp_argjhi;
26389 HI tmp_argjlo;
26390{
b29791a8
DE
26391 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26392 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26393 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26394 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26395}
26396{
26397 DI tmp_tmp1;
26398 DI tmp_tmp2;
26399 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26400 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26401 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26402if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26403{
26404 {
26405 DI opval = MAKEDI (127, 0xffffffff);
26406 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26407 written |= (1 << 11);
b34f6357
DB
26408 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26409 }
26410frvbf_media_overflow (current_cpu, 8);
26411}
26412} else {
26413if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26414{
26415 {
26416 DI opval = MAKEDI (0xffffff80, 0);
26417 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26418 written |= (1 << 11);
b34f6357
DB
26419 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26420 }
26421frvbf_media_overflow (current_cpu, 8);
26422}
26423} else {
26424 {
26425 DI opval = tmp_tmp1;
26426 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26427 written |= (1 << 11);
b34f6357
DB
26428 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26429 }
26430}
26431}
26432}
26433}
e930b1f5 26434}
b34f6357
DB
26435}
26436
26437 abuf->written = written;
26438 return vpc;
26439#undef FLD
26440}
26441
26442/* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26443
26444static SEM_PC
26445SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26446{
26447#define FLD(f) abuf->fields.sfmt_cmmachs.f
26448 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26449 int UNUSED written = 0;
26450 IADDR UNUSED pc = abuf->addr;
26451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26452
26453if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26454if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26455{
26456 UHI tmp_argihi;
26457 UHI tmp_argilo;
26458 UHI tmp_argjhi;
26459 UHI tmp_argjlo;
26460{
b29791a8
DE
26461 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26462 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26463 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26464 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26465}
26466{
26467 DI tmp_tmp1;
26468 DI tmp_tmp2;
26469 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26470 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26471 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26472if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26473{
26474 {
26475 DI opval = MAKEDI (255, 0xffffffff);
26476 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26477 written |= (1 << 11);
b34f6357
DB
26478 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26479 }
26480frvbf_media_overflow (current_cpu, 8);
26481}
26482} else {
26483if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26484{
26485 {
26486 DI opval = MAKEDI (0, 0);
26487 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26488 written |= (1 << 11);
b34f6357
DB
26489 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26490 }
26491frvbf_media_overflow (current_cpu, 8);
26492}
26493} else {
26494 {
26495 DI opval = tmp_tmp1;
26496 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26497 written |= (1 << 11);
b34f6357
DB
26498 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26499 }
26500}
26501}
26502}
26503}
e930b1f5 26504}
b34f6357
DB
26505}
26506
26507 abuf->written = written;
26508 return vpc;
26509#undef FLD
26510}
26511
26512/* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26513
26514static SEM_PC
26515SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26516{
26517#define FLD(f) abuf->fields.sfmt_cmmachs.f
26518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26519 int UNUSED written = 0;
26520 IADDR UNUSED pc = abuf->addr;
26521 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26522
26523if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26524if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26525{
26526 HI tmp_argihi;
26527 HI tmp_argilo;
26528 HI tmp_argjhi;
26529 HI tmp_argjlo;
26530{
b29791a8
DE
26531 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26532 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26533 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26534 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26535}
26536{
26537 DI tmp_tmp1;
26538 DI tmp_tmp2;
26539 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26540 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26541 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26542if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26543{
26544 {
26545 DI opval = MAKEDI (127, 0xffffffff);
26546 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26547 written |= (1 << 11);
b34f6357
DB
26548 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26549 }
26550frvbf_media_overflow (current_cpu, 8);
26551}
26552} else {
26553if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26554{
26555 {
26556 DI opval = MAKEDI (0xffffff80, 0);
26557 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26558 written |= (1 << 11);
b34f6357
DB
26559 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26560 }
26561frvbf_media_overflow (current_cpu, 8);
26562}
26563} else {
26564 {
26565 DI opval = tmp_tmp1;
26566 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26567 written |= (1 << 11);
b34f6357
DB
26568 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26569 }
26570}
26571}
26572}
26573}
e930b1f5 26574}
b34f6357
DB
26575}
26576
26577 abuf->written = written;
26578 return vpc;
26579#undef FLD
26580}
26581
26582/* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26583
26584static SEM_PC
26585SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26586{
26587#define FLD(f) abuf->fields.sfmt_cmmachs.f
26588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26589 int UNUSED written = 0;
26590 IADDR UNUSED pc = abuf->addr;
26591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26592
26593if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
e930b1f5 26594if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26595{
26596 UHI tmp_argihi;
26597 UHI tmp_argilo;
26598 UHI tmp_argjhi;
26599 UHI tmp_argjlo;
26600{
b29791a8
DE
26601 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26602 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26603 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26604 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26605}
26606{
26607 DI tmp_tmp1;
26608 DI tmp_tmp2;
26609 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26610 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26611 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26612if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26613{
26614 {
26615 DI opval = MAKEDI (255, 0xffffffff);
26616 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26617 written |= (1 << 11);
b34f6357
DB
26618 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26619 }
26620frvbf_media_overflow (current_cpu, 8);
26621}
26622} else {
26623if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26624{
26625 {
26626 DI opval = MAKEDI (0, 0);
26627 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26628 written |= (1 << 11);
b34f6357
DB
26629 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26630 }
26631frvbf_media_overflow (current_cpu, 8);
26632}
26633} else {
26634 {
26635 DI opval = tmp_tmp1;
26636 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
e930b1f5 26637 written |= (1 << 11);
b34f6357
DB
26638 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26639 }
26640}
26641}
26642}
26643}
e930b1f5 26644}
b34f6357
DB
26645}
26646
26647 abuf->written = written;
26648 return vpc;
26649#undef FLD
26650}
26651
26652/* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26653
26654static SEM_PC
26655SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26656{
26657#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26659 int UNUSED written = 0;
26660 IADDR UNUSED pc = abuf->addr;
26661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26662
e930b1f5 26663if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26664if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26665frvbf_media_acc_not_aligned (current_cpu);
26666} else {
26667if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26668frvbf_media_register_not_aligned (current_cpu);
26669} else {
26670{
26671 HI tmp_argihi;
26672 HI tmp_argilo;
26673 HI tmp_argjhi;
26674 HI tmp_argjlo;
26675{
b29791a8
DE
26676 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26677 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26678 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26679 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26680}
26681{
26682 DI tmp_tmp1;
26683 DI tmp_tmp2;
26684 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26685 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26686 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26687if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26688{
26689 {
26690 DI opval = MAKEDI (127, 0xffffffff);
26691 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26692 written |= (1 << 13);
26693 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26694 }
26695frvbf_media_overflow (current_cpu, 8);
26696}
26697} else {
26698if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26699{
26700 {
26701 DI opval = MAKEDI (0xffffff80, 0);
26702 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26703 written |= (1 << 13);
26704 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26705 }
26706frvbf_media_overflow (current_cpu, 8);
26707}
26708} else {
26709 {
26710 DI opval = tmp_tmp1;
26711 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26712 written |= (1 << 13);
26713 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26714 }
26715}
26716}
26717}
26718{
b29791a8
DE
26719 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26720 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26721 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26722 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26723}
26724{
26725 DI tmp_tmp1;
26726 DI tmp_tmp2;
26727 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26728 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26729 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26730if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26731{
26732 {
26733 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26734 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26735 written |= (1 << 14);
26736 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26737 }
26738frvbf_media_overflow (current_cpu, 4);
26739}
26740} else {
26741if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26742{
26743 {
26744 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26745 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26746 written |= (1 << 14);
26747 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26748 }
26749frvbf_media_overflow (current_cpu, 4);
26750}
26751} else {
26752 {
26753 DI opval = tmp_tmp1;
b29791a8 26754 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26755 written |= (1 << 14);
26756 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26757 }
26758}
26759}
26760}
26761}
26762}
e930b1f5 26763}
b34f6357
DB
26764}
26765
26766 abuf->written = written;
26767 return vpc;
26768#undef FLD
26769}
26770
26771/* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26772
26773static SEM_PC
26774SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26775{
26776#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26778 int UNUSED written = 0;
26779 IADDR UNUSED pc = abuf->addr;
26780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26781
e930b1f5 26782if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26783if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26784frvbf_media_acc_not_aligned (current_cpu);
26785} else {
26786if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26787frvbf_media_register_not_aligned (current_cpu);
26788} else {
26789{
26790 UHI tmp_argihi;
26791 UHI tmp_argilo;
26792 UHI tmp_argjhi;
26793 UHI tmp_argjlo;
26794{
b29791a8
DE
26795 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26796 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26797 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26798 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26799}
26800{
26801 DI tmp_tmp1;
26802 DI tmp_tmp2;
26803 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26804 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26805 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26806if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26807{
26808 {
26809 DI opval = MAKEDI (255, 0xffffffff);
26810 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26811 written |= (1 << 13);
26812 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26813 }
26814frvbf_media_overflow (current_cpu, 8);
26815}
26816} else {
26817if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26818{
26819 {
26820 DI opval = MAKEDI (0, 0);
26821 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26822 written |= (1 << 13);
26823 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26824 }
26825frvbf_media_overflow (current_cpu, 8);
26826}
26827} else {
26828 {
26829 DI opval = tmp_tmp1;
26830 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26831 written |= (1 << 13);
26832 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26833 }
26834}
26835}
26836}
26837{
b29791a8
DE
26838 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26839 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26840 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26841 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26842}
26843{
26844 DI tmp_tmp1;
26845 DI tmp_tmp2;
26846 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26847 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26848 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26849if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26850{
26851 {
26852 DI opval = MAKEDI (255, 0xffffffff);
b29791a8 26853 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26854 written |= (1 << 14);
26855 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26856 }
26857frvbf_media_overflow (current_cpu, 4);
26858}
26859} else {
26860if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26861{
26862 {
26863 DI opval = MAKEDI (0, 0);
b29791a8 26864 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26865 written |= (1 << 14);
26866 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26867 }
26868frvbf_media_overflow (current_cpu, 4);
26869}
26870} else {
26871 {
26872 DI opval = tmp_tmp1;
b29791a8 26873 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26874 written |= (1 << 14);
26875 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26876 }
26877}
26878}
26879}
26880}
26881}
e930b1f5 26882}
b34f6357
DB
26883}
26884
26885 abuf->written = written;
26886 return vpc;
26887#undef FLD
26888}
26889
26890/* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26891
26892static SEM_PC
26893SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26894{
26895#define FLD(f) abuf->fields.sfmt_cmqmachs.f
26896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26897 int UNUSED written = 0;
26898 IADDR UNUSED pc = abuf->addr;
26899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26900
e930b1f5 26901if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
26902if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26903frvbf_media_acc_not_aligned (current_cpu);
26904} else {
26905if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26906frvbf_media_register_not_aligned (current_cpu);
26907} else {
26908{
26909 HI tmp_argihi;
26910 HI tmp_argilo;
26911 HI tmp_argjhi;
26912 HI tmp_argjlo;
26913{
b29791a8
DE
26914 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26915 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26916 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26917 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26918}
26919{
26920 DI tmp_tmp1;
26921 DI tmp_tmp2;
26922 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26923 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26924 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26925if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26926{
26927 {
26928 DI opval = MAKEDI (127, 0xffffffff);
26929 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26930 written |= (1 << 13);
26931 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26932 }
26933frvbf_media_overflow (current_cpu, 8);
26934}
26935} else {
26936if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26937{
26938 {
26939 DI opval = MAKEDI (0xffffff80, 0);
26940 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26941 written |= (1 << 13);
26942 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26943 }
26944frvbf_media_overflow (current_cpu, 8);
26945}
26946} else {
26947 {
26948 DI opval = tmp_tmp1;
26949 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26950 written |= (1 << 13);
26951 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26952 }
26953}
26954}
26955}
26956{
b29791a8
DE
26957 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26958 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26959 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26960 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
26961}
26962{
26963 DI tmp_tmp1;
26964 DI tmp_tmp2;
26965 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26966 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26967 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26968if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26969{
26970 {
26971 DI opval = MAKEDI (127, 0xffffffff);
b29791a8 26972 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26973 written |= (1 << 14);
26974 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26975 }
26976frvbf_media_overflow (current_cpu, 4);
26977}
26978} else {
26979if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26980{
26981 {
26982 DI opval = MAKEDI (0xffffff80, 0);
b29791a8 26983 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26984 written |= (1 << 14);
26985 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26986 }
26987frvbf_media_overflow (current_cpu, 4);
26988}
26989} else {
26990 {
26991 DI opval = tmp_tmp1;
b29791a8 26992 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
26993 written |= (1 << 14);
26994 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26995 }
26996}
26997}
26998}
26999}
27000}
e930b1f5 27001}
b34f6357
DB
27002}
27003
27004 abuf->written = written;
27005 return vpc;
27006#undef FLD
27007}
27008
27009/* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
27010
27011static SEM_PC
27012SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27013{
27014#define FLD(f) abuf->fields.sfmt_cmqmachs.f
27015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27016 int UNUSED written = 0;
27017 IADDR UNUSED pc = abuf->addr;
27018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27019
e930b1f5 27020if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
b34f6357
DB
27021if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
27022frvbf_media_acc_not_aligned (current_cpu);
27023} else {
27024if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
27025frvbf_media_register_not_aligned (current_cpu);
27026} else {
27027{
27028 UHI tmp_argihi;
27029 UHI tmp_argilo;
27030 UHI tmp_argjhi;
27031 UHI tmp_argjlo;
27032{
b29791a8
DE
27033 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27034 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27035 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27036 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
27037}
27038{
27039 DI tmp_tmp1;
27040 DI tmp_tmp2;
27041 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27042 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27043 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27044if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27045{
27046 {
27047 DI opval = MAKEDI (255, 0xffffffff);
27048 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27049 written |= (1 << 13);
27050 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27051 }
27052frvbf_media_overflow (current_cpu, 8);
27053}
27054} else {
27055if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27056{
27057 {
27058 DI opval = MAKEDI (0, 0);
27059 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27060 written |= (1 << 13);
27061 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27062 }
27063frvbf_media_overflow (current_cpu, 8);
27064}
27065} else {
27066 {
27067 DI opval = tmp_tmp1;
27068 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27069 written |= (1 << 13);
27070 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27071 }
27072}
27073}
27074}
27075{
b29791a8
DE
27076 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27077 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27078 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27079 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
b34f6357
DB
27080}
27081{
27082 DI tmp_tmp1;
27083 DI tmp_tmp2;
27084 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27085 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27086 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27087if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27088{
27089 {
27090 DI opval = MAKEDI (255, 0xffffffff);
b29791a8 27091 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
27092 written |= (1 << 14);
27093 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27094 }
27095frvbf_media_overflow (current_cpu, 4);
27096}
27097} else {
27098if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27099{
27100 {
27101 DI opval = MAKEDI (0, 0);
b29791a8 27102 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
27103 written |= (1 << 14);
27104 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27105 }
27106frvbf_media_overflow (current_cpu, 4);
27107}
27108} else {
27109 {
27110 DI opval = tmp_tmp1;
b29791a8 27111 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
b34f6357
DB
27112 written |= (1 << 14);
27113 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27114 }
27115}
27116}
27117}
27118}
27119}
e930b1f5 27120}
b34f6357
DB
27121}
27122
27123 abuf->written = written;
27124 return vpc;
27125#undef FLD
27126}
27127
27128/* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27129
27130static SEM_PC
27131SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27132{
27133#define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27135 int UNUSED written = 0;
27136 IADDR UNUSED pc = abuf->addr;
27137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27138
27139{
27140 UHI tmp_tmp;
27141if (ANDSI (FLD (f_u6), 1)) {
b29791a8 27142 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27143} else {
b29791a8 27144 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27145}
27146 {
27147 UHI opval = tmp_tmp;
b29791a8 27148 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27149 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27150 }
27151 {
27152 UHI opval = tmp_tmp;
b29791a8 27153 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27154 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27155 }
27156}
27157
27158 return vpc;
27159#undef FLD
27160}
27161
27162/* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27163
27164static SEM_PC
27165SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27166{
27167#define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27168 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27169 int UNUSED written = 0;
27170 IADDR UNUSED pc = abuf->addr;
27171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27172
27173if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27174{
27175 UHI tmp_tmp;
27176if (ANDSI (FLD (f_u6), 1)) {
b29791a8 27177 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27178} else {
b29791a8 27179 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27180}
27181 {
27182 UHI opval = tmp_tmp;
b29791a8 27183 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27184 written |= (1 << 7);
27185 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27186 }
27187 {
27188 UHI opval = tmp_tmp;
b29791a8 27189 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27190 written |= (1 << 8);
27191 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27192 }
27193}
27194}
27195
27196 abuf->written = written;
27197 return vpc;
27198#undef FLD
27199}
27200
27201/* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27202
27203static SEM_PC
27204SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27205{
27206#define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27208 int UNUSED written = 0;
27209 IADDR UNUSED pc = abuf->addr;
27210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27211
27212if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27213frvbf_media_register_not_aligned (current_cpu);
27214} else {
27215{
27216 UHI tmp_tmp;
27217 {
27218 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27219 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27220 written |= (1 << 6);
27221 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27222 }
27223if (ANDSI (FLD (f_u6), 1)) {
b29791a8 27224 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27225} else {
b29791a8 27226 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27227}
27228 {
27229 UHI opval = tmp_tmp;
b29791a8 27230 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27231 written |= (1 << 7);
27232 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27233 }
27234 {
27235 UHI opval = tmp_tmp;
b29791a8 27236 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27237 written |= (1 << 9);
27238 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27239 }
27240 {
27241 UHI opval = tmp_tmp;
b29791a8 27242 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27243 written |= (1 << 8);
27244 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27245 }
27246 {
27247 UHI opval = tmp_tmp;
b29791a8 27248 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27249 written |= (1 << 10);
27250 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27251 }
27252}
27253}
27254
27255 abuf->written = written;
27256 return vpc;
27257#undef FLD
27258}
27259
27260/* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27261
27262static SEM_PC
27263SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27264{
27265#define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27267 int UNUSED written = 0;
27268 IADDR UNUSED pc = abuf->addr;
27269 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27270
27271if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27272frvbf_media_register_not_aligned (current_cpu);
27273} else {
27274if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27275{
27276 UHI tmp_tmp;
27277 {
27278 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27279 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27280 written |= (1 << 8);
27281 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27282 }
27283if (ANDSI (FLD (f_u6), 1)) {
b29791a8 27284 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
b34f6357 27285} else {
b29791a8 27286 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
b34f6357
DB
27287}
27288 {
27289 UHI opval = tmp_tmp;
b29791a8 27290 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27291 written |= (1 << 9);
27292 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27293 }
27294 {
27295 UHI opval = tmp_tmp;
b29791a8 27296 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27297 written |= (1 << 11);
27298 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27299 }
27300 {
27301 UHI opval = tmp_tmp;
b29791a8 27302 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27303 written |= (1 << 10);
27304 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27305 }
27306 {
27307 UHI opval = tmp_tmp;
b29791a8 27308 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27309 written |= (1 << 12);
27310 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27311 }
27312}
27313}
27314}
27315
27316 abuf->written = written;
27317 return vpc;
27318#undef FLD
27319}
27320
27321/* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27322
27323static SEM_PC
27324SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27325{
27326#define FLD(f) abuf->fields.sfmt_cmaddhss.f
27327 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27328 int UNUSED written = 0;
27329 IADDR UNUSED pc = abuf->addr;
27330 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27331
27332{
27333 {
b29791a8
DE
27334 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27335 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27336 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27337 }
27338 {
b29791a8
DE
27339 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27340 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27341 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27342 }
27343}
27344
27345 return vpc;
27346#undef FLD
27347}
27348
27349/* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27350
27351static SEM_PC
27352SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27353{
27354#define FLD(f) abuf->fields.sfmt_mdpackh.f
27355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27356 int UNUSED written = 0;
27357 IADDR UNUSED pc = abuf->addr;
27358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27359
27360if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27361frvbf_media_register_not_aligned (current_cpu);
27362} else {
27363{
27364 {
27365 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27366 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27367 written |= (1 << 10);
27368 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27369 }
27370 {
27371 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27372 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27373 written |= (1 << 11);
27374 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27375 }
27376 {
27377 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27378 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27379 written |= (1 << 12);
27380 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27381 }
27382{
27383 {
b29791a8
DE
27384 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27385 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27386 written |= (1 << 13);
27387 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27388 }
27389 {
b29791a8
DE
27390 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27391 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27392 written |= (1 << 15);
27393 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27394 }
27395}
27396{
27397 {
b29791a8
DE
27398 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27399 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27400 written |= (1 << 14);
27401 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27402 }
27403 {
b29791a8
DE
27404 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27405 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27406 written |= (1 << 16);
27407 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27408 }
27409}
27410}
27411}
27412
27413 abuf->written = written;
27414 return vpc;
27415#undef FLD
27416}
27417
27418/* munpackh: munpackh$pack $FRinti,$FRintkeven */
27419
27420static SEM_PC
27421SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27422{
27423#define FLD(f) abuf->fields.sfmt_munpackh.f
27424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27425 int UNUSED written = 0;
27426 IADDR UNUSED pc = abuf->addr;
27427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27428
27429if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27430frvbf_media_register_not_aligned (current_cpu);
27431} else {
27432{
27433 {
27434 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27435 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27436 written |= (1 << 6);
27437 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27438 }
27439 {
27440 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27441 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27442 written |= (1 << 7);
27443 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27444 }
27445{
27446 {
b29791a8
DE
27447 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27448 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27449 written |= (1 << 8);
27450 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27451 }
27452 {
b29791a8
DE
27453 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27454 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27455 written |= (1 << 10);
27456 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27457 }
27458 {
b29791a8
DE
27459 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27460 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27461 written |= (1 << 9);
27462 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27463 }
27464 {
b29791a8
DE
27465 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27466 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27467 written |= (1 << 11);
27468 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27469 }
27470}
27471}
27472}
27473
27474 abuf->written = written;
27475 return vpc;
27476#undef FLD
27477}
27478
27479/* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27480
27481static SEM_PC
27482SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27483{
27484#define FLD(f) abuf->fields.sfmt_mdunpackh.f
27485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27486 int UNUSED written = 0;
27487 IADDR UNUSED pc = abuf->addr;
27488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27489
27490if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27491frvbf_media_register_not_aligned (current_cpu);
27492} else {
27493{
27494 {
27495 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27496 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27497 written |= (1 << 8);
27498 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27499 }
27500 {
27501 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27502 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27503 written |= (1 << 9);
27504 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27505 }
27506{
27507 {
b29791a8
DE
27508 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27509 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27510 written |= (1 << 10);
27511 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27512 }
27513 {
b29791a8
DE
27514 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27515 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27516 written |= (1 << 14);
27517 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27518 }
27519 {
b29791a8
DE
27520 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27521 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27522 written |= (1 << 12);
27523 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27524 }
27525 {
b29791a8
DE
27526 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27527 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
b34f6357
DB
27528 written |= (1 << 16);
27529 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27530 }
27531}
27532{
27533 {
b29791a8
DE
27534 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27535 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27536 written |= (1 << 11);
27537 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27538 }
27539 {
b29791a8
DE
27540 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27541 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27542 written |= (1 << 15);
27543 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27544 }
27545 {
b29791a8
DE
27546 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27547 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
b34f6357
DB
27548 written |= (1 << 13);
27549 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27550 }
27551 {
b29791a8
DE
27552 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27553 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
b34f6357
DB
27554 written |= (1 << 17);
27555 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27556 }
27557}
27558}
27559}
27560
27561 abuf->written = written;
27562 return vpc;
27563#undef FLD
27564}
27565
27566/* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27567
27568static SEM_PC
27569SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27570{
27571#define FLD(f) abuf->fields.sfmt_cmbtoh.f
27572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27573 int UNUSED written = 0;
27574 IADDR UNUSED pc = abuf->addr;
27575 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27576
27577{
27578 {
27579 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27580 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27581 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27582 }
27583 {
27584 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27585 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27586 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27587 }
27588if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27589frvbf_media_register_not_aligned (current_cpu);
27590} else {
27591{
27592 {
b29791a8
DE
27593 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27594 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27595 written |= (1 << 10);
27596 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27597 }
27598 {
b29791a8
DE
27599 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27600 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27601 written |= (1 << 12);
27602 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27603 }
27604 {
b29791a8
DE
27605 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27606 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27607 written |= (1 << 11);
27608 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27609 }
27610 {
b29791a8
DE
27611 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27612 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27613 written |= (1 << 13);
27614 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27615 }
27616}
27617}
27618}
27619
27620 abuf->written = written;
27621 return vpc;
27622#undef FLD
27623}
27624
27625/* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27626
27627static SEM_PC
27628SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27629{
27630#define FLD(f) abuf->fields.sfmt_cmbtoh.f
27631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27632 int UNUSED written = 0;
27633 IADDR UNUSED pc = abuf->addr;
27634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27635
27636{
27637 {
27638 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27639 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27640 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27641 }
27642 {
27643 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27644 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27645 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27646 }
27647if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27648frvbf_media_register_not_aligned (current_cpu);
27649} else {
27650if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27651{
27652 {
b29791a8
DE
27653 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27654 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27655 written |= (1 << 12);
27656 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27657 }
27658 {
b29791a8
DE
27659 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27660 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27661 written |= (1 << 14);
27662 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27663 }
27664 {
b29791a8
DE
27665 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27666 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27667 written |= (1 << 13);
27668 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27669 }
27670 {
b29791a8
DE
27671 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27672 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27673 written |= (1 << 15);
27674 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27675 }
27676}
27677}
27678}
27679}
27680
27681 abuf->written = written;
27682 return vpc;
27683#undef FLD
27684}
27685
27686/* mhtob: mhtob$pack $FRintjeven,$FRintk */
27687
27688static SEM_PC
27689SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27690{
27691#define FLD(f) abuf->fields.sfmt_cmhtob.f
27692 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27693 int UNUSED written = 0;
27694 IADDR UNUSED pc = abuf->addr;
27695 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27696
27697{
27698 {
27699 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27700 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27701 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27702 }
27703 {
27704 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27705 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27706 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27707 }
27708if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27709frvbf_media_register_not_aligned (current_cpu);
27710} else {
27711{
27712 {
b29791a8
DE
27713 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27714 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27715 written |= (1 << 13);
27716 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27717 }
27718 {
b29791a8
DE
27719 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27720 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27721 written |= (1 << 12);
27722 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27723 }
27724 {
b29791a8
DE
27725 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27726 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27727 written |= (1 << 11);
27728 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27729 }
27730 {
b29791a8
DE
27731 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27732 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27733 written |= (1 << 10);
27734 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27735 }
27736}
27737}
27738}
27739
27740 abuf->written = written;
27741 return vpc;
27742#undef FLD
27743}
27744
27745/* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27746
27747static SEM_PC
27748SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27749{
27750#define FLD(f) abuf->fields.sfmt_cmhtob.f
27751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27752 int UNUSED written = 0;
27753 IADDR UNUSED pc = abuf->addr;
27754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27755
27756{
27757 {
27758 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27759 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27760 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27761 }
27762 {
27763 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27764 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27765 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27766 }
27767if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27768frvbf_media_register_not_aligned (current_cpu);
27769} else {
27770if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27771{
27772 {
b29791a8
DE
27773 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27774 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27775 written |= (1 << 15);
27776 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27777 }
27778 {
b29791a8
DE
27779 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27780 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27781 written |= (1 << 14);
27782 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27783 }
27784 {
b29791a8
DE
27785 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27786 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27787 written |= (1 << 13);
27788 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27789 }
27790 {
b29791a8
DE
27791 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27792 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27793 written |= (1 << 12);
27794 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27795 }
27796}
27797}
27798}
27799}
27800
27801 abuf->written = written;
27802 return vpc;
27803#undef FLD
27804}
27805
27806/* mbtohe: mbtohe$pack $FRintj,$FRintk */
27807
27808static SEM_PC
27809SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27810{
27811#define FLD(f) abuf->fields.sfmt_cmbtohe.f
27812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27813 int UNUSED written = 0;
27814 IADDR UNUSED pc = abuf->addr;
27815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27816
27817{
27818 {
27819 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27820 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27821 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27822 }
27823 {
27824 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27825 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27826 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27827 }
27828if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27829frvbf_media_register_not_aligned (current_cpu);
27830} else {
27831{
27832 {
b29791a8
DE
27833 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27834 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27835 written |= (1 << 10);
27836 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27837 }
27838 {
b29791a8
DE
27839 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27840 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27841 written |= (1 << 14);
27842 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27843 }
27844 {
b29791a8
DE
27845 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27846 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27847 written |= (1 << 11);
27848 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27849 }
27850 {
b29791a8
DE
27851 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27852 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27853 written |= (1 << 15);
27854 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27855 }
27856 {
b29791a8
DE
27857 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27858 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27859 written |= (1 << 12);
27860 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27861 }
27862 {
b29791a8
DE
27863 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27864 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27865 written |= (1 << 16);
27866 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27867 }
27868 {
b29791a8
DE
27869 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27870 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27871 written |= (1 << 13);
27872 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27873 }
27874 {
b29791a8
DE
27875 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27876 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27877 written |= (1 << 17);
27878 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27879 }
27880}
27881}
27882}
27883
27884 abuf->written = written;
27885 return vpc;
27886#undef FLD
27887}
27888
27889/* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27890
27891static SEM_PC
27892SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27893{
27894#define FLD(f) abuf->fields.sfmt_cmbtohe.f
27895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27896 int UNUSED written = 0;
27897 IADDR UNUSED pc = abuf->addr;
27898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27899
27900{
27901 {
27902 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27903 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27904 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27905 }
27906 {
27907 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27908 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27909 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27910 }
27911if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27912frvbf_media_register_not_aligned (current_cpu);
27913} else {
27914if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27915{
27916 {
b29791a8
DE
27917 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27918 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27919 written |= (1 << 12);
27920 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27921 }
27922 {
b29791a8
DE
27923 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27924 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
b34f6357
DB
27925 written |= (1 << 16);
27926 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27927 }
27928 {
b29791a8
DE
27929 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27930 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27931 written |= (1 << 13);
27932 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27933 }
27934 {
b29791a8
DE
27935 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27936 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
b34f6357
DB
27937 written |= (1 << 17);
27938 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27939 }
27940 {
b29791a8
DE
27941 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27942 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27943 written |= (1 << 14);
27944 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27945 }
27946 {
b29791a8
DE
27947 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27948 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
b34f6357
DB
27949 written |= (1 << 18);
27950 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27951 }
27952 {
b29791a8
DE
27953 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27954 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27955 written |= (1 << 15);
27956 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27957 }
27958 {
b29791a8
DE
27959 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27960 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
b34f6357
DB
27961 written |= (1 << 19);
27962 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27963 }
27964}
27965}
27966}
27967}
27968
27969 abuf->written = written;
27970 return vpc;
27971#undef FLD
27972}
27973
d03ea14f 27974/* mnop: mnop$pack */
b34f6357
DB
27975
27976static SEM_PC
d03ea14f 27977SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
b34f6357 27978{
2310652a 27979#define FLD(f) abuf->fields.sfmt_empty.f
d03ea14f
DB
27980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27981 int UNUSED written = 0;
27982 IADDR UNUSED pc = abuf->addr;
27983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27984
27985((void) 0); /*nop*/
27986
27987 return vpc;
27988#undef FLD
27989}
27990
27991/* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27992
27993static SEM_PC
27994SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27995{
27996#define FLD(f) abuf->fields.sfmt_mdasaccs.f
27997 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27998 int UNUSED written = 0;
27999 IADDR UNUSED pc = abuf->addr;
28000 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28001
28002frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
28003
28004 return vpc;
28005#undef FLD
28006}
28007
28008/* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
28009
28010static SEM_PC
28011SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28012{
28013#define FLD(f) abuf->fields.sfmt_mdasaccs.f
b34f6357
DB
28014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28015 int UNUSED written = 0;
28016 IADDR UNUSED pc = abuf->addr;
28017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28018
d03ea14f 28019frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
b34f6357
DB
28020
28021 return vpc;
28022#undef FLD
28023}
28024
28025/* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
28026
28027static SEM_PC
28028SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28029{
28030#define FLD(f) abuf->fields.sfmt_mcuti.f
28031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28032 int UNUSED written = 0;
28033 IADDR UNUSED pc = abuf->addr;
28034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28035
28036 {
28037 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
28038 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28039 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28040 }
28041
28042 return vpc;
28043#undef FLD
28044}
28045
28046/* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
28047
28048static SEM_PC
28049SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28050{
28051#define FLD(f) abuf->fields.sfmt_mrdaccg.f
28052 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28053 int UNUSED written = 0;
28054 IADDR UNUSED pc = abuf->addr;
28055 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28056
28057 {
28058 SI opval = GET_H_ACCG (FLD (f_ACCGi));
28059 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28060 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28061 }
28062
28063 return vpc;
28064#undef FLD
28065}
28066
28067/* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
28068
28069static SEM_PC
28070SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28071{
28072#define FLD(f) abuf->fields.sfmt_cmmachs.f
28073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28074 int UNUSED written = 0;
28075 IADDR UNUSED pc = abuf->addr;
28076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28077
28078 {
28079 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
28080 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
28081 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28082 }
28083
28084 return vpc;
28085#undef FLD
28086}
28087
28088/* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28089
28090static SEM_PC
28091SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28092{
28093#define FLD(f) abuf->fields.sfmt_mwtaccg.f
28094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28095 int UNUSED written = 0;
28096 IADDR UNUSED pc = abuf->addr;
28097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28098
1c453cd6
DB
28099{
28100frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
b34f6357
DB
28101 {
28102 USI opval = GET_H_FR_INT (FLD (f_FRi));
28103 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28104 TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28105 }
1c453cd6 28106}
b34f6357
DB
28107
28108 return vpc;
28109#undef FLD
28110}
28111
28112/* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28113
28114static SEM_PC
28115SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28116{
2310652a 28117#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
28118 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28119 int UNUSED written = 0;
28120 IADDR UNUSED pc = abuf->addr;
28121 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28122
28123frvbf_media_cop (current_cpu, 1);
28124
28125 return vpc;
28126#undef FLD
28127}
28128
28129/* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28130
28131static SEM_PC
28132SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28133{
2310652a 28134#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
28135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28136 int UNUSED written = 0;
28137 IADDR UNUSED pc = abuf->addr;
28138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28139
28140frvbf_media_cop (current_cpu, 2);
28141
28142 return vpc;
28143#undef FLD
28144}
28145
28146/* fnop: fnop$pack */
28147
28148static SEM_PC
28149SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28150{
2310652a 28151#define FLD(f) abuf->fields.sfmt_empty.f
b34f6357
DB
28152 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28153 int UNUSED written = 0;
28154 IADDR UNUSED pc = abuf->addr;
28155 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28156
28157((void) 0); /*nop*/
28158
28159 return vpc;
28160#undef FLD
28161}
28162
28163/* Table of all semantic fns. */
28164
28165static const struct sem_fn_desc sem_fns[] = {
28166 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28167 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28168 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28169 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28170 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28171 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28172 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28173 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28174 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28175 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28176 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28177 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28178 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28179 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28180 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28181 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28182 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28183 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
e930b1f5
DB
28184 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28185 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28186 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
b34f6357
DB
28187 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28188 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28189 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
e930b1f5
DB
28190 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28191 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
b34f6357
DB
28192 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28193 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28194 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28195 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28196 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28197 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28198 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28199 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28200 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28201 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28202 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28203 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28204 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28205 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28206 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28207 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28208 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28209 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28210 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28211 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28212 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28213 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28214 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28215 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28216 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28217 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28218 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28219 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28220 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28221 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28222 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28223 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28224 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28225 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28226 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28227 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28228 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
e930b1f5
DB
28229 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28230 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
b34f6357
DB
28231 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28232 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28233 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28234 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28235 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28236 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28237 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28238 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28239 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28240 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28241 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28242 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28243 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28244 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28245 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28246 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28247 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28248 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28249 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28250 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28251 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28252 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28253 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28254 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28255 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28256 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28257 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28258 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28259 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28260 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28261 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28262 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28263 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28264 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28265 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28266 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28267 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28268 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28269 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28270 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28271 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28272 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28273 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28274 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28275 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28276 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28277 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28278 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28279 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28280 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28281 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28282 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28283 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28284 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28285 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28286 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28287 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28288 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28289 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28290 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28291 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28292 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28293 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28294 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28295 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28296 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28297 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28298 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28299 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28300 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28301 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28302 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28303 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28304 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28305 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28306 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28307 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28308 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28309 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28310 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28311 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28312 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28313 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28314 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28315 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28316 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28317 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28318 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28319 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28320 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28321 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28322 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28323 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28324 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28325 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28326 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28327 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28328 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28329 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28330 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28331 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28332 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28333 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28334 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28335 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28336 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28337 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28338 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28339 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28340 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
b34f6357
DB
28341 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28342 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28343 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28344 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28345 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28346 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28347 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28348 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
b34f6357
DB
28349 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28350 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28351 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
b34f6357
DB
28352 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28353 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28354 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
b34f6357
DB
28355 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28356 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28357 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28358 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28359 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28360 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28361 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28362 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28363 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28364 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28365 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28366 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28367 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28368 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28369 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28370 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28371 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28372 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28373 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28374 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28375 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28376 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28377 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28378 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28379 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28380 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28381 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28382 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28383 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28384 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28385 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28386 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28387 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28388 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28389 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28390 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28391 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28392 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28393 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28394 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28395 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28396 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28397 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28398 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28399 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28400 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28401 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28402 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28403 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28404 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28405 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28406 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28407 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28408 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28409 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28410 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28411 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28412 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28413 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28414 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28415 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28416 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28417 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28418 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28419 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28420 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28421 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28422 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28423 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28424 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28425 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28426 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28427 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28428 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28429 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28430 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28431 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28432 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28433 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28434 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28435 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28436 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28437 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28438 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28439 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28440 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28441 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28442 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28443 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28444 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28445 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28446 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28447 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28448 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28449 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28450 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28451 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28452 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28453 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28454 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28455 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28456 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28457 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28458 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28459 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28460 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28461 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28462 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28463 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28464 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28465 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28466 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28467 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28468 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28469 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28470 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28471 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28472 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28473 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28474 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28475 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28476 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28477 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28478 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28479 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28480 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28481 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28482 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28483 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28484 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28485 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28486 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28487 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28488 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28489 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28490 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28491 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28492 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28493 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28494 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28495 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28496 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28497 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28498 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28499 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28500 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28501 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28502 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28503 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28504 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28505 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28506 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28507 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28508 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28509 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28510 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28511 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28512 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28513 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28514 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28515 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28516 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28517 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28518 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28519 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28520 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28521 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28522 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28523 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28524 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28525 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28526 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28527 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28528 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28529 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28530 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28531 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28532 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28533 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28534 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28535 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28536 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28537 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28538 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28539 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28540 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28541 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28542 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28543 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28544 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28545 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28546 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28547 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28548 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28549 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28550 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28551 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28552 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28553 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28554 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28555 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28556 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28557 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28558 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28559 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28560 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28561 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28562 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28563 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28564 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28565 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28566 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28567 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28568 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28569 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28570 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28571 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28572 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28573 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28574 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28575 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28576 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28577 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28578 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28579 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28580 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28581 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28582 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28583 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28584 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28585 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28586 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28587 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28588 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28589 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28590 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28591 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28592 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28593 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28594 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28595 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28596 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28597 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28598 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28599 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28600 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28601 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28602 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28603 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28604 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28605 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28606 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28607 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28608 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28609 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28610 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28611 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28612 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28613 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28614 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28615 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28616 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28617 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28618 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28619 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28620 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28621 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28622 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28623 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28624 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28625 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28626 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28627 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28628 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28629 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28630 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28631 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28632 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28633 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28634 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28635 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28636 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28637 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28638 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28639 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28640 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28641 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28642 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28643 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28644 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28645 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28646 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28647 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28648 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28649 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28650 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28651 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28652 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28653 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28654 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28655 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28656 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28657 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28658 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28659 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28660 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28661 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28662 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28663 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28664 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28665 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28666 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28667 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28668 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28669 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28670 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28671 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28672 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28673 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28674 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28675 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28676 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28677 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28678 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28679 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28680 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28681 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28682 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28683 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28684 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28685 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28686 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28687 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28688 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28689 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28690 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28691 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28692 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28693 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
676a64f4
RS
28694 { FRVBF_INSN_LRAI, SEM_FN_NAME (frvbf,lrai) },
28695 { FRVBF_INSN_LRAD, SEM_FN_NAME (frvbf,lrad) },
28696 { FRVBF_INSN_TLBPR, SEM_FN_NAME (frvbf,tlbpr) },
b34f6357
DB
28697 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28698 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28699 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28700 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28701 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28702 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28703 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28704 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28705 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28706 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28707 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28708 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28709 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28710 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28711 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28712 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28713 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28714 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28715 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28716 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28717 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28718 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28719 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28720 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28721 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28722 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28723 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28724 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28725 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28726 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28727 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28728 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28729 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28730 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28731 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28732 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28733 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28734 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28735 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28736 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28737 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28738 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28739 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28740 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28741 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28742 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28743 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28744 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28745 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28746 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28747 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28748 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28749 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28750 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28751 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28752 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28753 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28754 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28755 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28756 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28757 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28758 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28759 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28760 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28761 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28762 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28763 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28764 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28765 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28766 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28767 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28768 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28769 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28770 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28771 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28772 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28773 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28774 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28775 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28776 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28777 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28778 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28779 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28780 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28781 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28782 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28783 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28784 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28785 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28786 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28787 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28788 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28789 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28790 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28791 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28792 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28793 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28794 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28795 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28796 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28797 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28798 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28799 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28800 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28801 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28802 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28803 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28804 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28805 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28806 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28807 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28808 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28809 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28810 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28811 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28812 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28813 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28814 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28815 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28816 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28817 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28818 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28819 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28820 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28821 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28822 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28823 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28824 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28825 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28826 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28827 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28828 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28829 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28830 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28831 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28832 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28833 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28834 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28835 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28836 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28837 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28838 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28839 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28840 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28841 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28842 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28843 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
676a64f4
RS
28844 { FRVBF_INSN_MQLCLRHS, SEM_FN_NAME (frvbf,mqlclrhs) },
28845 { FRVBF_INSN_MQLMTHS, SEM_FN_NAME (frvbf,mqlmths) },
28846 { FRVBF_INSN_MQSLLHI, SEM_FN_NAME (frvbf,mqsllhi) },
28847 { FRVBF_INSN_MQSRAHI, SEM_FN_NAME (frvbf,mqsrahi) },
b34f6357
DB
28848 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28849 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28850 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28851 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28852 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28853 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28854 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28855 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28856 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28857 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28858 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28859 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28860 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28861 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28862 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28863 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28864 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28865 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28866 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28867 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28868 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28869 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28870 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28871 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28872 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28873 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28874 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28875 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28876 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28877 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28878 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28879 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28880 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28881 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28882 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28883 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28884 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28885 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28886 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28887 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28888 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28889 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28890 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28891 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28892 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28893 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28894 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28895 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28896 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28897 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28898 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28899 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28900 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28901 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28902 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28903 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28904 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
d03ea14f
DB
28905 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28906 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28907 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
b34f6357
DB
28908 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28909 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28910 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28911 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28912 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28913 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28914 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28915 { 0, 0 }
28916};
28917
28918/* Add the semantic fns to IDESC_TABLE. */
28919
28920void
28921SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28922{
28923 IDESC *idesc_table = CPU_IDESC (current_cpu);
28924 const struct sem_fn_desc *sf;
28925 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28926
28927 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28928 {
28929 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28930 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28931 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28932#if FAST_P
28933 if (valid_p)
28934 idesc_table[sf->index].sem_fast = sf->fn;
28935 else
28936 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28937#else
28938 if (valid_p)
28939 idesc_table[sf->index].sem_full = sf->fn;
28940 else
28941 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28942#endif
28943 }
28944}
28945