New simulator for Fujitsu frv contributed by Red Hat.
[deliverable/binutils-gdb.git] / sim / frv / sem.c
1 /* Simulator instruction semantics for frvbf.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of the GNU simulators.
8
9 This program 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 2, or (at your option)
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23 */
24
25 #define WANT_CPU frvbf
26 #define WANT_CPU_FRVBF
27
28 #include "sim-main.h"
29 #include "cgen-mem.h"
30 #include "cgen-ops.h"
31
32 #undef GET_ATTR
33 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
34 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
35 #else
36 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_/**/attr)
37 #endif
38
39 /* This is used so that we can compile two copies of the semantic code,
40 one with full feature support and one without that runs fast(er).
41 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
42 #if FAST_P
43 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
44 #undef TRACE_RESULT
45 #define TRACE_RESULT(cpu, abuf, name, type, val)
46 #else
47 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
48 #endif
49
50 /* x-invalid: --invalid-- */
51
52 static SEM_PC
53 SEM_FN_NAME (frvbf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
54 {
55 #define FLD(f) abuf->fields.fmt_empty.f
56 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
57 int UNUSED written = 0;
58 IADDR UNUSED pc = abuf->addr;
59 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
60
61 {
62 /* Update the recorded pc in the cpu state struct.
63 Only necessary for WITH_SCACHE case, but to avoid the
64 conditional compilation .... */
65 SET_H_PC (pc);
66 /* Virtual insns have zero size. Overwrite vpc with address of next insn
67 using the default-insn-bitsize spec. When executing insns in parallel
68 we may want to queue the fault and continue execution. */
69 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
70 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
71 }
72
73 return vpc;
74 #undef FLD
75 }
76
77 /* x-after: --after-- */
78
79 static SEM_PC
80 SEM_FN_NAME (frvbf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
81 {
82 #define FLD(f) abuf->fields.fmt_empty.f
83 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
84 int UNUSED written = 0;
85 IADDR UNUSED pc = abuf->addr;
86 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
87
88 {
89 #if WITH_SCACHE_PBB_FRVBF
90 frvbf_pbb_after (current_cpu, sem_arg);
91 #endif
92 }
93
94 return vpc;
95 #undef FLD
96 }
97
98 /* x-before: --before-- */
99
100 static SEM_PC
101 SEM_FN_NAME (frvbf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
102 {
103 #define FLD(f) abuf->fields.fmt_empty.f
104 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
105 int UNUSED written = 0;
106 IADDR UNUSED pc = abuf->addr;
107 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
108
109 {
110 #if WITH_SCACHE_PBB_FRVBF
111 frvbf_pbb_before (current_cpu, sem_arg);
112 #endif
113 }
114
115 return vpc;
116 #undef FLD
117 }
118
119 /* x-cti-chain: --cti-chain-- */
120
121 static SEM_PC
122 SEM_FN_NAME (frvbf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
123 {
124 #define FLD(f) abuf->fields.fmt_empty.f
125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
126 int UNUSED written = 0;
127 IADDR UNUSED pc = abuf->addr;
128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
129
130 {
131 #if WITH_SCACHE_PBB_FRVBF
132 #ifdef DEFINE_SWITCH
133 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
134 pbb_br_type, pbb_br_npc);
135 BREAK (sem);
136 #else
137 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
138 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
139 CPU_PBB_BR_TYPE (current_cpu),
140 CPU_PBB_BR_NPC (current_cpu));
141 #endif
142 #endif
143 }
144
145 return vpc;
146 #undef FLD
147 }
148
149 /* x-chain: --chain-- */
150
151 static SEM_PC
152 SEM_FN_NAME (frvbf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
153 {
154 #define FLD(f) abuf->fields.fmt_empty.f
155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
156 int UNUSED written = 0;
157 IADDR UNUSED pc = abuf->addr;
158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
159
160 {
161 #if WITH_SCACHE_PBB_FRVBF
162 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
163 #ifdef DEFINE_SWITCH
164 BREAK (sem);
165 #endif
166 #endif
167 }
168
169 return vpc;
170 #undef FLD
171 }
172
173 /* x-begin: --begin-- */
174
175 static SEM_PC
176 SEM_FN_NAME (frvbf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
177 {
178 #define FLD(f) abuf->fields.fmt_empty.f
179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
180 int UNUSED written = 0;
181 IADDR UNUSED pc = abuf->addr;
182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
183
184 {
185 #if WITH_SCACHE_PBB_FRVBF
186 #if defined DEFINE_SWITCH || defined FAST_P
187 /* In the switch case FAST_P is a constant, allowing several optimizations
188 in any called inline functions. */
189 vpc = frvbf_pbb_begin (current_cpu, FAST_P);
190 #else
191 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
192 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
193 #else
194 vpc = frvbf_pbb_begin (current_cpu, 0);
195 #endif
196 #endif
197 #endif
198 }
199
200 return vpc;
201 #undef FLD
202 }
203
204 /* add: add$pack $GRi,$GRj,$GRk */
205
206 static SEM_PC
207 SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
208 {
209 #define FLD(f) abuf->fields.sfmt_addcc.f
210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
211 int UNUSED written = 0;
212 IADDR UNUSED pc = abuf->addr;
213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
214
215 {
216 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
217 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
218 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
219 }
220
221 return vpc;
222 #undef FLD
223 }
224
225 /* sub: sub$pack $GRi,$GRj,$GRk */
226
227 static SEM_PC
228 SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
229 {
230 #define FLD(f) abuf->fields.sfmt_addcc.f
231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
232 int UNUSED written = 0;
233 IADDR UNUSED pc = abuf->addr;
234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
235
236 {
237 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
238 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
239 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
240 }
241
242 return vpc;
243 #undef FLD
244 }
245
246 /* and: and$pack $GRi,$GRj,$GRk */
247
248 static SEM_PC
249 SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
250 {
251 #define FLD(f) abuf->fields.sfmt_addcc.f
252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
253 int UNUSED written = 0;
254 IADDR UNUSED pc = abuf->addr;
255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
256
257 {
258 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
259 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
260 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
261 }
262
263 return vpc;
264 #undef FLD
265 }
266
267 /* or: or$pack $GRi,$GRj,$GRk */
268
269 static SEM_PC
270 SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
271 {
272 #define FLD(f) abuf->fields.sfmt_addcc.f
273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
274 int UNUSED written = 0;
275 IADDR UNUSED pc = abuf->addr;
276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
277
278 {
279 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
280 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
281 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
282 }
283
284 return vpc;
285 #undef FLD
286 }
287
288 /* xor: xor$pack $GRi,$GRj,$GRk */
289
290 static SEM_PC
291 SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
292 {
293 #define FLD(f) abuf->fields.sfmt_addcc.f
294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
295 int UNUSED written = 0;
296 IADDR UNUSED pc = abuf->addr;
297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
298
299 {
300 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
301 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
302 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
303 }
304
305 return vpc;
306 #undef FLD
307 }
308
309 /* not: not$pack $GRj,$GRk */
310
311 static SEM_PC
312 SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
313 {
314 #define FLD(f) abuf->fields.sfmt_addcc.f
315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
316 int UNUSED written = 0;
317 IADDR UNUSED pc = abuf->addr;
318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
319
320 {
321 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
322 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
323 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
324 }
325
326 return vpc;
327 #undef FLD
328 }
329
330 /* sdiv: sdiv$pack $GRi,$GRj,$GRk */
331
332 static SEM_PC
333 SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
334 {
335 #define FLD(f) abuf->fields.sfmt_addcc.f
336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
337 int UNUSED written = 0;
338 IADDR UNUSED pc = abuf->addr;
339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
340
341 {
342 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
343 ; /*clobber*/
344 }
345
346 return vpc;
347 #undef FLD
348 }
349
350 /* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
351
352 static SEM_PC
353 SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
354 {
355 #define FLD(f) abuf->fields.sfmt_addcc.f
356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
357 int UNUSED written = 0;
358 IADDR UNUSED pc = abuf->addr;
359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
360
361 {
362 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
363 ; /*clobber*/
364 }
365
366 return vpc;
367 #undef FLD
368 }
369
370 /* udiv: udiv$pack $GRi,$GRj,$GRk */
371
372 static SEM_PC
373 SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
374 {
375 #define FLD(f) abuf->fields.sfmt_addcc.f
376 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
377 int UNUSED written = 0;
378 IADDR UNUSED pc = abuf->addr;
379 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
380
381 {
382 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
383 ; /*clobber*/
384 }
385
386 return vpc;
387 #undef FLD
388 }
389
390 /* nudiv: nudiv$pack $GRi,$GRj,$GRk */
391
392 static SEM_PC
393 SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
394 {
395 #define FLD(f) abuf->fields.sfmt_addcc.f
396 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
397 int UNUSED written = 0;
398 IADDR UNUSED pc = abuf->addr;
399 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
400
401 {
402 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
403 ; /*clobber*/
404 }
405
406 return vpc;
407 #undef FLD
408 }
409
410 /* smul: smul$pack $GRi,$GRj,$GRdoublek */
411
412 static SEM_PC
413 SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
414 {
415 #define FLD(f) abuf->fields.sfmt_smulcc.f
416 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
417 int UNUSED written = 0;
418 IADDR UNUSED pc = abuf->addr;
419 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
420
421 {
422 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
423 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
424 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
425 }
426
427 return vpc;
428 #undef FLD
429 }
430
431 /* umul: umul$pack $GRi,$GRj,$GRdoublek */
432
433 static SEM_PC
434 SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
435 {
436 #define FLD(f) abuf->fields.sfmt_smulcc.f
437 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
438 int UNUSED written = 0;
439 IADDR UNUSED pc = abuf->addr;
440 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
441
442 {
443 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
444 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
445 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
446 }
447
448 return vpc;
449 #undef FLD
450 }
451
452 /* sll: sll$pack $GRi,$GRj,$GRk */
453
454 static SEM_PC
455 SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
456 {
457 #define FLD(f) abuf->fields.sfmt_addcc.f
458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
459 int UNUSED written = 0;
460 IADDR UNUSED pc = abuf->addr;
461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
462
463 {
464 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
465 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
466 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
467 }
468
469 return vpc;
470 #undef FLD
471 }
472
473 /* srl: srl$pack $GRi,$GRj,$GRk */
474
475 static SEM_PC
476 SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
477 {
478 #define FLD(f) abuf->fields.sfmt_addcc.f
479 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
480 int UNUSED written = 0;
481 IADDR UNUSED pc = abuf->addr;
482 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
483
484 {
485 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
486 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
488 }
489
490 return vpc;
491 #undef FLD
492 }
493
494 /* sra: sra$pack $GRi,$GRj,$GRk */
495
496 static SEM_PC
497 SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
498 {
499 #define FLD(f) abuf->fields.sfmt_addcc.f
500 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
501 int UNUSED written = 0;
502 IADDR UNUSED pc = abuf->addr;
503 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
504
505 {
506 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
507 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
508 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
509 }
510
511 return vpc;
512 #undef FLD
513 }
514
515 /* scan: scan$pack $GRi,$GRj,$GRk */
516
517 static SEM_PC
518 SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
519 {
520 #define FLD(f) abuf->fields.sfmt_addcc.f
521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
522 int UNUSED written = 0;
523 IADDR UNUSED pc = abuf->addr;
524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
525
526 {
527 SI tmp_tmp1;
528 SI tmp_tmp2;
529 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
530 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
531 {
532 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
533 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
534 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
535 }
536 }
537
538 return vpc;
539 #undef FLD
540 }
541
542 /* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
543
544 static SEM_PC
545 SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
546 {
547 #define FLD(f) abuf->fields.sfmt_cswap.f
548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
549 int UNUSED written = 0;
550 IADDR UNUSED pc = abuf->addr;
551 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
552
553 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
554 {
555 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
556 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
557 written |= (1 << 4);
558 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
559 }
560 }
561
562 abuf->written = written;
563 return vpc;
564 #undef FLD
565 }
566
567 /* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
568
569 static SEM_PC
570 SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
571 {
572 #define FLD(f) abuf->fields.sfmt_cswap.f
573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
574 int UNUSED written = 0;
575 IADDR UNUSED pc = abuf->addr;
576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
577
578 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
579 {
580 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
581 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
582 written |= (1 << 4);
583 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
584 }
585 }
586
587 abuf->written = written;
588 return vpc;
589 #undef FLD
590 }
591
592 /* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
593
594 static SEM_PC
595 SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
596 {
597 #define FLD(f) abuf->fields.sfmt_cswap.f
598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
599 int UNUSED written = 0;
600 IADDR UNUSED pc = abuf->addr;
601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
602
603 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
604 {
605 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
606 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
607 written |= (1 << 4);
608 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
609 }
610 }
611
612 abuf->written = written;
613 return vpc;
614 #undef FLD
615 }
616
617 /* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
618
619 static SEM_PC
620 SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
621 {
622 #define FLD(f) abuf->fields.sfmt_cswap.f
623 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
624 int UNUSED written = 0;
625 IADDR UNUSED pc = abuf->addr;
626 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
627
628 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
629 {
630 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
631 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
632 written |= (1 << 4);
633 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
634 }
635 }
636
637 abuf->written = written;
638 return vpc;
639 #undef FLD
640 }
641
642 /* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
643
644 static SEM_PC
645 SEM_FN_NAME (frvbf,cxor) (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
653 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
654 {
655 SI opval = XORSI (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 /* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
668
669 static SEM_PC
670 SEM_FN_NAME (frvbf,cnot) (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
678 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
679 {
680 SI opval = INVSI (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 << 3);
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 /* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
693
694 static SEM_PC
695 SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
696 {
697 #define FLD(f) abuf->fields.sfmt_clddu.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
703 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
704 {
705 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
706 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
707 written |= (1 << 4);
708 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
709 }
710 }
711
712 abuf->written = written;
713 return vpc;
714 #undef FLD
715 }
716
717 /* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
718
719 static SEM_PC
720 SEM_FN_NAME (frvbf,csdiv) (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
728 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
729 {
730 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
731 ; /*clobber*/
732 }
733 }
734
735 abuf->written = written;
736 return vpc;
737 #undef FLD
738 }
739
740 /* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
741
742 static SEM_PC
743 SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
744 {
745 #define FLD(f) abuf->fields.sfmt_cswap.f
746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
747 int UNUSED written = 0;
748 IADDR UNUSED pc = abuf->addr;
749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
750
751 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
752 {
753 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
754 ; /*clobber*/
755 }
756 }
757
758 abuf->written = written;
759 return vpc;
760 #undef FLD
761 }
762
763 /* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
764
765 static SEM_PC
766 SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
767 {
768 #define FLD(f) abuf->fields.sfmt_cswap.f
769 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
770 int UNUSED written = 0;
771 IADDR UNUSED pc = abuf->addr;
772 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
773
774 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
775 {
776 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
777 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
778 written |= (1 << 4);
779 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
780 }
781 }
782
783 abuf->written = written;
784 return vpc;
785 #undef FLD
786 }
787
788 /* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
789
790 static SEM_PC
791 SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
792 {
793 #define FLD(f) abuf->fields.sfmt_cswap.f
794 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
795 int UNUSED written = 0;
796 IADDR UNUSED pc = abuf->addr;
797 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
798
799 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
800 {
801 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
802 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
803 written |= (1 << 4);
804 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
805 }
806 }
807
808 abuf->written = written;
809 return vpc;
810 #undef FLD
811 }
812
813 /* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
814
815 static SEM_PC
816 SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
817 {
818 #define FLD(f) abuf->fields.sfmt_cswap.f
819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
820 int UNUSED written = 0;
821 IADDR UNUSED pc = abuf->addr;
822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
823
824 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
825 {
826 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
827 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
828 written |= (1 << 4);
829 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
830 }
831 }
832
833 abuf->written = written;
834 return vpc;
835 #undef FLD
836 }
837
838 /* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
839
840 static SEM_PC
841 SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
842 {
843 #define FLD(f) abuf->fields.sfmt_cswap.f
844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
845 int UNUSED written = 0;
846 IADDR UNUSED pc = abuf->addr;
847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
848
849 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
850 {
851 SI tmp_tmp1;
852 SI tmp_tmp2;
853 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
854 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
855 {
856 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
857 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
858 written |= (1 << 4);
859 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
860 }
861 }
862 }
863
864 abuf->written = written;
865 return vpc;
866 #undef FLD
867 }
868
869 /* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
870
871 static SEM_PC
872 SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
873 {
874 #define FLD(f) abuf->fields.sfmt_addcc.f
875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
876 int UNUSED written = 0;
877 IADDR UNUSED pc = abuf->addr;
878 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
879
880 {
881 BI tmp_tmp;
882 QI tmp_cc;
883 SI tmp_result;
884 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
885 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
886 if (EQBI (tmp_tmp, 0)) {
887 tmp_cc = ANDQI (tmp_cc, 13);
888 } else {
889 tmp_cc = ORQI (tmp_cc, 2);
890 }
891 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
892 if (EQBI (tmp_tmp, 0)) {
893 tmp_cc = ANDQI (tmp_cc, 14);
894 } else {
895 tmp_cc = ORQI (tmp_cc, 1);
896 }
897 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
898 if (EQSI (tmp_result, 0)) {
899 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
900 } else {
901 if (LTSI (tmp_result, 0)) {
902 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
903 } else {
904 tmp_cc = ANDQI (tmp_cc, 3);
905 }
906 }
907 {
908 SI opval = tmp_result;
909 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
910 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
911 }
912 {
913 UQI opval = tmp_cc;
914 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
915 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
916 }
917 }
918
919 return vpc;
920 #undef FLD
921 }
922
923 /* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
924
925 static SEM_PC
926 SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
927 {
928 #define FLD(f) abuf->fields.sfmt_addcc.f
929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
930 int UNUSED written = 0;
931 IADDR UNUSED pc = abuf->addr;
932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
933
934 {
935 BI tmp_tmp;
936 QI tmp_cc;
937 SI tmp_result;
938 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
939 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
940 if (EQBI (tmp_tmp, 0)) {
941 tmp_cc = ANDQI (tmp_cc, 13);
942 } else {
943 tmp_cc = ORQI (tmp_cc, 2);
944 }
945 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
946 if (EQBI (tmp_tmp, 0)) {
947 tmp_cc = ANDQI (tmp_cc, 14);
948 } else {
949 tmp_cc = ORQI (tmp_cc, 1);
950 }
951 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
952 if (EQSI (tmp_result, 0)) {
953 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
954 } else {
955 if (LTSI (tmp_result, 0)) {
956 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
957 } else {
958 tmp_cc = ANDQI (tmp_cc, 3);
959 }
960 }
961 {
962 SI opval = tmp_result;
963 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
965 }
966 {
967 UQI opval = tmp_cc;
968 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
969 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
970 }
971 }
972
973 return vpc;
974 #undef FLD
975 }
976
977 /* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
978
979 static SEM_PC
980 SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
981 {
982 #define FLD(f) abuf->fields.sfmt_addcc.f
983 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
984 int UNUSED written = 0;
985 IADDR UNUSED pc = abuf->addr;
986 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
987
988 {
989 SI tmp_tmp;
990 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
991 {
992 SI opval = tmp_tmp;
993 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
994 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
995 }
996 if (EQSI (tmp_tmp, 0)) {
997 {
998 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
999 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1000 written |= (1 << 4);
1001 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1002 }
1003 } else {
1004 if (LTSI (tmp_tmp, 0)) {
1005 {
1006 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1007 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1008 written |= (1 << 4);
1009 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1010 }
1011 } else {
1012 {
1013 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1014 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1015 written |= (1 << 4);
1016 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1017 }
1018 }
1019 }
1020 }
1021
1022 abuf->written = written;
1023 return vpc;
1024 #undef FLD
1025 }
1026
1027 /* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1028
1029 static SEM_PC
1030 SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1031 {
1032 #define FLD(f) abuf->fields.sfmt_addcc.f
1033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1034 int UNUSED written = 0;
1035 IADDR UNUSED pc = abuf->addr;
1036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1037
1038 {
1039 SI tmp_tmp;
1040 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1041 {
1042 SI opval = tmp_tmp;
1043 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1044 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1045 }
1046 if (EQSI (tmp_tmp, 0)) {
1047 {
1048 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1049 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1050 written |= (1 << 4);
1051 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1052 }
1053 } else {
1054 if (LTSI (tmp_tmp, 0)) {
1055 {
1056 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1057 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1058 written |= (1 << 4);
1059 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1060 }
1061 } else {
1062 {
1063 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1064 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1065 written |= (1 << 4);
1066 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1067 }
1068 }
1069 }
1070 }
1071
1072 abuf->written = written;
1073 return vpc;
1074 #undef FLD
1075 }
1076
1077 /* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1078
1079 static SEM_PC
1080 SEM_FN_NAME (frvbf,xorcc) (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 = XORSI (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 }
1096 if (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 {
1104 if (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 /* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1128
1129 static SEM_PC
1130 SEM_FN_NAME (frvbf,sllcc) (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_shift;
1140 SI tmp_tmp;
1141 QI tmp_cc;
1142 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1143 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)]));
1144 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1145 {
1146 SI opval = tmp_tmp;
1147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1148 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1149 }
1150 if (EQSI (tmp_tmp, 0)) {
1151 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1152 } else {
1153 if (LTSI (tmp_tmp, 0)) {
1154 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1155 } else {
1156 tmp_cc = ANDQI (tmp_cc, 3);
1157 }
1158 }
1159 {
1160 UQI opval = tmp_cc;
1161 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1162 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1163 }
1164 }
1165
1166 return vpc;
1167 #undef FLD
1168 }
1169
1170 /* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1171
1172 static SEM_PC
1173 SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1174 {
1175 #define FLD(f) abuf->fields.sfmt_addcc.f
1176 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1177 int UNUSED written = 0;
1178 IADDR UNUSED pc = abuf->addr;
1179 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1180
1181 {
1182 SI tmp_shift;
1183 SI tmp_tmp;
1184 QI tmp_cc;
1185 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1186 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)]));
1187 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1188 {
1189 SI opval = tmp_tmp;
1190 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1191 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1192 }
1193 if (EQSI (tmp_tmp, 0)) {
1194 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1195 } else {
1196 if (LTSI (tmp_tmp, 0)) {
1197 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1198 } else {
1199 tmp_cc = ANDQI (tmp_cc, 3);
1200 }
1201 }
1202 {
1203 UQI opval = tmp_cc;
1204 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1205 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1206 }
1207 }
1208
1209 return vpc;
1210 #undef FLD
1211 }
1212
1213 /* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1214
1215 static SEM_PC
1216 SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1217 {
1218 #define FLD(f) abuf->fields.sfmt_addcc.f
1219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1220 int UNUSED written = 0;
1221 IADDR UNUSED pc = abuf->addr;
1222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1223
1224 {
1225 SI tmp_shift;
1226 SI tmp_tmp;
1227 QI tmp_cc;
1228 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1229 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)]));
1230 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1231 {
1232 SI opval = tmp_tmp;
1233 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1234 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1235 }
1236 if (EQSI (tmp_tmp, 0)) {
1237 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1238 } else {
1239 if (LTSI (tmp_tmp, 0)) {
1240 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1241 } else {
1242 tmp_cc = ANDQI (tmp_cc, 3);
1243 }
1244 }
1245 {
1246 UQI opval = tmp_cc;
1247 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1248 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1249 }
1250 }
1251
1252 return vpc;
1253 #undef FLD
1254 }
1255
1256 /* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1257
1258 static SEM_PC
1259 SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1260 {
1261 #define FLD(f) abuf->fields.sfmt_smulcc.f
1262 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1263 int UNUSED written = 0;
1264 IADDR UNUSED pc = abuf->addr;
1265 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1266
1267 {
1268 DI tmp_tmp;
1269 QI tmp_cc;
1270 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1271 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1272 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1273 tmp_cc = ANDQI (tmp_cc, 7);
1274 } else {
1275 tmp_cc = ORQI (tmp_cc, 8);
1276 }
1277 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1278 tmp_cc = ANDQI (tmp_cc, 11);
1279 } else {
1280 tmp_cc = ORQI (tmp_cc, 4);
1281 }
1282 {
1283 DI opval = tmp_tmp;
1284 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1285 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1286 }
1287 {
1288 UQI opval = tmp_cc;
1289 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1290 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1291 }
1292 }
1293
1294 return vpc;
1295 #undef FLD
1296 }
1297
1298 /* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1299
1300 static SEM_PC
1301 SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1302 {
1303 #define FLD(f) abuf->fields.sfmt_smulcc.f
1304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1305 int UNUSED written = 0;
1306 IADDR UNUSED pc = abuf->addr;
1307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1308
1309 {
1310 DI tmp_tmp;
1311 QI tmp_cc;
1312 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1313 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1314 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1315 tmp_cc = ANDQI (tmp_cc, 7);
1316 } else {
1317 tmp_cc = ORQI (tmp_cc, 8);
1318 }
1319 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1320 tmp_cc = ANDQI (tmp_cc, 11);
1321 } else {
1322 tmp_cc = ORQI (tmp_cc, 4);
1323 }
1324 {
1325 DI opval = tmp_tmp;
1326 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1327 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1328 }
1329 {
1330 UQI opval = tmp_cc;
1331 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1332 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1333 }
1334 }
1335
1336 return vpc;
1337 #undef FLD
1338 }
1339
1340 /* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1341
1342 static SEM_PC
1343 SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1344 {
1345 #define FLD(f) abuf->fields.sfmt_caddcc.f
1346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1347 int UNUSED written = 0;
1348 IADDR UNUSED pc = abuf->addr;
1349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1350
1351 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1352 {
1353 BI tmp_tmp;
1354 QI tmp_cc;
1355 SI tmp_result;
1356 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1357 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1358 if (EQBI (tmp_tmp, 0)) {
1359 tmp_cc = ANDQI (tmp_cc, 13);
1360 } else {
1361 tmp_cc = ORQI (tmp_cc, 2);
1362 }
1363 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1364 if (EQBI (tmp_tmp, 0)) {
1365 tmp_cc = ANDQI (tmp_cc, 14);
1366 } else {
1367 tmp_cc = ORQI (tmp_cc, 1);
1368 }
1369 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1370 if (EQSI (tmp_result, 0)) {
1371 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1372 } else {
1373 if (LTSI (tmp_result, 0)) {
1374 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1375 } else {
1376 tmp_cc = ANDQI (tmp_cc, 3);
1377 }
1378 }
1379 {
1380 SI opval = tmp_result;
1381 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1382 written |= (1 << 6);
1383 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1384 }
1385 {
1386 UQI opval = tmp_cc;
1387 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1388 written |= (1 << 7);
1389 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1390 }
1391 }
1392 }
1393
1394 abuf->written = written;
1395 return vpc;
1396 #undef FLD
1397 }
1398
1399 /* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1400
1401 static SEM_PC
1402 SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1403 {
1404 #define FLD(f) abuf->fields.sfmt_caddcc.f
1405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1406 int UNUSED written = 0;
1407 IADDR UNUSED pc = abuf->addr;
1408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1409
1410 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1411 {
1412 BI tmp_tmp;
1413 QI tmp_cc;
1414 SI tmp_result;
1415 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1416 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1417 if (EQBI (tmp_tmp, 0)) {
1418 tmp_cc = ANDQI (tmp_cc, 13);
1419 } else {
1420 tmp_cc = ORQI (tmp_cc, 2);
1421 }
1422 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1423 if (EQBI (tmp_tmp, 0)) {
1424 tmp_cc = ANDQI (tmp_cc, 14);
1425 } else {
1426 tmp_cc = ORQI (tmp_cc, 1);
1427 }
1428 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1429 if (EQSI (tmp_result, 0)) {
1430 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1431 } else {
1432 if (LTSI (tmp_result, 0)) {
1433 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1434 } else {
1435 tmp_cc = ANDQI (tmp_cc, 3);
1436 }
1437 }
1438 {
1439 SI opval = tmp_result;
1440 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1441 written |= (1 << 6);
1442 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1443 }
1444 {
1445 UQI opval = tmp_cc;
1446 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1447 written |= (1 << 7);
1448 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1449 }
1450 }
1451 }
1452
1453 abuf->written = written;
1454 return vpc;
1455 #undef FLD
1456 }
1457
1458 /* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1459
1460 static SEM_PC
1461 SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1462 {
1463 #define FLD(f) abuf->fields.sfmt_csmulcc.f
1464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1465 int UNUSED written = 0;
1466 IADDR UNUSED pc = abuf->addr;
1467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1468
1469 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1470 {
1471 DI tmp_tmp;
1472 QI tmp_cc;
1473 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1474 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1475 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1476 tmp_cc = ANDQI (tmp_cc, 7);
1477 } else {
1478 tmp_cc = ORQI (tmp_cc, 8);
1479 }
1480 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1481 tmp_cc = ANDQI (tmp_cc, 11);
1482 } else {
1483 tmp_cc = ORQI (tmp_cc, 4);
1484 }
1485 {
1486 DI opval = tmp_tmp;
1487 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1488 written |= (1 << 6);
1489 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1490 }
1491 {
1492 UQI opval = tmp_cc;
1493 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1494 written |= (1 << 7);
1495 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1496 }
1497 }
1498 }
1499
1500 abuf->written = written;
1501 return vpc;
1502 #undef FLD
1503 }
1504
1505 /* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1506
1507 static SEM_PC
1508 SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1509 {
1510 #define FLD(f) abuf->fields.sfmt_caddcc.f
1511 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1512 int UNUSED written = 0;
1513 IADDR UNUSED pc = abuf->addr;
1514 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1515
1516 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1517 {
1518 SI tmp_tmp;
1519 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1520 {
1521 SI opval = tmp_tmp;
1522 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1523 written |= (1 << 6);
1524 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1525 }
1526 if (EQSI (tmp_tmp, 0)) {
1527 {
1528 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1529 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1530 written |= (1 << 7);
1531 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1532 }
1533 } else {
1534 if (LTSI (tmp_tmp, 0)) {
1535 {
1536 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1537 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1538 written |= (1 << 7);
1539 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1540 }
1541 } else {
1542 {
1543 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1544 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1545 written |= (1 << 7);
1546 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1547 }
1548 }
1549 }
1550 }
1551 }
1552
1553 abuf->written = written;
1554 return vpc;
1555 #undef FLD
1556 }
1557
1558 /* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1559
1560 static SEM_PC
1561 SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1562 {
1563 #define FLD(f) abuf->fields.sfmt_caddcc.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
1569 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1570 {
1571 SI tmp_tmp;
1572 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1573 {
1574 SI opval = tmp_tmp;
1575 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1576 written |= (1 << 6);
1577 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1578 }
1579 if (EQSI (tmp_tmp, 0)) {
1580 {
1581 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1582 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1583 written |= (1 << 7);
1584 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1585 }
1586 } else {
1587 if (LTSI (tmp_tmp, 0)) {
1588 {
1589 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1590 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1591 written |= (1 << 7);
1592 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1593 }
1594 } else {
1595 {
1596 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1597 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1598 written |= (1 << 7);
1599 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1600 }
1601 }
1602 }
1603 }
1604 }
1605
1606 abuf->written = written;
1607 return vpc;
1608 #undef FLD
1609 }
1610
1611 /* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1612
1613 static SEM_PC
1614 SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1615 {
1616 #define FLD(f) abuf->fields.sfmt_caddcc.f
1617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1618 int UNUSED written = 0;
1619 IADDR UNUSED pc = abuf->addr;
1620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1621
1622 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1623 {
1624 SI tmp_tmp;
1625 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1626 {
1627 SI opval = tmp_tmp;
1628 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1629 written |= (1 << 6);
1630 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1631 }
1632 if (EQSI (tmp_tmp, 0)) {
1633 {
1634 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1635 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1636 written |= (1 << 7);
1637 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1638 }
1639 } else {
1640 if (LTSI (tmp_tmp, 0)) {
1641 {
1642 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1643 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1644 written |= (1 << 7);
1645 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1646 }
1647 } else {
1648 {
1649 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1650 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1651 written |= (1 << 7);
1652 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1653 }
1654 }
1655 }
1656 }
1657 }
1658
1659 abuf->written = written;
1660 return vpc;
1661 #undef FLD
1662 }
1663
1664 /* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1665
1666 static SEM_PC
1667 SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1668 {
1669 #define FLD(f) abuf->fields.sfmt_caddcc.f
1670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1671 int UNUSED written = 0;
1672 IADDR UNUSED pc = abuf->addr;
1673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1674
1675 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1676 {
1677 SI tmp_shift;
1678 SI tmp_tmp;
1679 QI tmp_cc;
1680 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1681 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1682 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1683 {
1684 SI opval = tmp_tmp;
1685 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1686 written |= (1 << 6);
1687 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1688 }
1689 if (EQSI (tmp_tmp, 0)) {
1690 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1691 } else {
1692 if (LTSI (tmp_tmp, 0)) {
1693 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1694 } else {
1695 tmp_cc = ANDQI (tmp_cc, 3);
1696 }
1697 }
1698 {
1699 UQI opval = tmp_cc;
1700 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1701 written |= (1 << 7);
1702 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1703 }
1704 }
1705 }
1706
1707 abuf->written = written;
1708 return vpc;
1709 #undef FLD
1710 }
1711
1712 /* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1713
1714 static SEM_PC
1715 SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1716 {
1717 #define FLD(f) abuf->fields.sfmt_caddcc.f
1718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1719 int UNUSED written = 0;
1720 IADDR UNUSED pc = abuf->addr;
1721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1722
1723 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1724 {
1725 SI tmp_shift;
1726 SI tmp_tmp;
1727 QI tmp_cc;
1728 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1729 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1730 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1731 {
1732 SI opval = tmp_tmp;
1733 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1734 written |= (1 << 6);
1735 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1736 }
1737 if (EQSI (tmp_tmp, 0)) {
1738 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1739 } else {
1740 if (LTSI (tmp_tmp, 0)) {
1741 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1742 } else {
1743 tmp_cc = ANDQI (tmp_cc, 3);
1744 }
1745 }
1746 {
1747 UQI opval = tmp_cc;
1748 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1749 written |= (1 << 7);
1750 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1751 }
1752 }
1753 }
1754
1755 abuf->written = written;
1756 return vpc;
1757 #undef FLD
1758 }
1759
1760 /* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1761
1762 static SEM_PC
1763 SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1764 {
1765 #define FLD(f) abuf->fields.sfmt_caddcc.f
1766 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1767 int UNUSED written = 0;
1768 IADDR UNUSED pc = abuf->addr;
1769 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1770
1771 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1772 {
1773 SI tmp_shift;
1774 SI tmp_tmp;
1775 QI tmp_cc;
1776 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1777 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1778 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1779 {
1780 SI opval = tmp_tmp;
1781 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1782 written |= (1 << 6);
1783 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1784 }
1785 if (EQSI (tmp_tmp, 0)) {
1786 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1787 } else {
1788 if (LTSI (tmp_tmp, 0)) {
1789 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1790 } else {
1791 tmp_cc = ANDQI (tmp_cc, 3);
1792 }
1793 }
1794 {
1795 UQI opval = tmp_cc;
1796 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1797 written |= (1 << 7);
1798 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1799 }
1800 }
1801 }
1802
1803 abuf->written = written;
1804 return vpc;
1805 #undef FLD
1806 }
1807
1808 /* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1809
1810 static SEM_PC
1811 SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1812 {
1813 #define FLD(f) abuf->fields.sfmt_addcc.f
1814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1815 int UNUSED written = 0;
1816 IADDR UNUSED pc = abuf->addr;
1817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1818
1819 {
1820 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)));
1821 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1822 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1823 }
1824
1825 return vpc;
1826 #undef FLD
1827 }
1828
1829 /* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1830
1831 static SEM_PC
1832 SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1833 {
1834 #define FLD(f) abuf->fields.sfmt_addcc.f
1835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1836 int UNUSED written = 0;
1837 IADDR UNUSED pc = abuf->addr;
1838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1839
1840 {
1841 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)));
1842 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1843 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1844 }
1845
1846 return vpc;
1847 #undef FLD
1848 }
1849
1850 /* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1851
1852 static SEM_PC
1853 SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1854 {
1855 #define FLD(f) abuf->fields.sfmt_addcc.f
1856 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1857 int UNUSED written = 0;
1858 IADDR UNUSED pc = abuf->addr;
1859 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1860
1861 {
1862 SI tmp_tmp;
1863 QI tmp_cc;
1864 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1865 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1866 if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1867 tmp_cc = ANDQI (tmp_cc, 13);
1868 } else {
1869 tmp_cc = ORQI (tmp_cc, 2);
1870 }
1871 if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1872 tmp_cc = ANDQI (tmp_cc, 14);
1873 } else {
1874 tmp_cc = ORQI (tmp_cc, 1);
1875 }
1876 if (EQSI (tmp_tmp, 0)) {
1877 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1878 } else {
1879 if (LTSI (tmp_tmp, 0)) {
1880 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1881 } else {
1882 tmp_cc = ANDQI (tmp_cc, 3);
1883 }
1884 }
1885 {
1886 SI opval = tmp_tmp;
1887 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1888 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1889 }
1890 {
1891 UQI opval = tmp_cc;
1892 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1893 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1894 }
1895 }
1896
1897 return vpc;
1898 #undef FLD
1899 }
1900
1901 /* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1902
1903 static SEM_PC
1904 SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1905 {
1906 #define FLD(f) abuf->fields.sfmt_addcc.f
1907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1908 int UNUSED written = 0;
1909 IADDR UNUSED pc = abuf->addr;
1910 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1911
1912 {
1913 SI tmp_tmp;
1914 QI tmp_cc;
1915 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1916 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1917 if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1918 tmp_cc = ANDQI (tmp_cc, 13);
1919 } else {
1920 tmp_cc = ORQI (tmp_cc, 2);
1921 }
1922 if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1923 tmp_cc = ANDQI (tmp_cc, 14);
1924 } else {
1925 tmp_cc = ORQI (tmp_cc, 1);
1926 }
1927 if (EQSI (tmp_tmp, 0)) {
1928 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1929 } else {
1930 if (LTSI (tmp_tmp, 0)) {
1931 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1932 } else {
1933 tmp_cc = ANDQI (tmp_cc, 3);
1934 }
1935 }
1936 {
1937 SI opval = tmp_tmp;
1938 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1939 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1940 }
1941 {
1942 UQI opval = tmp_cc;
1943 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1944 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1945 }
1946 }
1947
1948 return vpc;
1949 #undef FLD
1950 }
1951
1952 /* addi: addi$pack $GRi,$s12,$GRk */
1953
1954 static SEM_PC
1955 SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1956 {
1957 #define FLD(f) abuf->fields.sfmt_swapi.f
1958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1959 int UNUSED written = 0;
1960 IADDR UNUSED pc = abuf->addr;
1961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1962
1963 {
1964 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
1965 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1966 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1967 }
1968
1969 return vpc;
1970 #undef FLD
1971 }
1972
1973 /* subi: subi$pack $GRi,$s12,$GRk */
1974
1975 static SEM_PC
1976 SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1977 {
1978 #define FLD(f) abuf->fields.sfmt_swapi.f
1979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1980 int UNUSED written = 0;
1981 IADDR UNUSED pc = abuf->addr;
1982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1983
1984 {
1985 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
1986 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1987 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1988 }
1989
1990 return vpc;
1991 #undef FLD
1992 }
1993
1994 /* andi: andi$pack $GRi,$s12,$GRk */
1995
1996 static SEM_PC
1997 SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1998 {
1999 #define FLD(f) abuf->fields.sfmt_swapi.f
2000 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2001 int UNUSED written = 0;
2002 IADDR UNUSED pc = abuf->addr;
2003 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2004
2005 {
2006 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2007 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2008 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2009 }
2010
2011 return vpc;
2012 #undef FLD
2013 }
2014
2015 /* ori: ori$pack $GRi,$s12,$GRk */
2016
2017 static SEM_PC
2018 SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2019 {
2020 #define FLD(f) abuf->fields.sfmt_swapi.f
2021 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2022 int UNUSED written = 0;
2023 IADDR UNUSED pc = abuf->addr;
2024 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2025
2026 {
2027 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2028 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2029 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2030 }
2031
2032 return vpc;
2033 #undef FLD
2034 }
2035
2036 /* xori: xori$pack $GRi,$s12,$GRk */
2037
2038 static SEM_PC
2039 SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2040 {
2041 #define FLD(f) abuf->fields.sfmt_swapi.f
2042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2043 int UNUSED written = 0;
2044 IADDR UNUSED pc = abuf->addr;
2045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2046
2047 {
2048 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2049 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2050 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2051 }
2052
2053 return vpc;
2054 #undef FLD
2055 }
2056
2057 /* sdivi: sdivi$pack $GRi,$s12,$GRk */
2058
2059 static SEM_PC
2060 SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2061 {
2062 #define FLD(f) abuf->fields.sfmt_swapi.f
2063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2064 int UNUSED written = 0;
2065 IADDR UNUSED pc = abuf->addr;
2066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2067
2068 {
2069 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2070 ; /*clobber*/
2071 }
2072
2073 return vpc;
2074 #undef FLD
2075 }
2076
2077 /* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2078
2079 static SEM_PC
2080 SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2081 {
2082 #define FLD(f) abuf->fields.sfmt_swapi.f
2083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2084 int UNUSED written = 0;
2085 IADDR UNUSED pc = abuf->addr;
2086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2087
2088 {
2089 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2090 ; /*clobber*/
2091 }
2092
2093 return vpc;
2094 #undef FLD
2095 }
2096
2097 /* udivi: udivi$pack $GRi,$s12,$GRk */
2098
2099 static SEM_PC
2100 SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2101 {
2102 #define FLD(f) abuf->fields.sfmt_swapi.f
2103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2104 int UNUSED written = 0;
2105 IADDR UNUSED pc = abuf->addr;
2106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2107
2108 {
2109 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2110 ; /*clobber*/
2111 }
2112
2113 return vpc;
2114 #undef FLD
2115 }
2116
2117 /* nudivi: nudivi$pack $GRi,$s12,$GRk */
2118
2119 static SEM_PC
2120 SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2121 {
2122 #define FLD(f) abuf->fields.sfmt_swapi.f
2123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2124 int UNUSED written = 0;
2125 IADDR UNUSED pc = abuf->addr;
2126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2127
2128 {
2129 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2130 ; /*clobber*/
2131 }
2132
2133 return vpc;
2134 #undef FLD
2135 }
2136
2137 /* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2138
2139 static SEM_PC
2140 SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2141 {
2142 #define FLD(f) abuf->fields.sfmt_smuli.f
2143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2144 int UNUSED written = 0;
2145 IADDR UNUSED pc = abuf->addr;
2146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2147
2148 {
2149 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2150 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2151 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2152 }
2153
2154 return vpc;
2155 #undef FLD
2156 }
2157
2158 /* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2159
2160 static SEM_PC
2161 SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2162 {
2163 #define FLD(f) abuf->fields.sfmt_smuli.f
2164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2165 int UNUSED written = 0;
2166 IADDR UNUSED pc = abuf->addr;
2167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2168
2169 {
2170 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2171 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2172 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2173 }
2174
2175 return vpc;
2176 #undef FLD
2177 }
2178
2179 /* slli: slli$pack $GRi,$s12,$GRk */
2180
2181 static SEM_PC
2182 SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2183 {
2184 #define FLD(f) abuf->fields.sfmt_swapi.f
2185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2186 int UNUSED written = 0;
2187 IADDR UNUSED pc = abuf->addr;
2188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2189
2190 {
2191 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2192 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2193 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2194 }
2195
2196 return vpc;
2197 #undef FLD
2198 }
2199
2200 /* srli: srli$pack $GRi,$s12,$GRk */
2201
2202 static SEM_PC
2203 SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2204 {
2205 #define FLD(f) abuf->fields.sfmt_swapi.f
2206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2207 int UNUSED written = 0;
2208 IADDR UNUSED pc = abuf->addr;
2209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2210
2211 {
2212 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2213 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2214 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2215 }
2216
2217 return vpc;
2218 #undef FLD
2219 }
2220
2221 /* srai: srai$pack $GRi,$s12,$GRk */
2222
2223 static SEM_PC
2224 SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2225 {
2226 #define FLD(f) abuf->fields.sfmt_swapi.f
2227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2228 int UNUSED written = 0;
2229 IADDR UNUSED pc = abuf->addr;
2230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2231
2232 {
2233 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2234 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2235 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2236 }
2237
2238 return vpc;
2239 #undef FLD
2240 }
2241
2242 /* scani: scani$pack $GRi,$s12,$GRk */
2243
2244 static SEM_PC
2245 SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2246 {
2247 #define FLD(f) abuf->fields.sfmt_swapi.f
2248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2249 int UNUSED written = 0;
2250 IADDR UNUSED pc = abuf->addr;
2251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2252
2253 {
2254 SI tmp_tmp1;
2255 SI tmp_tmp2;
2256 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2257 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2258 {
2259 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2260 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2261 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2262 }
2263 }
2264
2265 return vpc;
2266 #undef FLD
2267 }
2268
2269 /* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2270
2271 static SEM_PC
2272 SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2273 {
2274 #define FLD(f) abuf->fields.sfmt_addicc.f
2275 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2276 int UNUSED written = 0;
2277 IADDR UNUSED pc = abuf->addr;
2278 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2279
2280 {
2281 BI tmp_tmp;
2282 QI tmp_cc;
2283 SI tmp_result;
2284 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2285 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2286 if (EQBI (tmp_tmp, 0)) {
2287 tmp_cc = ANDQI (tmp_cc, 13);
2288 } else {
2289 tmp_cc = ORQI (tmp_cc, 2);
2290 }
2291 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2292 if (EQBI (tmp_tmp, 0)) {
2293 tmp_cc = ANDQI (tmp_cc, 14);
2294 } else {
2295 tmp_cc = ORQI (tmp_cc, 1);
2296 }
2297 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2298 if (EQSI (tmp_result, 0)) {
2299 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2300 } else {
2301 if (LTSI (tmp_result, 0)) {
2302 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2303 } else {
2304 tmp_cc = ANDQI (tmp_cc, 3);
2305 }
2306 }
2307 {
2308 SI opval = tmp_result;
2309 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2310 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2311 }
2312 {
2313 UQI opval = tmp_cc;
2314 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2315 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2316 }
2317 }
2318
2319 return vpc;
2320 #undef FLD
2321 }
2322
2323 /* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2324
2325 static SEM_PC
2326 SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2327 {
2328 #define FLD(f) abuf->fields.sfmt_addicc.f
2329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2330 int UNUSED written = 0;
2331 IADDR UNUSED pc = abuf->addr;
2332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2333
2334 {
2335 BI tmp_tmp;
2336 QI tmp_cc;
2337 SI tmp_result;
2338 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2339 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2340 if (EQBI (tmp_tmp, 0)) {
2341 tmp_cc = ANDQI (tmp_cc, 13);
2342 } else {
2343 tmp_cc = ORQI (tmp_cc, 2);
2344 }
2345 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2346 if (EQBI (tmp_tmp, 0)) {
2347 tmp_cc = ANDQI (tmp_cc, 14);
2348 } else {
2349 tmp_cc = ORQI (tmp_cc, 1);
2350 }
2351 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2352 if (EQSI (tmp_result, 0)) {
2353 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2354 } else {
2355 if (LTSI (tmp_result, 0)) {
2356 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2357 } else {
2358 tmp_cc = ANDQI (tmp_cc, 3);
2359 }
2360 }
2361 {
2362 SI opval = tmp_result;
2363 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2364 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2365 }
2366 {
2367 UQI opval = tmp_cc;
2368 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2369 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2370 }
2371 }
2372
2373 return vpc;
2374 #undef FLD
2375 }
2376
2377 /* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2378
2379 static SEM_PC
2380 SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2381 {
2382 #define FLD(f) abuf->fields.sfmt_addicc.f
2383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2384 int UNUSED written = 0;
2385 IADDR UNUSED pc = abuf->addr;
2386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2387
2388 {
2389 SI tmp_tmp;
2390 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2391 {
2392 SI opval = tmp_tmp;
2393 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2394 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2395 }
2396 if (EQSI (tmp_tmp, 0)) {
2397 {
2398 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2399 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2400 written |= (1 << 4);
2401 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2402 }
2403 } else {
2404 if (LTSI (tmp_tmp, 0)) {
2405 {
2406 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2407 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2408 written |= (1 << 4);
2409 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2410 }
2411 } else {
2412 {
2413 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2414 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2415 written |= (1 << 4);
2416 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2417 }
2418 }
2419 }
2420 }
2421
2422 abuf->written = written;
2423 return vpc;
2424 #undef FLD
2425 }
2426
2427 /* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2428
2429 static SEM_PC
2430 SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2431 {
2432 #define FLD(f) abuf->fields.sfmt_addicc.f
2433 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2434 int UNUSED written = 0;
2435 IADDR UNUSED pc = abuf->addr;
2436 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2437
2438 {
2439 SI tmp_tmp;
2440 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2441 {
2442 SI opval = tmp_tmp;
2443 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2444 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2445 }
2446 if (EQSI (tmp_tmp, 0)) {
2447 {
2448 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2449 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2450 written |= (1 << 4);
2451 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2452 }
2453 } else {
2454 if (LTSI (tmp_tmp, 0)) {
2455 {
2456 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2457 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2458 written |= (1 << 4);
2459 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2460 }
2461 } else {
2462 {
2463 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2464 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2465 written |= (1 << 4);
2466 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2467 }
2468 }
2469 }
2470 }
2471
2472 abuf->written = written;
2473 return vpc;
2474 #undef FLD
2475 }
2476
2477 /* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2478
2479 static SEM_PC
2480 SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2481 {
2482 #define FLD(f) abuf->fields.sfmt_addicc.f
2483 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2484 int UNUSED written = 0;
2485 IADDR UNUSED pc = abuf->addr;
2486 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2487
2488 {
2489 SI tmp_tmp;
2490 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2491 {
2492 SI opval = tmp_tmp;
2493 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2494 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2495 }
2496 if (EQSI (tmp_tmp, 0)) {
2497 {
2498 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2499 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2500 written |= (1 << 4);
2501 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2502 }
2503 } else {
2504 if (LTSI (tmp_tmp, 0)) {
2505 {
2506 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2507 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2508 written |= (1 << 4);
2509 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2510 }
2511 } else {
2512 {
2513 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2514 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2515 written |= (1 << 4);
2516 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2517 }
2518 }
2519 }
2520 }
2521
2522 abuf->written = written;
2523 return vpc;
2524 #undef FLD
2525 }
2526
2527 /* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2528
2529 static SEM_PC
2530 SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2531 {
2532 #define FLD(f) abuf->fields.sfmt_smulicc.f
2533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2534 int UNUSED written = 0;
2535 IADDR UNUSED pc = abuf->addr;
2536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2537
2538 {
2539 DI tmp_tmp;
2540 QI tmp_cc;
2541 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2542 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2543 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2544 tmp_cc = ANDQI (tmp_cc, 7);
2545 } else {
2546 tmp_cc = ORQI (tmp_cc, 8);
2547 }
2548 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2549 tmp_cc = ANDQI (tmp_cc, 11);
2550 } else {
2551 tmp_cc = ORQI (tmp_cc, 4);
2552 }
2553 {
2554 DI opval = tmp_tmp;
2555 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2556 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2557 }
2558 {
2559 UQI opval = tmp_cc;
2560 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2561 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2562 }
2563 }
2564
2565 return vpc;
2566 #undef FLD
2567 }
2568
2569 /* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2570
2571 static SEM_PC
2572 SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2573 {
2574 #define FLD(f) abuf->fields.sfmt_smulicc.f
2575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2576 int UNUSED written = 0;
2577 IADDR UNUSED pc = abuf->addr;
2578 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2579
2580 {
2581 DI tmp_tmp;
2582 QI tmp_cc;
2583 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2584 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2585 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2586 tmp_cc = ANDQI (tmp_cc, 7);
2587 } else {
2588 tmp_cc = ORQI (tmp_cc, 8);
2589 }
2590 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2591 tmp_cc = ANDQI (tmp_cc, 11);
2592 } else {
2593 tmp_cc = ORQI (tmp_cc, 4);
2594 }
2595 {
2596 DI opval = tmp_tmp;
2597 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2598 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2599 }
2600 {
2601 UQI opval = tmp_cc;
2602 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2603 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2604 }
2605 }
2606
2607 return vpc;
2608 #undef FLD
2609 }
2610
2611 /* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2612
2613 static SEM_PC
2614 SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2615 {
2616 #define FLD(f) abuf->fields.sfmt_addicc.f
2617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2618 int UNUSED written = 0;
2619 IADDR UNUSED pc = abuf->addr;
2620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2621
2622 {
2623 SI tmp_shift;
2624 SI tmp_tmp;
2625 QI tmp_cc;
2626 tmp_shift = ANDSI (FLD (f_s10), 31);
2627 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)]));
2628 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2629 {
2630 SI opval = tmp_tmp;
2631 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2632 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2633 }
2634 if (EQSI (tmp_tmp, 0)) {
2635 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2636 } else {
2637 if (LTSI (tmp_tmp, 0)) {
2638 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2639 } else {
2640 tmp_cc = ANDQI (tmp_cc, 3);
2641 }
2642 }
2643 {
2644 UQI opval = tmp_cc;
2645 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2646 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2647 }
2648 }
2649
2650 return vpc;
2651 #undef FLD
2652 }
2653
2654 /* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2655
2656 static SEM_PC
2657 SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2658 {
2659 #define FLD(f) abuf->fields.sfmt_addicc.f
2660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2661 int UNUSED written = 0;
2662 IADDR UNUSED pc = abuf->addr;
2663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2664
2665 {
2666 SI tmp_shift;
2667 SI tmp_tmp;
2668 QI tmp_cc;
2669 tmp_shift = ANDSI (FLD (f_s10), 31);
2670 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)]));
2671 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2672 {
2673 SI opval = tmp_tmp;
2674 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2675 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2676 }
2677 if (EQSI (tmp_tmp, 0)) {
2678 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2679 } else {
2680 if (LTSI (tmp_tmp, 0)) {
2681 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2682 } else {
2683 tmp_cc = ANDQI (tmp_cc, 3);
2684 }
2685 }
2686 {
2687 UQI opval = tmp_cc;
2688 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2689 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2690 }
2691 }
2692
2693 return vpc;
2694 #undef FLD
2695 }
2696
2697 /* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2698
2699 static SEM_PC
2700 SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2701 {
2702 #define FLD(f) abuf->fields.sfmt_addicc.f
2703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2704 int UNUSED written = 0;
2705 IADDR UNUSED pc = abuf->addr;
2706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2707
2708 {
2709 SI tmp_shift;
2710 SI tmp_tmp;
2711 QI tmp_cc;
2712 tmp_shift = ANDSI (FLD (f_s10), 31);
2713 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)]));
2714 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2715 {
2716 SI opval = tmp_tmp;
2717 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2718 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2719 }
2720 if (EQSI (tmp_tmp, 0)) {
2721 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2722 } else {
2723 if (LTSI (tmp_tmp, 0)) {
2724 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2725 } else {
2726 tmp_cc = ANDQI (tmp_cc, 3);
2727 }
2728 }
2729 {
2730 UQI opval = tmp_cc;
2731 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2732 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2733 }
2734 }
2735
2736 return vpc;
2737 #undef FLD
2738 }
2739
2740 /* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2741
2742 static SEM_PC
2743 SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2744 {
2745 #define FLD(f) abuf->fields.sfmt_addicc.f
2746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2747 int UNUSED written = 0;
2748 IADDR UNUSED pc = abuf->addr;
2749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2750
2751 {
2752 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2753 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2754 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2755 }
2756
2757 return vpc;
2758 #undef FLD
2759 }
2760
2761 /* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2762
2763 static SEM_PC
2764 SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2765 {
2766 #define FLD(f) abuf->fields.sfmt_addicc.f
2767 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2768 int UNUSED written = 0;
2769 IADDR UNUSED pc = abuf->addr;
2770 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2771
2772 {
2773 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2774 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2775 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2776 }
2777
2778 return vpc;
2779 #undef FLD
2780 }
2781
2782 /* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2783
2784 static SEM_PC
2785 SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2786 {
2787 #define FLD(f) abuf->fields.sfmt_addicc.f
2788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2789 int UNUSED written = 0;
2790 IADDR UNUSED pc = abuf->addr;
2791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2792
2793 {
2794 SI tmp_tmp;
2795 QI tmp_cc;
2796 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2797 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2798 if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2799 tmp_cc = ANDQI (tmp_cc, 13);
2800 } else {
2801 tmp_cc = ORQI (tmp_cc, 2);
2802 }
2803 if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2804 tmp_cc = ANDQI (tmp_cc, 14);
2805 } else {
2806 tmp_cc = ORQI (tmp_cc, 1);
2807 }
2808 if (EQSI (tmp_tmp, 0)) {
2809 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2810 } else {
2811 if (LTSI (tmp_tmp, 0)) {
2812 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2813 } else {
2814 tmp_cc = ANDQI (tmp_cc, 3);
2815 }
2816 }
2817 {
2818 SI opval = tmp_tmp;
2819 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2820 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2821 }
2822 {
2823 UQI opval = tmp_cc;
2824 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2825 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2826 }
2827 }
2828
2829 return vpc;
2830 #undef FLD
2831 }
2832
2833 /* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2834
2835 static SEM_PC
2836 SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2837 {
2838 #define FLD(f) abuf->fields.sfmt_addicc.f
2839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2840 int UNUSED written = 0;
2841 IADDR UNUSED pc = abuf->addr;
2842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2843
2844 {
2845 SI tmp_tmp;
2846 QI tmp_cc;
2847 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2848 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2849 if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2850 tmp_cc = ANDQI (tmp_cc, 13);
2851 } else {
2852 tmp_cc = ORQI (tmp_cc, 2);
2853 }
2854 if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2855 tmp_cc = ANDQI (tmp_cc, 14);
2856 } else {
2857 tmp_cc = ORQI (tmp_cc, 1);
2858 }
2859 if (EQSI (tmp_tmp, 0)) {
2860 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2861 } else {
2862 if (LTSI (tmp_tmp, 0)) {
2863 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2864 } else {
2865 tmp_cc = ANDQI (tmp_cc, 3);
2866 }
2867 }
2868 {
2869 SI opval = tmp_tmp;
2870 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2871 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2872 }
2873 {
2874 UQI opval = tmp_cc;
2875 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2876 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2877 }
2878 }
2879
2880 return vpc;
2881 #undef FLD
2882 }
2883
2884 /* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
2885
2886 static SEM_PC
2887 SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2888 {
2889 #define FLD(f) abuf->fields.sfmt_smulcc.f
2890 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2891 int UNUSED written = 0;
2892 IADDR UNUSED pc = abuf->addr;
2893 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2894
2895 {
2896 QI tmp_cc;
2897 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
2898 tmp_cc = ANDQI (tmp_cc, 7);
2899 } else {
2900 tmp_cc = ORQI (tmp_cc, 8);
2901 }
2902 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
2903 tmp_cc = ANDQI (tmp_cc, 11);
2904 } else {
2905 tmp_cc = ORQI (tmp_cc, 4);
2906 }
2907 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
2908 tmp_cc = ANDQI (tmp_cc, 13);
2909 } else {
2910 tmp_cc = ORQI (tmp_cc, 2);
2911 }
2912 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
2913 tmp_cc = ANDQI (tmp_cc, 14);
2914 } else {
2915 tmp_cc = ORQI (tmp_cc, 1);
2916 }
2917 {
2918 UQI opval = tmp_cc;
2919 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2920 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2921 }
2922 }
2923
2924 return vpc;
2925 #undef FLD
2926 }
2927
2928 /* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
2929
2930 static SEM_PC
2931 SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2932 {
2933 #define FLD(f) abuf->fields.sfmt_smulcc.f
2934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2935 int UNUSED written = 0;
2936 IADDR UNUSED pc = abuf->addr;
2937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2938
2939 {
2940 QI tmp_cc;
2941 tmp_cc = 0;
2942 if (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)) {
2943 tmp_cc = ANDQI (tmp_cc, 14);
2944 } else {
2945 tmp_cc = ORQI (tmp_cc, 1);
2946 }
2947 {
2948 UQI opval = tmp_cc;
2949 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2950 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2951 }
2952 }
2953
2954 return vpc;
2955 #undef FLD
2956 }
2957
2958 /* setlo: setlo$pack $ulo16,$GRklo */
2959
2960 static SEM_PC
2961 SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2962 {
2963 #define FLD(f) abuf->fields.sfmt_setlo.f
2964 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2965 int UNUSED written = 0;
2966 IADDR UNUSED pc = abuf->addr;
2967 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2968
2969 {
2970 UHI opval = FLD (f_u16);
2971 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
2972 TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
2973 }
2974
2975 return vpc;
2976 #undef FLD
2977 }
2978
2979 /* sethi: sethi$pack $uhi16,$GRkhi */
2980
2981 static SEM_PC
2982 SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2983 {
2984 #define FLD(f) abuf->fields.sfmt_sethi.f
2985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2986 int UNUSED written = 0;
2987 IADDR UNUSED pc = abuf->addr;
2988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2989
2990 {
2991 UHI opval = FLD (f_u16);
2992 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
2993 TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
2994 }
2995
2996 return vpc;
2997 #undef FLD
2998 }
2999
3000 /* setlos: setlos$pack $slo16,$GRk */
3001
3002 static SEM_PC
3003 SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3004 {
3005 #define FLD(f) abuf->fields.sfmt_setlos.f
3006 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3007 int UNUSED written = 0;
3008 IADDR UNUSED pc = abuf->addr;
3009 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3010
3011 {
3012 SI opval = FLD (f_s16);
3013 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3014 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3015 }
3016
3017 return vpc;
3018 #undef FLD
3019 }
3020
3021 /* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3022
3023 static SEM_PC
3024 SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3025 {
3026 #define FLD(f) abuf->fields.sfmt_addcc.f
3027 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3028 int UNUSED written = 0;
3029 IADDR UNUSED pc = abuf->addr;
3030 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3031
3032 {
3033 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3034 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3035 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3036 }
3037
3038 return vpc;
3039 #undef FLD
3040 }
3041
3042 /* ldub: ldub$pack @($GRi,$GRj),$GRk */
3043
3044 static SEM_PC
3045 SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3046 {
3047 #define FLD(f) abuf->fields.sfmt_addcc.f
3048 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3049 int UNUSED written = 0;
3050 IADDR UNUSED pc = abuf->addr;
3051 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3052
3053 {
3054 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3055 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3056 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3057 }
3058
3059 return vpc;
3060 #undef FLD
3061 }
3062
3063 /* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3064
3065 static SEM_PC
3066 SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3067 {
3068 #define FLD(f) abuf->fields.sfmt_addcc.f
3069 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3070 int UNUSED written = 0;
3071 IADDR UNUSED pc = abuf->addr;
3072 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3073
3074 {
3075 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3076 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3077 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3078 }
3079
3080 return vpc;
3081 #undef FLD
3082 }
3083
3084 /* lduh: lduh$pack @($GRi,$GRj),$GRk */
3085
3086 static SEM_PC
3087 SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3088 {
3089 #define FLD(f) abuf->fields.sfmt_addcc.f
3090 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3091 int UNUSED written = 0;
3092 IADDR UNUSED pc = abuf->addr;
3093 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3094
3095 {
3096 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3097 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3098 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3099 }
3100
3101 return vpc;
3102 #undef FLD
3103 }
3104
3105 /* ld: ld$pack @($GRi,$GRj),$GRk */
3106
3107 static SEM_PC
3108 SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3109 {
3110 #define FLD(f) abuf->fields.sfmt_addcc.f
3111 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3112 int UNUSED written = 0;
3113 IADDR UNUSED pc = abuf->addr;
3114 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3115
3116 {
3117 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3118 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3119 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3120 }
3121
3122 return vpc;
3123 #undef FLD
3124 }
3125
3126 /* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3127
3128 static SEM_PC
3129 SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3130 {
3131 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3132 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3133 int UNUSED written = 0;
3134 IADDR UNUSED pc = abuf->addr;
3135 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3136
3137 {
3138 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3139 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3140 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3141 }
3142
3143 return vpc;
3144 #undef FLD
3145 }
3146
3147 /* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3148
3149 static SEM_PC
3150 SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3151 {
3152 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3154 int UNUSED written = 0;
3155 IADDR UNUSED pc = abuf->addr;
3156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3157
3158 {
3159 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3160 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3161 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3162 }
3163
3164 return vpc;
3165 #undef FLD
3166 }
3167
3168 /* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3169
3170 static SEM_PC
3171 SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3172 {
3173 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3175 int UNUSED written = 0;
3176 IADDR UNUSED pc = abuf->addr;
3177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3178
3179 {
3180 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3181 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3182 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3183 }
3184
3185 return vpc;
3186 #undef FLD
3187 }
3188
3189 /* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3190
3191 static SEM_PC
3192 SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3193 {
3194 #define FLD(f) abuf->fields.sfmt_ldcu.f
3195 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3196 int UNUSED written = 0;
3197 IADDR UNUSED pc = abuf->addr;
3198 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3199
3200 {
3201 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3202 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3203 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3204 }
3205
3206 return vpc;
3207 #undef FLD
3208 }
3209
3210 /* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3211
3212 static SEM_PC
3213 SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3214 {
3215 #define FLD(f) abuf->fields.sfmt_addcc.f
3216 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3217 int UNUSED written = 0;
3218 IADDR UNUSED pc = abuf->addr;
3219 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3220
3221 {
3222 BI tmp_do_op;
3223 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3224 if (tmp_do_op) {
3225 {
3226 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3227 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3228 written |= (1 << 6);
3229 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3230 }
3231 }
3232 }
3233
3234 abuf->written = written;
3235 return vpc;
3236 #undef FLD
3237 }
3238
3239 /* nldub: nldub$pack @($GRi,$GRj),$GRk */
3240
3241 static SEM_PC
3242 SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3243 {
3244 #define FLD(f) abuf->fields.sfmt_addcc.f
3245 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3246 int UNUSED written = 0;
3247 IADDR UNUSED pc = abuf->addr;
3248 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3249
3250 {
3251 BI tmp_do_op;
3252 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3253 if (tmp_do_op) {
3254 {
3255 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3256 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3257 written |= (1 << 6);
3258 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3259 }
3260 }
3261 }
3262
3263 abuf->written = written;
3264 return vpc;
3265 #undef FLD
3266 }
3267
3268 /* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3269
3270 static SEM_PC
3271 SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3272 {
3273 #define FLD(f) abuf->fields.sfmt_addcc.f
3274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3275 int UNUSED written = 0;
3276 IADDR UNUSED pc = abuf->addr;
3277 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3278
3279 {
3280 BI tmp_do_op;
3281 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3282 if (tmp_do_op) {
3283 {
3284 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3285 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3286 written |= (1 << 6);
3287 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3288 }
3289 }
3290 }
3291
3292 abuf->written = written;
3293 return vpc;
3294 #undef FLD
3295 }
3296
3297 /* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3298
3299 static SEM_PC
3300 SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3301 {
3302 #define FLD(f) abuf->fields.sfmt_addcc.f
3303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3304 int UNUSED written = 0;
3305 IADDR UNUSED pc = abuf->addr;
3306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3307
3308 {
3309 BI tmp_do_op;
3310 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3311 if (tmp_do_op) {
3312 {
3313 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3314 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3315 written |= (1 << 6);
3316 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3317 }
3318 }
3319 }
3320
3321 abuf->written = written;
3322 return vpc;
3323 #undef FLD
3324 }
3325
3326 /* nld: nld$pack @($GRi,$GRj),$GRk */
3327
3328 static SEM_PC
3329 SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3330 {
3331 #define FLD(f) abuf->fields.sfmt_addcc.f
3332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3333 int UNUSED written = 0;
3334 IADDR UNUSED pc = abuf->addr;
3335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3336
3337 {
3338 BI tmp_do_op;
3339 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3340 if (tmp_do_op) {
3341 {
3342 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3343 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3344 written |= (1 << 6);
3345 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3346 }
3347 }
3348 }
3349
3350 abuf->written = written;
3351 return vpc;
3352 #undef FLD
3353 }
3354
3355 /* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3356
3357 static SEM_PC
3358 SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3359 {
3360 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3362 int UNUSED written = 0;
3363 IADDR UNUSED pc = abuf->addr;
3364 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3365
3366 {
3367 BI tmp_do_op;
3368 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3369 if (tmp_do_op) {
3370 {
3371 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3372 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3373 written |= (1 << 6);
3374 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3375 }
3376 }
3377 }
3378
3379 abuf->written = written;
3380 return vpc;
3381 #undef FLD
3382 }
3383
3384 /* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3385
3386 static SEM_PC
3387 SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3388 {
3389 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3391 int UNUSED written = 0;
3392 IADDR UNUSED pc = abuf->addr;
3393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3394
3395 {
3396 BI tmp_do_op;
3397 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3398 if (tmp_do_op) {
3399 {
3400 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3401 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3402 written |= (1 << 6);
3403 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3404 }
3405 }
3406 }
3407
3408 abuf->written = written;
3409 return vpc;
3410 #undef FLD
3411 }
3412
3413 /* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3414
3415 static SEM_PC
3416 SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3417 {
3418 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3420 int UNUSED written = 0;
3421 IADDR UNUSED pc = abuf->addr;
3422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3423
3424 {
3425 BI tmp_do_op;
3426 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3427 if (tmp_do_op) {
3428 {
3429 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3430 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3431 written |= (1 << 6);
3432 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3433 }
3434 }
3435 }
3436
3437 abuf->written = written;
3438 return vpc;
3439 #undef FLD
3440 }
3441
3442 /* ldd: ldd$pack @($GRi,$GRj),$GRdoublek */
3443
3444 static SEM_PC
3445 SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3446 {
3447 #define FLD(f) abuf->fields.sfmt_smulcc.f
3448 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3449 int UNUSED written = 0;
3450 IADDR UNUSED pc = abuf->addr;
3451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3452
3453 {
3454 SI tmp_address;
3455 if (NESI (FLD (f_GRk), 0)) {
3456 {
3457 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3458 {
3459 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3460 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3461 written |= (1 << 4);
3462 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3463 }
3464 }
3465 }
3466 }
3467
3468 abuf->written = written;
3469 return vpc;
3470 #undef FLD
3471 }
3472
3473 /* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3474
3475 static SEM_PC
3476 SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3477 {
3478 #define FLD(f) abuf->fields.sfmt_clddfu.f
3479 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3480 int UNUSED written = 0;
3481 IADDR UNUSED pc = abuf->addr;
3482 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3483
3484 {
3485 SI tmp_address;
3486 {
3487 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3488 {
3489 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3490 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3491 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3492 }
3493 }
3494 }
3495
3496 return vpc;
3497 #undef FLD
3498 }
3499
3500 /* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3501
3502 static SEM_PC
3503 SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3504 {
3505 #define FLD(f) abuf->fields.sfmt_lddcu.f
3506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3507 int UNUSED written = 0;
3508 IADDR UNUSED pc = abuf->addr;
3509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3510
3511 {
3512 SI tmp_address;
3513 {
3514 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3515 {
3516 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3517 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3518 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3519 }
3520 }
3521 }
3522
3523 return vpc;
3524 #undef FLD
3525 }
3526
3527 /* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3528
3529 static SEM_PC
3530 SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3531 {
3532 #define FLD(f) abuf->fields.sfmt_smulcc.f
3533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3534 int UNUSED written = 0;
3535 IADDR UNUSED pc = abuf->addr;
3536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3537
3538 {
3539 SI tmp_address;
3540 {
3541 BI tmp_do_op;
3542 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3543 if (tmp_do_op) {
3544 if (NESI (FLD (f_GRk), 0)) {
3545 {
3546 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3547 {
3548 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3549 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3550 written |= (1 << 6);
3551 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3552 }
3553 }
3554 }
3555 }
3556 }
3557 }
3558
3559 abuf->written = written;
3560 return vpc;
3561 #undef FLD
3562 }
3563
3564 /* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3565
3566 static SEM_PC
3567 SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3568 {
3569 #define FLD(f) abuf->fields.sfmt_clddfu.f
3570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3571 int UNUSED written = 0;
3572 IADDR UNUSED pc = abuf->addr;
3573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3574
3575 {
3576 SI tmp_address;
3577 {
3578 BI tmp_do_op;
3579 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3580 if (tmp_do_op) {
3581 {
3582 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3583 {
3584 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3585 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3586 written |= (1 << 6);
3587 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3588 }
3589 }
3590 }
3591 }
3592 }
3593
3594 abuf->written = written;
3595 return vpc;
3596 #undef FLD
3597 }
3598
3599 /* ldq: ldq$pack @($GRi,$GRj),$GRk */
3600
3601 static SEM_PC
3602 SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3603 {
3604 #define FLD(f) abuf->fields.sfmt_smulcc.f
3605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3606 int UNUSED written = 0;
3607 IADDR UNUSED pc = abuf->addr;
3608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3609
3610 {
3611 SI tmp_address;
3612 {
3613 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3614 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3615 }
3616 }
3617
3618 return vpc;
3619 #undef FLD
3620 }
3621
3622 /* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3623
3624 static SEM_PC
3625 SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3626 {
3627 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3628 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3629 int UNUSED written = 0;
3630 IADDR UNUSED pc = abuf->addr;
3631 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3632
3633 {
3634 SI tmp_address;
3635 {
3636 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3637 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3638 }
3639 }
3640
3641 return vpc;
3642 #undef FLD
3643 }
3644
3645 /* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3646
3647 static SEM_PC
3648 SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3649 {
3650 #define FLD(f) abuf->fields.sfmt_stdcu.f
3651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3652 int UNUSED written = 0;
3653 IADDR UNUSED pc = abuf->addr;
3654 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3655
3656 {
3657 SI tmp_address;
3658 {
3659 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3660 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3661 }
3662 }
3663
3664 return vpc;
3665 #undef FLD
3666 }
3667
3668 /* nldq: nldq$pack @($GRi,$GRj),$GRk */
3669
3670 static SEM_PC
3671 SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3672 {
3673 #define FLD(f) abuf->fields.sfmt_smulcc.f
3674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3675 int UNUSED written = 0;
3676 IADDR UNUSED pc = abuf->addr;
3677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3678
3679 {
3680 SI tmp_address;
3681 {
3682 BI tmp_do_op;
3683 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3684 if (tmp_do_op) {
3685 {
3686 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3687 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3688 }
3689 }
3690 }
3691 }
3692
3693 return vpc;
3694 #undef FLD
3695 }
3696
3697 /* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3698
3699 static SEM_PC
3700 SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3701 {
3702 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3704 int UNUSED written = 0;
3705 IADDR UNUSED pc = abuf->addr;
3706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3707
3708 {
3709 SI tmp_address;
3710 {
3711 BI tmp_do_op;
3712 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3713 if (tmp_do_op) {
3714 {
3715 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3716 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3717 }
3718 }
3719 }
3720 }
3721
3722 return vpc;
3723 #undef FLD
3724 }
3725
3726 /* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3727
3728 static SEM_PC
3729 SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3730 {
3731 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3733 int UNUSED written = 0;
3734 IADDR UNUSED pc = abuf->addr;
3735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3736
3737 {
3738 USI tmp_address;
3739 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3740 {
3741 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3742 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3743 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3744 }
3745 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3746 {
3747 {
3748 SI opval = tmp_address;
3749 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3750 written |= (1 << 5);
3751 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3752 }
3753 frvbf_force_update (current_cpu);
3754 }
3755 }
3756 }
3757
3758 abuf->written = written;
3759 return vpc;
3760 #undef FLD
3761 }
3762
3763 /* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3764
3765 static SEM_PC
3766 SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3767 {
3768 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3769 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3770 int UNUSED written = 0;
3771 IADDR UNUSED pc = abuf->addr;
3772 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3773
3774 {
3775 USI tmp_address;
3776 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3777 {
3778 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3779 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3780 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3781 }
3782 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3783 {
3784 {
3785 SI opval = tmp_address;
3786 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3787 written |= (1 << 5);
3788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3789 }
3790 frvbf_force_update (current_cpu);
3791 }
3792 }
3793 }
3794
3795 abuf->written = written;
3796 return vpc;
3797 #undef FLD
3798 }
3799
3800 /* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3801
3802 static SEM_PC
3803 SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3804 {
3805 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3807 int UNUSED written = 0;
3808 IADDR UNUSED pc = abuf->addr;
3809 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3810
3811 {
3812 USI tmp_address;
3813 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3814 {
3815 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3816 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3817 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3818 }
3819 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3820 {
3821 {
3822 SI opval = tmp_address;
3823 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3824 written |= (1 << 5);
3825 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3826 }
3827 frvbf_force_update (current_cpu);
3828 }
3829 }
3830 }
3831
3832 abuf->written = written;
3833 return vpc;
3834 #undef FLD
3835 }
3836
3837 /* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
3838
3839 static SEM_PC
3840 SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3841 {
3842 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3843 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3844 int UNUSED written = 0;
3845 IADDR UNUSED pc = abuf->addr;
3846 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3847
3848 {
3849 USI tmp_address;
3850 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3851 {
3852 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
3853 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3854 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3855 }
3856 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3857 {
3858 {
3859 SI opval = tmp_address;
3860 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3861 written |= (1 << 5);
3862 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3863 }
3864 frvbf_force_update (current_cpu);
3865 }
3866 }
3867 }
3868
3869 abuf->written = written;
3870 return vpc;
3871 #undef FLD
3872 }
3873
3874 /* ldu: ldu$pack @($GRi,$GRj),$GRk */
3875
3876 static SEM_PC
3877 SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3878 {
3879 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3881 int UNUSED written = 0;
3882 IADDR UNUSED pc = abuf->addr;
3883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3884
3885 {
3886 USI tmp_address;
3887 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3888 {
3889 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
3890 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3891 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3892 }
3893 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3894 {
3895 {
3896 SI opval = tmp_address;
3897 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3898 written |= (1 << 5);
3899 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3900 }
3901 frvbf_force_update (current_cpu);
3902 }
3903 }
3904 }
3905
3906 abuf->written = written;
3907 return vpc;
3908 #undef FLD
3909 }
3910
3911 /* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
3912
3913 static SEM_PC
3914 SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3915 {
3916 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3917 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3918 int UNUSED written = 0;
3919 IADDR UNUSED pc = abuf->addr;
3920 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3921
3922 {
3923 BI tmp_do_op;
3924 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3925 if (tmp_do_op) {
3926 {
3927 USI tmp_address;
3928 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3929 {
3930 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3931 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3932 written |= (1 << 7);
3933 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3934 }
3935 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3936 {
3937 {
3938 SI opval = tmp_address;
3939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3940 written |= (1 << 6);
3941 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3942 }
3943 frvbf_force_update (current_cpu);
3944 }
3945 }
3946 }
3947 }
3948 }
3949
3950 abuf->written = written;
3951 return vpc;
3952 #undef FLD
3953 }
3954
3955 /* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
3956
3957 static SEM_PC
3958 SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3959 {
3960 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3962 int UNUSED written = 0;
3963 IADDR UNUSED pc = abuf->addr;
3964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3965
3966 {
3967 BI tmp_do_op;
3968 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3969 if (tmp_do_op) {
3970 {
3971 USI tmp_address;
3972 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3973 {
3974 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3975 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3976 written |= (1 << 7);
3977 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3978 }
3979 if (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 << 6);
3985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3986 }
3987 frvbf_force_update (current_cpu);
3988 }
3989 }
3990 }
3991 }
3992 }
3993
3994 abuf->written = written;
3995 return vpc;
3996 #undef FLD
3997 }
3998
3999 /* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4000
4001 static SEM_PC
4002 SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4003 {
4004 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4006 int UNUSED written = 0;
4007 IADDR UNUSED pc = abuf->addr;
4008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4009
4010 {
4011 BI tmp_do_op;
4012 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4013 if (tmp_do_op) {
4014 {
4015 USI tmp_address;
4016 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4017 {
4018 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4019 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4020 written |= (1 << 7);
4021 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4022 }
4023 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4024 {
4025 {
4026 SI opval = tmp_address;
4027 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4028 written |= (1 << 6);
4029 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4030 }
4031 frvbf_force_update (current_cpu);
4032 }
4033 }
4034 }
4035 }
4036 }
4037
4038 abuf->written = written;
4039 return vpc;
4040 #undef FLD
4041 }
4042
4043 /* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4044
4045 static SEM_PC
4046 SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4047 {
4048 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4049 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4050 int UNUSED written = 0;
4051 IADDR UNUSED pc = abuf->addr;
4052 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4053
4054 {
4055 BI tmp_do_op;
4056 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4057 if (tmp_do_op) {
4058 {
4059 USI tmp_address;
4060 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4061 {
4062 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4063 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4064 written |= (1 << 7);
4065 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4066 }
4067 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4068 {
4069 {
4070 SI opval = tmp_address;
4071 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4072 written |= (1 << 6);
4073 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4074 }
4075 frvbf_force_update (current_cpu);
4076 }
4077 }
4078 }
4079 }
4080 }
4081
4082 abuf->written = written;
4083 return vpc;
4084 #undef FLD
4085 }
4086
4087 /* nldu: nldu$pack @($GRi,$GRj),$GRk */
4088
4089 static SEM_PC
4090 SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4091 {
4092 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4093 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4094 int UNUSED written = 0;
4095 IADDR UNUSED pc = abuf->addr;
4096 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4097
4098 {
4099 BI tmp_do_op;
4100 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4101 if (tmp_do_op) {
4102 {
4103 USI tmp_address;
4104 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4105 {
4106 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4107 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4108 written |= (1 << 7);
4109 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4110 }
4111 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4112 {
4113 {
4114 SI opval = tmp_address;
4115 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4116 written |= (1 << 6);
4117 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4118 }
4119 frvbf_force_update (current_cpu);
4120 }
4121 }
4122 }
4123 }
4124 }
4125
4126 abuf->written = written;
4127 return vpc;
4128 #undef FLD
4129 }
4130
4131 /* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4132
4133 static SEM_PC
4134 SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4135 {
4136 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4138 int UNUSED written = 0;
4139 IADDR UNUSED pc = abuf->addr;
4140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4141
4142 {
4143 USI tmp_address;
4144 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4145 {
4146 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4147 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4148 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4149 }
4150 {
4151 SI opval = tmp_address;
4152 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4153 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4154 }
4155 frvbf_force_update (current_cpu);
4156 }
4157
4158 return vpc;
4159 #undef FLD
4160 }
4161
4162 /* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4163
4164 static SEM_PC
4165 SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4166 {
4167 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4168 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4169 int UNUSED written = 0;
4170 IADDR UNUSED pc = abuf->addr;
4171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4172
4173 {
4174 USI tmp_address;
4175 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4176 {
4177 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4178 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4179 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4180 }
4181 {
4182 SI opval = tmp_address;
4183 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4184 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4185 }
4186 frvbf_force_update (current_cpu);
4187 }
4188
4189 return vpc;
4190 #undef FLD
4191 }
4192
4193 /* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4194
4195 static SEM_PC
4196 SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4197 {
4198 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4199 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4200 int UNUSED written = 0;
4201 IADDR UNUSED pc = abuf->addr;
4202 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4203
4204 {
4205 USI tmp_address;
4206 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4207 {
4208 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4209 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4210 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4211 }
4212 {
4213 SI opval = tmp_address;
4214 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4215 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4216 }
4217 frvbf_force_update (current_cpu);
4218 }
4219
4220 return vpc;
4221 #undef FLD
4222 }
4223
4224 /* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4225
4226 static SEM_PC
4227 SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4228 {
4229 #define FLD(f) abuf->fields.sfmt_ldcu.f
4230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4231 int UNUSED written = 0;
4232 IADDR UNUSED pc = abuf->addr;
4233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4234
4235 {
4236 USI tmp_address;
4237 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4238 {
4239 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4240 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4241 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4242 }
4243 {
4244 SI opval = tmp_address;
4245 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4246 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4247 }
4248 frvbf_force_update (current_cpu);
4249 }
4250
4251 return vpc;
4252 #undef FLD
4253 }
4254
4255 /* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4256
4257 static SEM_PC
4258 SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4259 {
4260 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4261 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4262 int UNUSED written = 0;
4263 IADDR UNUSED pc = abuf->addr;
4264 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4265
4266 {
4267 BI tmp_do_op;
4268 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4269 if (tmp_do_op) {
4270 {
4271 USI tmp_address;
4272 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4273 {
4274 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4275 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4276 written |= (1 << 6);
4277 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4278 }
4279 {
4280 SI opval = tmp_address;
4281 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4282 written |= (1 << 7);
4283 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4284 }
4285 frvbf_force_update (current_cpu);
4286 }
4287 }
4288 }
4289
4290 abuf->written = written;
4291 return vpc;
4292 #undef FLD
4293 }
4294
4295 /* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4296
4297 static SEM_PC
4298 SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4299 {
4300 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4302 int UNUSED written = 0;
4303 IADDR UNUSED pc = abuf->addr;
4304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4305
4306 {
4307 BI tmp_do_op;
4308 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4309 if (tmp_do_op) {
4310 {
4311 USI tmp_address;
4312 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4313 {
4314 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4315 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4316 written |= (1 << 6);
4317 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4318 }
4319 {
4320 SI opval = tmp_address;
4321 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4322 written |= (1 << 7);
4323 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4324 }
4325 frvbf_force_update (current_cpu);
4326 }
4327 }
4328 }
4329
4330 abuf->written = written;
4331 return vpc;
4332 #undef FLD
4333 }
4334
4335 /* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4336
4337 static SEM_PC
4338 SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4339 {
4340 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4342 int UNUSED written = 0;
4343 IADDR UNUSED pc = abuf->addr;
4344 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4345
4346 {
4347 BI tmp_do_op;
4348 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4349 if (tmp_do_op) {
4350 {
4351 USI tmp_address;
4352 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4353 {
4354 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4355 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4356 written |= (1 << 6);
4357 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4358 }
4359 {
4360 SI opval = tmp_address;
4361 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4362 written |= (1 << 7);
4363 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4364 }
4365 frvbf_force_update (current_cpu);
4366 }
4367 }
4368 }
4369
4370 abuf->written = written;
4371 return vpc;
4372 #undef FLD
4373 }
4374
4375 /* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4376
4377 static SEM_PC
4378 SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4379 {
4380 #define FLD(f) abuf->fields.sfmt_clddu.f
4381 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4382 int UNUSED written = 0;
4383 IADDR UNUSED pc = abuf->addr;
4384 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4385
4386 {
4387 SI tmp_address;
4388 if (NESI (FLD (f_GRk), 0)) {
4389 {
4390 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4391 {
4392 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4393 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4394 written |= (1 << 5);
4395 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4396 }
4397 }
4398 }
4399 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4400 {
4401 {
4402 SI opval = tmp_address;
4403 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4404 written |= (1 << 6);
4405 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4406 }
4407 frvbf_force_update (current_cpu);
4408 }
4409 }
4410 }
4411
4412 abuf->written = written;
4413 return vpc;
4414 #undef FLD
4415 }
4416
4417 /* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4418
4419 static SEM_PC
4420 SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4421 {
4422 #define FLD(f) abuf->fields.sfmt_clddu.f
4423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4424 int UNUSED written = 0;
4425 IADDR UNUSED pc = abuf->addr;
4426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4427
4428 {
4429 BI tmp_do_op;
4430 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4431 if (tmp_do_op) {
4432 {
4433 SI tmp_address;
4434 if (NESI (FLD (f_GRk), 0)) {
4435 {
4436 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4437 {
4438 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4439 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4440 written |= (1 << 6);
4441 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4442 }
4443 }
4444 }
4445 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4446 {
4447 {
4448 SI opval = tmp_address;
4449 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4450 written |= (1 << 7);
4451 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4452 }
4453 frvbf_force_update (current_cpu);
4454 }
4455 }
4456 }
4457 }
4458 }
4459
4460 abuf->written = written;
4461 return vpc;
4462 #undef FLD
4463 }
4464
4465 /* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4466
4467 static SEM_PC
4468 SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4469 {
4470 #define FLD(f) abuf->fields.sfmt_clddfu.f
4471 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4472 int UNUSED written = 0;
4473 IADDR UNUSED pc = abuf->addr;
4474 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4475
4476 {
4477 SI tmp_address;
4478 {
4479 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4480 {
4481 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4482 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4483 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4484 }
4485 }
4486 {
4487 SI opval = tmp_address;
4488 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4489 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4490 }
4491 frvbf_force_update (current_cpu);
4492 }
4493
4494 return vpc;
4495 #undef FLD
4496 }
4497
4498 /* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4499
4500 static SEM_PC
4501 SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4502 {
4503 #define FLD(f) abuf->fields.sfmt_lddcu.f
4504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4505 int UNUSED written = 0;
4506 IADDR UNUSED pc = abuf->addr;
4507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4508
4509 {
4510 SI tmp_address;
4511 {
4512 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4513 {
4514 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4515 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4516 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4517 }
4518 }
4519 {
4520 SI opval = tmp_address;
4521 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4522 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4523 }
4524 frvbf_force_update (current_cpu);
4525 }
4526
4527 return vpc;
4528 #undef FLD
4529 }
4530
4531 /* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4532
4533 static SEM_PC
4534 SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4535 {
4536 #define FLD(f) abuf->fields.sfmt_clddfu.f
4537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4538 int UNUSED written = 0;
4539 IADDR UNUSED pc = abuf->addr;
4540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4541
4542 {
4543 BI tmp_do_op;
4544 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4545 if (tmp_do_op) {
4546 {
4547 SI tmp_address;
4548 {
4549 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4550 {
4551 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4552 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4553 written |= (1 << 6);
4554 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4555 }
4556 }
4557 {
4558 SI opval = tmp_address;
4559 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4560 written |= (1 << 7);
4561 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4562 }
4563 frvbf_force_update (current_cpu);
4564 }
4565 }
4566 }
4567
4568 abuf->written = written;
4569 return vpc;
4570 #undef FLD
4571 }
4572
4573 /* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4574
4575 static SEM_PC
4576 SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4577 {
4578 #define FLD(f) abuf->fields.sfmt_cstdu.f
4579 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4580 int UNUSED written = 0;
4581 IADDR UNUSED pc = abuf->addr;
4582 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4583
4584 {
4585 SI tmp_address;
4586 {
4587 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4588 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4589 }
4590 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4591 {
4592 {
4593 SI opval = tmp_address;
4594 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4595 written |= (1 << 5);
4596 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4597 }
4598 frvbf_force_update (current_cpu);
4599 }
4600 }
4601 }
4602
4603 abuf->written = written;
4604 return vpc;
4605 #undef FLD
4606 }
4607
4608 /* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4609
4610 static SEM_PC
4611 SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4612 {
4613 #define FLD(f) abuf->fields.sfmt_cstdu.f
4614 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4615 int UNUSED written = 0;
4616 IADDR UNUSED pc = abuf->addr;
4617 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4618
4619 {
4620 BI tmp_do_op;
4621 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4622 if (tmp_do_op) {
4623 {
4624 SI tmp_address;
4625 {
4626 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4627 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4628 }
4629 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4630 {
4631 {
4632 SI opval = tmp_address;
4633 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4634 written |= (1 << 6);
4635 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4636 }
4637 frvbf_force_update (current_cpu);
4638 }
4639 }
4640 }
4641 }
4642 }
4643
4644 abuf->written = written;
4645 return vpc;
4646 #undef FLD
4647 }
4648
4649 /* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4650
4651 static SEM_PC
4652 SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4653 {
4654 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4656 int UNUSED written = 0;
4657 IADDR UNUSED pc = abuf->addr;
4658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4659
4660 {
4661 SI tmp_address;
4662 {
4663 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4664 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4665 }
4666 {
4667 SI opval = tmp_address;
4668 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4669 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4670 }
4671 frvbf_force_update (current_cpu);
4672 }
4673
4674 return vpc;
4675 #undef FLD
4676 }
4677
4678 /* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4679
4680 static SEM_PC
4681 SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4682 {
4683 #define FLD(f) abuf->fields.sfmt_stdcu.f
4684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4685 int UNUSED written = 0;
4686 IADDR UNUSED pc = abuf->addr;
4687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4688
4689 {
4690 SI tmp_address;
4691 {
4692 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4693 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4694 }
4695 {
4696 SI opval = tmp_address;
4697 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4698 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4699 }
4700 frvbf_force_update (current_cpu);
4701 }
4702
4703 return vpc;
4704 #undef FLD
4705 }
4706
4707 /* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4708
4709 static SEM_PC
4710 SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4711 {
4712 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4713 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4714 int UNUSED written = 0;
4715 IADDR UNUSED pc = abuf->addr;
4716 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4717
4718 {
4719 BI tmp_do_op;
4720 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4721 if (tmp_do_op) {
4722 {
4723 SI tmp_address;
4724 {
4725 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4726 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4727 }
4728 {
4729 SI opval = tmp_address;
4730 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4731 written |= (1 << 6);
4732 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4733 }
4734 frvbf_force_update (current_cpu);
4735 }
4736 }
4737 }
4738
4739 abuf->written = written;
4740 return vpc;
4741 #undef FLD
4742 }
4743
4744 /* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4745
4746 static SEM_PC
4747 SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4748 {
4749 #define FLD(f) abuf->fields.sfmt_swapi.f
4750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4751 int UNUSED written = 0;
4752 IADDR UNUSED pc = abuf->addr;
4753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4754
4755 {
4756 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4757 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4758 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4759 }
4760
4761 return vpc;
4762 #undef FLD
4763 }
4764
4765 /* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4766
4767 static SEM_PC
4768 SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4769 {
4770 #define FLD(f) abuf->fields.sfmt_swapi.f
4771 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4772 int UNUSED written = 0;
4773 IADDR UNUSED pc = abuf->addr;
4774 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4775
4776 {
4777 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4778 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4779 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4780 }
4781
4782 return vpc;
4783 #undef FLD
4784 }
4785
4786 /* ldi: ldi$pack @($GRi,$d12),$GRk */
4787
4788 static SEM_PC
4789 SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4790 {
4791 #define FLD(f) abuf->fields.sfmt_swapi.f
4792 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4793 int UNUSED written = 0;
4794 IADDR UNUSED pc = abuf->addr;
4795 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4796
4797 {
4798 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4799 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4800 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4801 }
4802
4803 return vpc;
4804 #undef FLD
4805 }
4806
4807 /* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4808
4809 static SEM_PC
4810 SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4811 {
4812 #define FLD(f) abuf->fields.sfmt_swapi.f
4813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4814 int UNUSED written = 0;
4815 IADDR UNUSED pc = abuf->addr;
4816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4817
4818 {
4819 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4820 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4821 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4822 }
4823
4824 return vpc;
4825 #undef FLD
4826 }
4827
4828 /* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4829
4830 static SEM_PC
4831 SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4832 {
4833 #define FLD(f) abuf->fields.sfmt_swapi.f
4834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4835 int UNUSED written = 0;
4836 IADDR UNUSED pc = abuf->addr;
4837 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4838
4839 {
4840 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4841 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4842 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4843 }
4844
4845 return vpc;
4846 #undef FLD
4847 }
4848
4849 /* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
4850
4851 static SEM_PC
4852 SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4853 {
4854 #define FLD(f) abuf->fields.sfmt_ldbfi.f
4855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4856 int UNUSED written = 0;
4857 IADDR UNUSED pc = abuf->addr;
4858 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4859
4860 {
4861 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4862 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4863 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4864 }
4865
4866 return vpc;
4867 #undef FLD
4868 }
4869
4870 /* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
4871
4872 static SEM_PC
4873 SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4874 {
4875 #define FLD(f) abuf->fields.sfmt_ldbfi.f
4876 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4877 int UNUSED written = 0;
4878 IADDR UNUSED pc = abuf->addr;
4879 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4880
4881 {
4882 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4883 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4884 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4885 }
4886
4887 return vpc;
4888 #undef FLD
4889 }
4890
4891 /* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
4892
4893 static SEM_PC
4894 SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4895 {
4896 #define FLD(f) abuf->fields.sfmt_ldbfi.f
4897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4898 int UNUSED written = 0;
4899 IADDR UNUSED pc = abuf->addr;
4900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4901
4902 {
4903 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4904 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4905 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4906 }
4907
4908 return vpc;
4909 #undef FLD
4910 }
4911
4912 /* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
4913
4914 static SEM_PC
4915 SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4916 {
4917 #define FLD(f) abuf->fields.sfmt_swapi.f
4918 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4919 int UNUSED written = 0;
4920 IADDR UNUSED pc = abuf->addr;
4921 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4922
4923 {
4924 BI tmp_do_op;
4925 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
4926 if (tmp_do_op) {
4927 {
4928 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4929 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4930 written |= (1 << 5);
4931 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4932 }
4933 }
4934 }
4935
4936 abuf->written = written;
4937 return vpc;
4938 #undef FLD
4939 }
4940
4941 /* nldubi: nldubi$pack @($GRi,$d12),$GRk */
4942
4943 static SEM_PC
4944 SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4945 {
4946 #define FLD(f) abuf->fields.sfmt_swapi.f
4947 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4948 int UNUSED written = 0;
4949 IADDR UNUSED pc = abuf->addr;
4950 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4951
4952 {
4953 BI tmp_do_op;
4954 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
4955 if (tmp_do_op) {
4956 {
4957 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4958 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4959 written |= (1 << 5);
4960 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4961 }
4962 }
4963 }
4964
4965 abuf->written = written;
4966 return vpc;
4967 #undef FLD
4968 }
4969
4970 /* nldshi: nldshi$pack @($GRi,$d12),$GRk */
4971
4972 static SEM_PC
4973 SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4974 {
4975 #define FLD(f) abuf->fields.sfmt_swapi.f
4976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4977 int UNUSED written = 0;
4978 IADDR UNUSED pc = abuf->addr;
4979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4980
4981 {
4982 BI tmp_do_op;
4983 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
4984 if (tmp_do_op) {
4985 {
4986 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4987 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4988 written |= (1 << 5);
4989 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4990 }
4991 }
4992 }
4993
4994 abuf->written = written;
4995 return vpc;
4996 #undef FLD
4997 }
4998
4999 /* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5000
5001 static SEM_PC
5002 SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5003 {
5004 #define FLD(f) abuf->fields.sfmt_swapi.f
5005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5006 int UNUSED written = 0;
5007 IADDR UNUSED pc = abuf->addr;
5008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5009
5010 {
5011 BI tmp_do_op;
5012 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5013 if (tmp_do_op) {
5014 {
5015 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5016 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5017 written |= (1 << 5);
5018 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5019 }
5020 }
5021 }
5022
5023 abuf->written = written;
5024 return vpc;
5025 #undef FLD
5026 }
5027
5028 /* nldi: nldi$pack @($GRi,$d12),$GRk */
5029
5030 static SEM_PC
5031 SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5032 {
5033 #define FLD(f) abuf->fields.sfmt_swapi.f
5034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5035 int UNUSED written = 0;
5036 IADDR UNUSED pc = abuf->addr;
5037 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5038
5039 {
5040 BI tmp_do_op;
5041 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5042 if (tmp_do_op) {
5043 {
5044 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5045 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5046 written |= (1 << 5);
5047 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5048 }
5049 }
5050 }
5051
5052 abuf->written = written;
5053 return vpc;
5054 #undef FLD
5055 }
5056
5057 /* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5058
5059 static SEM_PC
5060 SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5061 {
5062 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5064 int UNUSED written = 0;
5065 IADDR UNUSED pc = abuf->addr;
5066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5067
5068 {
5069 BI tmp_do_op;
5070 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5071 if (tmp_do_op) {
5072 {
5073 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5074 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5075 written |= (1 << 5);
5076 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5077 }
5078 }
5079 }
5080
5081 abuf->written = written;
5082 return vpc;
5083 #undef FLD
5084 }
5085
5086 /* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5087
5088 static SEM_PC
5089 SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5090 {
5091 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5093 int UNUSED written = 0;
5094 IADDR UNUSED pc = abuf->addr;
5095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5096
5097 {
5098 BI tmp_do_op;
5099 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5100 if (tmp_do_op) {
5101 {
5102 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5103 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5104 written |= (1 << 5);
5105 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5106 }
5107 }
5108 }
5109
5110 abuf->written = written;
5111 return vpc;
5112 #undef FLD
5113 }
5114
5115 /* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5116
5117 static SEM_PC
5118 SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5119 {
5120 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5122 int UNUSED written = 0;
5123 IADDR UNUSED pc = abuf->addr;
5124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5125
5126 {
5127 BI tmp_do_op;
5128 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5129 if (tmp_do_op) {
5130 {
5131 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5132 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5133 written |= (1 << 5);
5134 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5135 }
5136 }
5137 }
5138
5139 abuf->written = written;
5140 return vpc;
5141 #undef FLD
5142 }
5143
5144 /* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5145
5146 static SEM_PC
5147 SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5148 {
5149 #define FLD(f) abuf->fields.sfmt_smuli.f
5150 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5151 int UNUSED written = 0;
5152 IADDR UNUSED pc = abuf->addr;
5153 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5154
5155 {
5156 SI tmp_address;
5157 if (NESI (FLD (f_GRk), 0)) {
5158 {
5159 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5160 {
5161 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5162 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5163 written |= (1 << 4);
5164 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5165 }
5166 }
5167 }
5168 }
5169
5170 abuf->written = written;
5171 return vpc;
5172 #undef FLD
5173 }
5174
5175 /* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5176
5177 static SEM_PC
5178 SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5179 {
5180 #define FLD(f) abuf->fields.sfmt_lddfi.f
5181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5182 int UNUSED written = 0;
5183 IADDR UNUSED pc = abuf->addr;
5184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5185
5186 {
5187 SI tmp_address;
5188 {
5189 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5190 {
5191 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5192 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5193 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5194 }
5195 }
5196 }
5197
5198 return vpc;
5199 #undef FLD
5200 }
5201
5202 /* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5203
5204 static SEM_PC
5205 SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5206 {
5207 #define FLD(f) abuf->fields.sfmt_smuli.f
5208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5209 int UNUSED written = 0;
5210 IADDR UNUSED pc = abuf->addr;
5211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5212
5213 {
5214 SI tmp_address;
5215 {
5216 BI tmp_do_op;
5217 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5218 if (tmp_do_op) {
5219 if (NESI (FLD (f_GRk), 0)) {
5220 {
5221 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5222 {
5223 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5224 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5225 written |= (1 << 5);
5226 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5227 }
5228 }
5229 }
5230 }
5231 }
5232 }
5233
5234 abuf->written = written;
5235 return vpc;
5236 #undef FLD
5237 }
5238
5239 /* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5240
5241 static SEM_PC
5242 SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5243 {
5244 #define FLD(f) abuf->fields.sfmt_lddfi.f
5245 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5246 int UNUSED written = 0;
5247 IADDR UNUSED pc = abuf->addr;
5248 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5249
5250 {
5251 SI tmp_address;
5252 {
5253 BI tmp_do_op;
5254 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5255 if (tmp_do_op) {
5256 {
5257 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5258 {
5259 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5260 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5261 written |= (1 << 5);
5262 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5263 }
5264 }
5265 }
5266 }
5267 }
5268
5269 abuf->written = written;
5270 return vpc;
5271 #undef FLD
5272 }
5273
5274 /* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5275
5276 static SEM_PC
5277 SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5278 {
5279 #define FLD(f) abuf->fields.sfmt_stdi.f
5280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5281 int UNUSED written = 0;
5282 IADDR UNUSED pc = abuf->addr;
5283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5284
5285 {
5286 SI tmp_address;
5287 {
5288 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5289 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5290 }
5291 }
5292
5293 return vpc;
5294 #undef FLD
5295 }
5296
5297 /* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5298
5299 static SEM_PC
5300 SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5301 {
5302 #define FLD(f) abuf->fields.sfmt_stdfi.f
5303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5304 int UNUSED written = 0;
5305 IADDR UNUSED pc = abuf->addr;
5306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5307
5308 {
5309 SI tmp_address;
5310 {
5311 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5312 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5313 }
5314 }
5315
5316 return vpc;
5317 #undef FLD
5318 }
5319
5320 /* nldqi: nldqi$pack @($GRi,$d12),$GRk */
5321
5322 static SEM_PC
5323 SEM_FN_NAME (frvbf,nldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5324 {
5325 #define FLD(f) abuf->fields.sfmt_stdi.f
5326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5327 int UNUSED written = 0;
5328 IADDR UNUSED pc = abuf->addr;
5329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5330
5331 {
5332 SI tmp_address;
5333 {
5334 BI tmp_do_op;
5335 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 6, 0);
5336 if (tmp_do_op) {
5337 {
5338 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5339 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5340 }
5341 }
5342 }
5343 }
5344
5345 return vpc;
5346 #undef FLD
5347 }
5348
5349 /* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5350
5351 static SEM_PC
5352 SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5353 {
5354 #define FLD(f) abuf->fields.sfmt_stdfi.f
5355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5356 int UNUSED written = 0;
5357 IADDR UNUSED pc = abuf->addr;
5358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5359
5360 {
5361 SI tmp_address;
5362 {
5363 BI tmp_do_op;
5364 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5365 if (tmp_do_op) {
5366 {
5367 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5368 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5369 }
5370 }
5371 }
5372 }
5373
5374 return vpc;
5375 #undef FLD
5376 }
5377
5378 /* stb: stb$pack $GRk,@($GRi,$GRj) */
5379
5380 static SEM_PC
5381 SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5382 {
5383 #define FLD(f) abuf->fields.sfmt_cswap.f
5384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5385 int UNUSED written = 0;
5386 IADDR UNUSED pc = abuf->addr;
5387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5388
5389 frvbf_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)));
5390
5391 return vpc;
5392 #undef FLD
5393 }
5394
5395 /* sth: sth$pack $GRk,@($GRi,$GRj) */
5396
5397 static SEM_PC
5398 SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5399 {
5400 #define FLD(f) abuf->fields.sfmt_cswap.f
5401 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5402 int UNUSED written = 0;
5403 IADDR UNUSED pc = abuf->addr;
5404 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5405
5406 frvbf_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)));
5407
5408 return vpc;
5409 #undef FLD
5410 }
5411
5412 /* st: st$pack $GRk,@($GRi,$GRj) */
5413
5414 static SEM_PC
5415 SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5416 {
5417 #define FLD(f) abuf->fields.sfmt_cswap.f
5418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5419 int UNUSED written = 0;
5420 IADDR UNUSED pc = abuf->addr;
5421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5422
5423 frvbf_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)));
5424
5425 return vpc;
5426 #undef FLD
5427 }
5428
5429 /* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5430
5431 static SEM_PC
5432 SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5433 {
5434 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5435 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5436 int UNUSED written = 0;
5437 IADDR UNUSED pc = abuf->addr;
5438 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5439
5440 frvbf_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)));
5441
5442 return vpc;
5443 #undef FLD
5444 }
5445
5446 /* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5447
5448 static SEM_PC
5449 SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5450 {
5451 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5453 int UNUSED written = 0;
5454 IADDR UNUSED pc = abuf->addr;
5455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5456
5457 frvbf_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)));
5458
5459 return vpc;
5460 #undef FLD
5461 }
5462
5463 /* stf: stf$pack $FRintk,@($GRi,$GRj) */
5464
5465 static SEM_PC
5466 SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5467 {
5468 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5469 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5470 int UNUSED written = 0;
5471 IADDR UNUSED pc = abuf->addr;
5472 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5473
5474 frvbf_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)));
5475
5476 return vpc;
5477 #undef FLD
5478 }
5479
5480 /* stc: stc$pack $CPRk,@($GRi,$GRj) */
5481
5482 static SEM_PC
5483 SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5484 {
5485 #define FLD(f) abuf->fields.sfmt_stcu.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 frvbf_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)]));
5492
5493 return vpc;
5494 #undef FLD
5495 }
5496
5497 /* rstb: rstb$pack $GRk,@($GRi,$GRj) */
5498
5499 static SEM_PC
5500 SEM_FN_NAME (frvbf,rstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5501 {
5502 #define FLD(f) abuf->fields.sfmt_cswap.f
5503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5504 int UNUSED written = 0;
5505 IADDR UNUSED pc = abuf->addr;
5506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5507
5508 {
5509 SI tmp_address;
5510 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5511 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5512 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 1, 0);
5513 }
5514
5515 return vpc;
5516 #undef FLD
5517 }
5518
5519 /* rsth: rsth$pack $GRk,@($GRi,$GRj) */
5520
5521 static SEM_PC
5522 SEM_FN_NAME (frvbf,rsth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5523 {
5524 #define FLD(f) abuf->fields.sfmt_cswap.f
5525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5526 int UNUSED written = 0;
5527 IADDR UNUSED pc = abuf->addr;
5528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5529
5530 {
5531 SI tmp_address;
5532 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5533 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5534 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 2, 0);
5535 }
5536
5537 return vpc;
5538 #undef FLD
5539 }
5540
5541 /* rst: rst$pack $GRk,@($GRi,$GRj) */
5542
5543 static SEM_PC
5544 SEM_FN_NAME (frvbf,rst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5545 {
5546 #define FLD(f) abuf->fields.sfmt_cswap.f
5547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5548 int UNUSED written = 0;
5549 IADDR UNUSED pc = abuf->addr;
5550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5551
5552 {
5553 SI tmp_address;
5554 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5555 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5556 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 4, 0);
5557 }
5558
5559 return vpc;
5560 #undef FLD
5561 }
5562
5563 /* rstbf: rstbf$pack $FRintk,@($GRi,$GRj) */
5564
5565 static SEM_PC
5566 SEM_FN_NAME (frvbf,rstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5567 {
5568 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5569 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5570 int UNUSED written = 0;
5571 IADDR UNUSED pc = abuf->addr;
5572 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5573
5574 {
5575 SI tmp_address;
5576 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5577 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5578 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 1, 1);
5579 }
5580
5581 return vpc;
5582 #undef FLD
5583 }
5584
5585 /* rsthf: rsthf$pack $FRintk,@($GRi,$GRj) */
5586
5587 static SEM_PC
5588 SEM_FN_NAME (frvbf,rsthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5589 {
5590 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5591 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5592 int UNUSED written = 0;
5593 IADDR UNUSED pc = abuf->addr;
5594 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5595
5596 {
5597 SI tmp_address;
5598 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5599 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5600 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 2, 1);
5601 }
5602
5603 return vpc;
5604 #undef FLD
5605 }
5606
5607 /* rstf: rstf$pack $FRintk,@($GRi,$GRj) */
5608
5609 static SEM_PC
5610 SEM_FN_NAME (frvbf,rstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5611 {
5612 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5614 int UNUSED written = 0;
5615 IADDR UNUSED pc = abuf->addr;
5616 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5617
5618 {
5619 SI tmp_address;
5620 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5621 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5622 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 4, 1);
5623 }
5624
5625 return vpc;
5626 #undef FLD
5627 }
5628
5629 /* std: std$pack $GRk,@($GRi,$GRj) */
5630
5631 static SEM_PC
5632 SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5633 {
5634 #define FLD(f) abuf->fields.sfmt_cstdu.f
5635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5636 int UNUSED written = 0;
5637 IADDR UNUSED pc = abuf->addr;
5638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5639
5640 {
5641 SI tmp_address;
5642 {
5643 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5644 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5645 }
5646 }
5647
5648 return vpc;
5649 #undef FLD
5650 }
5651
5652 /* stdf: stdf$pack $FRk,@($GRi,$GRj) */
5653
5654 static SEM_PC
5655 SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5656 {
5657 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5659 int UNUSED written = 0;
5660 IADDR UNUSED pc = abuf->addr;
5661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5662
5663 {
5664 SI tmp_address;
5665 {
5666 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5667 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5668 }
5669 }
5670
5671 return vpc;
5672 #undef FLD
5673 }
5674
5675 /* stdc: stdc$pack $CPRk,@($GRi,$GRj) */
5676
5677 static SEM_PC
5678 SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5679 {
5680 #define FLD(f) abuf->fields.sfmt_stdcu.f
5681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5682 int UNUSED written = 0;
5683 IADDR UNUSED pc = abuf->addr;
5684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5685
5686 {
5687 SI tmp_address;
5688 {
5689 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5690 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5691 }
5692 }
5693
5694 return vpc;
5695 #undef FLD
5696 }
5697
5698 /* rstd: rstd$pack $GRk,@($GRi,$GRj) */
5699
5700 static SEM_PC
5701 SEM_FN_NAME (frvbf,rstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5702 {
5703 #define FLD(f) abuf->fields.sfmt_cstdu.f
5704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5705 int UNUSED written = 0;
5706 IADDR UNUSED pc = abuf->addr;
5707 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5708
5709 {
5710 SI tmp_address;
5711 {
5712 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5713 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5714 }
5715 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 8, 0);
5716 }
5717
5718 return vpc;
5719 #undef FLD
5720 }
5721
5722 /* rstdf: rstdf$pack $FRk,@($GRi,$GRj) */
5723
5724 static SEM_PC
5725 SEM_FN_NAME (frvbf,rstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5726 {
5727 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5729 int UNUSED written = 0;
5730 IADDR UNUSED pc = abuf->addr;
5731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5732
5733 {
5734 SI tmp_address;
5735 {
5736 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5737 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5738 }
5739 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 8, 1);
5740 }
5741
5742 return vpc;
5743 #undef FLD
5744 }
5745
5746 /* stq: stq$pack $GRk,@($GRi,$GRj) */
5747
5748 static SEM_PC
5749 SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5750 {
5751 #define FLD(f) abuf->fields.sfmt_smulcc.f
5752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5753 int UNUSED written = 0;
5754 IADDR UNUSED pc = abuf->addr;
5755 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5756
5757 {
5758 SI tmp_address;
5759 {
5760 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5761 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5762 }
5763 }
5764
5765 return vpc;
5766 #undef FLD
5767 }
5768
5769 /* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5770
5771 static SEM_PC
5772 SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5773 {
5774 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5776 int UNUSED written = 0;
5777 IADDR UNUSED pc = abuf->addr;
5778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5779
5780 {
5781 SI tmp_address;
5782 {
5783 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5784 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5785 }
5786 }
5787
5788 return vpc;
5789 #undef FLD
5790 }
5791
5792 /* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5793
5794 static SEM_PC
5795 SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5796 {
5797 #define FLD(f) abuf->fields.sfmt_stdcu.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 SI tmp_address;
5805 {
5806 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5807 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5808 }
5809 }
5810
5811 return vpc;
5812 #undef FLD
5813 }
5814
5815 /* rstq: rstq$pack $GRk,@($GRi,$GRj) */
5816
5817 static SEM_PC
5818 SEM_FN_NAME (frvbf,rstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5819 {
5820 #define FLD(f) abuf->fields.sfmt_smulcc.f
5821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5822 int UNUSED written = 0;
5823 IADDR UNUSED pc = abuf->addr;
5824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5825
5826 {
5827 SI tmp_address;
5828 {
5829 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5830 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5831 }
5832 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 16, 0);
5833 }
5834
5835 return vpc;
5836 #undef FLD
5837 }
5838
5839 /* rstqf: rstqf$pack $FRintk,@($GRi,$GRj) */
5840
5841 static SEM_PC
5842 SEM_FN_NAME (frvbf,rstqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5843 {
5844 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5845 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5846 int UNUSED written = 0;
5847 IADDR UNUSED pc = abuf->addr;
5848 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5849
5850 {
5851 SI tmp_address;
5852 {
5853 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5854 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5855 }
5856 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 16, 1);
5857 }
5858
5859 return vpc;
5860 #undef FLD
5861 }
5862
5863 /* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5864
5865 static SEM_PC
5866 SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5867 {
5868 #define FLD(f) abuf->fields.sfmt_cstbu.f
5869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5870 int UNUSED written = 0;
5871 IADDR UNUSED pc = abuf->addr;
5872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5873
5874 {
5875 USI tmp_address;
5876 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5877 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5878 {
5879 SI opval = tmp_address;
5880 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5881 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5882 }
5883 }
5884
5885 return vpc;
5886 #undef FLD
5887 }
5888
5889 /* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5890
5891 static SEM_PC
5892 SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5893 {
5894 #define FLD(f) abuf->fields.sfmt_cstbu.f
5895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5896 int UNUSED written = 0;
5897 IADDR UNUSED pc = abuf->addr;
5898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5899
5900 {
5901 USI tmp_address;
5902 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5903 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5904 {
5905 SI opval = tmp_address;
5906 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5907 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5908 }
5909 }
5910
5911 return vpc;
5912 #undef FLD
5913 }
5914
5915 /* stu: stu$pack $GRk,@($GRi,$GRj) */
5916
5917 static SEM_PC
5918 SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5919 {
5920 #define FLD(f) abuf->fields.sfmt_cstbu.f
5921 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5922 int UNUSED written = 0;
5923 IADDR UNUSED pc = abuf->addr;
5924 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5925
5926 {
5927 USI tmp_address;
5928 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5929 frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5930 {
5931 SI opval = tmp_address;
5932 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5933 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5934 }
5935 }
5936
5937 return vpc;
5938 #undef FLD
5939 }
5940
5941 /* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5942
5943 static SEM_PC
5944 SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5945 {
5946 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5947 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5948 int UNUSED written = 0;
5949 IADDR UNUSED pc = abuf->addr;
5950 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5951
5952 {
5953 USI tmp_address;
5954 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5955 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5956 {
5957 SI opval = tmp_address;
5958 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5959 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5960 }
5961 }
5962
5963 return vpc;
5964 #undef FLD
5965 }
5966
5967 /* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5968
5969 static SEM_PC
5970 SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5971 {
5972 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5973 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5974 int UNUSED written = 0;
5975 IADDR UNUSED pc = abuf->addr;
5976 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5977
5978 {
5979 USI tmp_address;
5980 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5981 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5982 {
5983 SI opval = tmp_address;
5984 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5986 }
5987 }
5988
5989 return vpc;
5990 #undef FLD
5991 }
5992
5993 /* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5994
5995 static SEM_PC
5996 SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5997 {
5998 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6000 int UNUSED written = 0;
6001 IADDR UNUSED pc = abuf->addr;
6002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6003
6004 {
6005 USI tmp_address;
6006 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6007 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
6008 {
6009 SI opval = tmp_address;
6010 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6011 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6012 }
6013 }
6014
6015 return vpc;
6016 #undef FLD
6017 }
6018
6019 /* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
6020
6021 static SEM_PC
6022 SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6023 {
6024 #define FLD(f) abuf->fields.sfmt_stcu.f
6025 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6026 int UNUSED written = 0;
6027 IADDR UNUSED pc = abuf->addr;
6028 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6029
6030 {
6031 USI tmp_address;
6032 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6033 frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
6034 {
6035 SI opval = tmp_address;
6036 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6037 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6038 }
6039 }
6040
6041 return vpc;
6042 #undef FLD
6043 }
6044
6045 /* stdu: stdu$pack $GRk,@($GRi,$GRj) */
6046
6047 static SEM_PC
6048 SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6049 {
6050 #define FLD(f) abuf->fields.sfmt_cstdu.f
6051 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6052 int UNUSED written = 0;
6053 IADDR UNUSED pc = abuf->addr;
6054 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6055
6056 {
6057 SI tmp_address;
6058 {
6059 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6060 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6061 }
6062 {
6063 SI opval = tmp_address;
6064 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6065 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6066 }
6067 }
6068
6069 return vpc;
6070 #undef FLD
6071 }
6072
6073 /* stdfu: stdfu$pack $FRk,@($GRi,$GRj) */
6074
6075 static SEM_PC
6076 SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6077 {
6078 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6079 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6080 int UNUSED written = 0;
6081 IADDR UNUSED pc = abuf->addr;
6082 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6083
6084 {
6085 SI tmp_address;
6086 {
6087 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6088 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6089 }
6090 {
6091 SI opval = tmp_address;
6092 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6093 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6094 }
6095 }
6096
6097 return vpc;
6098 #undef FLD
6099 }
6100
6101 /* stdcu: stdcu$pack $CPRk,@($GRi,$GRj) */
6102
6103 static SEM_PC
6104 SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6105 {
6106 #define FLD(f) abuf->fields.sfmt_stdcu.f
6107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6108 int UNUSED written = 0;
6109 IADDR UNUSED pc = abuf->addr;
6110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6111
6112 {
6113 SI tmp_address;
6114 {
6115 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6116 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6117 }
6118 {
6119 SI opval = tmp_address;
6120 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6121 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6122 }
6123 }
6124
6125 return vpc;
6126 #undef FLD
6127 }
6128
6129 /* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6130
6131 static SEM_PC
6132 SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6133 {
6134 #define FLD(f) abuf->fields.sfmt_cstdu.f
6135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6136 int UNUSED written = 0;
6137 IADDR UNUSED pc = abuf->addr;
6138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6139
6140 {
6141 SI tmp_address;
6142 {
6143 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6144 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6145 }
6146 {
6147 SI opval = tmp_address;
6148 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6149 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6150 }
6151 }
6152
6153 return vpc;
6154 #undef FLD
6155 }
6156
6157 /* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6158
6159 static SEM_PC
6160 SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6161 {
6162 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6163 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6164 int UNUSED written = 0;
6165 IADDR UNUSED pc = abuf->addr;
6166 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6167
6168 {
6169 SI tmp_address;
6170 {
6171 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6172 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6173 }
6174 {
6175 SI opval = tmp_address;
6176 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6177 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6178 }
6179 }
6180
6181 return vpc;
6182 #undef FLD
6183 }
6184
6185 /* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6186
6187 static SEM_PC
6188 SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6189 {
6190 #define FLD(f) abuf->fields.sfmt_stdcu.f
6191 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6192 int UNUSED written = 0;
6193 IADDR UNUSED pc = abuf->addr;
6194 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6195
6196 {
6197 SI tmp_address;
6198 {
6199 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6200 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6201 }
6202 {
6203 SI opval = tmp_address;
6204 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6205 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6206 }
6207 }
6208
6209 return vpc;
6210 #undef FLD
6211 }
6212
6213 /* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6214
6215 static SEM_PC
6216 SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6217 {
6218 #define FLD(f) abuf->fields.sfmt_cswap.f
6219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6220 int UNUSED written = 0;
6221 IADDR UNUSED pc = abuf->addr;
6222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6223
6224 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6225 {
6226 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6227 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6228 written |= (1 << 5);
6229 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6230 }
6231 }
6232
6233 abuf->written = written;
6234 return vpc;
6235 #undef FLD
6236 }
6237
6238 /* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6239
6240 static SEM_PC
6241 SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6242 {
6243 #define FLD(f) abuf->fields.sfmt_cswap.f
6244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6245 int UNUSED written = 0;
6246 IADDR UNUSED pc = abuf->addr;
6247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6248
6249 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6250 {
6251 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6252 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6253 written |= (1 << 5);
6254 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6255 }
6256 }
6257
6258 abuf->written = written;
6259 return vpc;
6260 #undef FLD
6261 }
6262
6263 /* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6264
6265 static SEM_PC
6266 SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6267 {
6268 #define FLD(f) abuf->fields.sfmt_cswap.f
6269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6270 int UNUSED written = 0;
6271 IADDR UNUSED pc = abuf->addr;
6272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6273
6274 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6275 {
6276 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6277 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6278 written |= (1 << 5);
6279 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6280 }
6281 }
6282
6283 abuf->written = written;
6284 return vpc;
6285 #undef FLD
6286 }
6287
6288 /* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6289
6290 static SEM_PC
6291 SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6292 {
6293 #define FLD(f) abuf->fields.sfmt_cswap.f
6294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6295 int UNUSED written = 0;
6296 IADDR UNUSED pc = abuf->addr;
6297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6298
6299 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6300 {
6301 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6302 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6303 written |= (1 << 5);
6304 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6305 }
6306 }
6307
6308 abuf->written = written;
6309 return vpc;
6310 #undef FLD
6311 }
6312
6313 /* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6314
6315 static SEM_PC
6316 SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6317 {
6318 #define FLD(f) abuf->fields.sfmt_cswap.f
6319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6320 int UNUSED written = 0;
6321 IADDR UNUSED pc = abuf->addr;
6322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6323
6324 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6325 {
6326 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6327 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6328 written |= (1 << 5);
6329 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6330 }
6331 }
6332
6333 abuf->written = written;
6334 return vpc;
6335 #undef FLD
6336 }
6337
6338 /* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6339
6340 static SEM_PC
6341 SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6342 {
6343 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6345 int UNUSED written = 0;
6346 IADDR UNUSED pc = abuf->addr;
6347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6348
6349 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6350 {
6351 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6352 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6353 written |= (1 << 5);
6354 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6355 }
6356 }
6357
6358 abuf->written = written;
6359 return vpc;
6360 #undef FLD
6361 }
6362
6363 /* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6364
6365 static SEM_PC
6366 SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6367 {
6368 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6369 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6370 int UNUSED written = 0;
6371 IADDR UNUSED pc = abuf->addr;
6372 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6373
6374 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6375 {
6376 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6377 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6378 written |= (1 << 5);
6379 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6380 }
6381 }
6382
6383 abuf->written = written;
6384 return vpc;
6385 #undef FLD
6386 }
6387
6388 /* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6389
6390 static SEM_PC
6391 SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6392 {
6393 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6395 int UNUSED written = 0;
6396 IADDR UNUSED pc = abuf->addr;
6397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6398
6399 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6400 {
6401 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6402 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6403 written |= (1 << 5);
6404 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6405 }
6406 }
6407
6408 abuf->written = written;
6409 return vpc;
6410 #undef FLD
6411 }
6412
6413 /* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6414
6415 static SEM_PC
6416 SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6417 {
6418 #define FLD(f) abuf->fields.sfmt_clddu.f
6419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6420 int UNUSED written = 0;
6421 IADDR UNUSED pc = abuf->addr;
6422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6423
6424 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6425 {
6426 SI tmp_address;
6427 if (NESI (FLD (f_GRk), 0)) {
6428 {
6429 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6430 {
6431 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6432 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6433 written |= (1 << 6);
6434 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6435 }
6436 }
6437 }
6438 }
6439 }
6440
6441 abuf->written = written;
6442 return vpc;
6443 #undef FLD
6444 }
6445
6446 /* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6447
6448 static SEM_PC
6449 SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6450 {
6451 #define FLD(f) abuf->fields.sfmt_clddfu.f
6452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6453 int UNUSED written = 0;
6454 IADDR UNUSED pc = abuf->addr;
6455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6456
6457 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6458 {
6459 SI tmp_address;
6460 {
6461 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6462 {
6463 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6464 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6465 written |= (1 << 5);
6466 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6467 }
6468 }
6469 }
6470 }
6471
6472 abuf->written = written;
6473 return vpc;
6474 #undef FLD
6475 }
6476
6477 /* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6478
6479 static SEM_PC
6480 SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6481 {
6482 #define FLD(f) abuf->fields.sfmt_cswap.f
6483 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6484 int UNUSED written = 0;
6485 IADDR UNUSED pc = abuf->addr;
6486 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6487
6488 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6489 {
6490 SI tmp_address;
6491 {
6492 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6493 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6494 }
6495 }
6496 }
6497
6498 return vpc;
6499 #undef FLD
6500 }
6501
6502 /* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6503
6504 static SEM_PC
6505 SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6506 {
6507 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6509 int UNUSED written = 0;
6510 IADDR UNUSED pc = abuf->addr;
6511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6512
6513 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6514 {
6515 SI tmp_address;
6516 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6517 {
6518 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6519 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6520 written |= (1 << 8);
6521 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6522 }
6523 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6524 {
6525 SI opval = tmp_address;
6526 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6527 written |= (1 << 7);
6528 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6529 }
6530 }
6531 }
6532 }
6533
6534 abuf->written = written;
6535 return vpc;
6536 #undef FLD
6537 }
6538
6539 /* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6540
6541 static SEM_PC
6542 SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6543 {
6544 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6545 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6546 int UNUSED written = 0;
6547 IADDR UNUSED pc = abuf->addr;
6548 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6549
6550 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6551 {
6552 SI tmp_address;
6553 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6554 {
6555 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6556 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6557 written |= (1 << 8);
6558 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6559 }
6560 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6561 {
6562 SI opval = tmp_address;
6563 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6564 written |= (1 << 7);
6565 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6566 }
6567 }
6568 }
6569 }
6570
6571 abuf->written = written;
6572 return vpc;
6573 #undef FLD
6574 }
6575
6576 /* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6577
6578 static SEM_PC
6579 SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6580 {
6581 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6582 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6583 int UNUSED written = 0;
6584 IADDR UNUSED pc = abuf->addr;
6585 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6586
6587 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6588 {
6589 SI tmp_address;
6590 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6591 {
6592 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6593 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6594 written |= (1 << 8);
6595 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6596 }
6597 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6598 {
6599 SI opval = tmp_address;
6600 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6601 written |= (1 << 7);
6602 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6603 }
6604 }
6605 }
6606 }
6607
6608 abuf->written = written;
6609 return vpc;
6610 #undef FLD
6611 }
6612
6613 /* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6614
6615 static SEM_PC
6616 SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6617 {
6618 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6619 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6620 int UNUSED written = 0;
6621 IADDR UNUSED pc = abuf->addr;
6622 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6623
6624 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6625 {
6626 SI tmp_address;
6627 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6628 {
6629 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6630 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6631 written |= (1 << 8);
6632 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6633 }
6634 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6635 {
6636 SI opval = tmp_address;
6637 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6638 written |= (1 << 7);
6639 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6640 }
6641 }
6642 }
6643 }
6644
6645 abuf->written = written;
6646 return vpc;
6647 #undef FLD
6648 }
6649
6650 /* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6651
6652 static SEM_PC
6653 SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6654 {
6655 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6657 int UNUSED written = 0;
6658 IADDR UNUSED pc = abuf->addr;
6659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6660
6661 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6662 {
6663 SI tmp_address;
6664 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6665 {
6666 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6667 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6668 written |= (1 << 8);
6669 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6670 }
6671 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6672 {
6673 SI opval = tmp_address;
6674 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6675 written |= (1 << 7);
6676 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6677 }
6678 }
6679 }
6680 }
6681
6682 abuf->written = written;
6683 return vpc;
6684 #undef FLD
6685 }
6686
6687 /* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6688
6689 static SEM_PC
6690 SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6691 {
6692 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6694 int UNUSED written = 0;
6695 IADDR UNUSED pc = abuf->addr;
6696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6697
6698 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6699 {
6700 SI tmp_address;
6701 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6702 {
6703 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6704 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6705 written |= (1 << 5);
6706 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6707 }
6708 {
6709 SI opval = tmp_address;
6710 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6711 written |= (1 << 6);
6712 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6713 }
6714 }
6715 }
6716
6717 abuf->written = written;
6718 return vpc;
6719 #undef FLD
6720 }
6721
6722 /* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6723
6724 static SEM_PC
6725 SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6726 {
6727 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6729 int UNUSED written = 0;
6730 IADDR UNUSED pc = abuf->addr;
6731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6732
6733 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6734 {
6735 SI tmp_address;
6736 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6737 {
6738 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6739 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6740 written |= (1 << 5);
6741 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6742 }
6743 {
6744 SI opval = tmp_address;
6745 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6746 written |= (1 << 6);
6747 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6748 }
6749 }
6750 }
6751
6752 abuf->written = written;
6753 return vpc;
6754 #undef FLD
6755 }
6756
6757 /* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6758
6759 static SEM_PC
6760 SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6761 {
6762 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6763 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6764 int UNUSED written = 0;
6765 IADDR UNUSED pc = abuf->addr;
6766 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6767
6768 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6769 {
6770 SI tmp_address;
6771 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6772 {
6773 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6774 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6775 written |= (1 << 5);
6776 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6777 }
6778 {
6779 SI opval = tmp_address;
6780 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6781 written |= (1 << 6);
6782 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6783 }
6784 }
6785 }
6786
6787 abuf->written = written;
6788 return vpc;
6789 #undef FLD
6790 }
6791
6792 /* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6793
6794 static SEM_PC
6795 SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6796 {
6797 #define FLD(f) abuf->fields.sfmt_clddu.f
6798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6799 int UNUSED written = 0;
6800 IADDR UNUSED pc = abuf->addr;
6801 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6802
6803 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6804 {
6805 SI tmp_address;
6806 if (NESI (FLD (f_GRk), 0)) {
6807 {
6808 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6809 {
6810 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6811 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6812 written |= (1 << 7);
6813 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6814 }
6815 }
6816 }
6817 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6818 {
6819 SI opval = tmp_address;
6820 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6821 written |= (1 << 8);
6822 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6823 }
6824 }
6825 }
6826 }
6827
6828 abuf->written = written;
6829 return vpc;
6830 #undef FLD
6831 }
6832
6833 /* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6834
6835 static SEM_PC
6836 SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6837 {
6838 #define FLD(f) abuf->fields.sfmt_clddfu.f
6839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6840 int UNUSED written = 0;
6841 IADDR UNUSED pc = abuf->addr;
6842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6843
6844 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6845 {
6846 SI tmp_address;
6847 {
6848 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6849 {
6850 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6851 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6852 written |= (1 << 5);
6853 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6854 }
6855 }
6856 {
6857 SI opval = tmp_address;
6858 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6859 written |= (1 << 6);
6860 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6861 }
6862 }
6863 }
6864
6865 abuf->written = written;
6866 return vpc;
6867 #undef FLD
6868 }
6869
6870 /* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6871
6872 static SEM_PC
6873 SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6874 {
6875 #define FLD(f) abuf->fields.sfmt_cstdu.f
6876 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6877 int UNUSED written = 0;
6878 IADDR UNUSED pc = abuf->addr;
6879 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6880
6881 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6882 {
6883 SI tmp_address;
6884 {
6885 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6886 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6887 }
6888 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6889 {
6890 SI opval = tmp_address;
6891 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6892 written |= (1 << 7);
6893 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6894 }
6895 }
6896 }
6897 }
6898
6899 abuf->written = written;
6900 return vpc;
6901 #undef FLD
6902 }
6903
6904 /* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6905
6906 static SEM_PC
6907 SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6908 {
6909 #define FLD(f) abuf->fields.sfmt_cswap.f
6910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6911 int UNUSED written = 0;
6912 IADDR UNUSED pc = abuf->addr;
6913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6914
6915 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6916 frvbf_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)));
6917 }
6918
6919 return vpc;
6920 #undef FLD
6921 }
6922
6923 /* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6924
6925 static SEM_PC
6926 SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6927 {
6928 #define FLD(f) abuf->fields.sfmt_cswap.f
6929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6930 int UNUSED written = 0;
6931 IADDR UNUSED pc = abuf->addr;
6932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6933
6934 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6935 frvbf_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)));
6936 }
6937
6938 return vpc;
6939 #undef FLD
6940 }
6941
6942 /* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6943
6944 static SEM_PC
6945 SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6946 {
6947 #define FLD(f) abuf->fields.sfmt_cswap.f
6948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6949 int UNUSED written = 0;
6950 IADDR UNUSED pc = abuf->addr;
6951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6952
6953 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6954 frvbf_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)));
6955 }
6956
6957 return vpc;
6958 #undef FLD
6959 }
6960
6961 /* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6962
6963 static SEM_PC
6964 SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6965 {
6966 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6967 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6968 int UNUSED written = 0;
6969 IADDR UNUSED pc = abuf->addr;
6970 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6971
6972 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6973 frvbf_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)));
6974 }
6975
6976 return vpc;
6977 #undef FLD
6978 }
6979
6980 /* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6981
6982 static SEM_PC
6983 SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6984 {
6985 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6987 int UNUSED written = 0;
6988 IADDR UNUSED pc = abuf->addr;
6989 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6990
6991 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6992 frvbf_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)));
6993 }
6994
6995 return vpc;
6996 #undef FLD
6997 }
6998
6999 /* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7000
7001 static SEM_PC
7002 SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7003 {
7004 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7006 int UNUSED written = 0;
7007 IADDR UNUSED pc = abuf->addr;
7008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7009
7010 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7011 frvbf_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)));
7012 }
7013
7014 return vpc;
7015 #undef FLD
7016 }
7017
7018 /* cstd: cstd$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7019
7020 static SEM_PC
7021 SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7022 {
7023 #define FLD(f) abuf->fields.sfmt_cstdu.f
7024 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7025 int UNUSED written = 0;
7026 IADDR UNUSED pc = abuf->addr;
7027 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7028
7029 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7030 {
7031 SI tmp_address;
7032 {
7033 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7034 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7035 }
7036 }
7037 }
7038
7039 return vpc;
7040 #undef FLD
7041 }
7042
7043 /* cstdf: cstdf$pack $FRk,@($GRi,$GRj),$CCi,$cond */
7044
7045 static SEM_PC
7046 SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7047 {
7048 #define FLD(f) abuf->fields.sfmt_cstdfu.f
7049 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7050 int UNUSED written = 0;
7051 IADDR UNUSED pc = abuf->addr;
7052 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7053
7054 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7055 {
7056 SI tmp_address;
7057 {
7058 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7059 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7060 }
7061 }
7062 }
7063
7064 return vpc;
7065 #undef FLD
7066 }
7067
7068 /* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7069
7070 static SEM_PC
7071 SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7072 {
7073 #define FLD(f) abuf->fields.sfmt_cswap.f
7074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7075 int UNUSED written = 0;
7076 IADDR UNUSED pc = abuf->addr;
7077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7078
7079 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7080 {
7081 SI tmp_address;
7082 {
7083 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7084 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7085 }
7086 }
7087 }
7088
7089 return vpc;
7090 #undef FLD
7091 }
7092
7093 /* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7094
7095 static SEM_PC
7096 SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7097 {
7098 #define FLD(f) abuf->fields.sfmt_cstbu.f
7099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7100 int UNUSED written = 0;
7101 IADDR UNUSED pc = abuf->addr;
7102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7103
7104 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7105 {
7106 SI tmp_address;
7107 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7108 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7109 {
7110 SI opval = tmp_address;
7111 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7112 written |= (1 << 6);
7113 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7114 }
7115 }
7116 }
7117
7118 abuf->written = written;
7119 return vpc;
7120 #undef FLD
7121 }
7122
7123 /* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7124
7125 static SEM_PC
7126 SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7127 {
7128 #define FLD(f) abuf->fields.sfmt_cstbu.f
7129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7130 int UNUSED written = 0;
7131 IADDR UNUSED pc = abuf->addr;
7132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7133
7134 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7135 {
7136 SI tmp_address;
7137 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7138 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7139 {
7140 SI opval = tmp_address;
7141 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7142 written |= (1 << 6);
7143 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7144 }
7145 }
7146 }
7147
7148 abuf->written = written;
7149 return vpc;
7150 #undef FLD
7151 }
7152
7153 /* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7154
7155 static SEM_PC
7156 SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7157 {
7158 #define FLD(f) abuf->fields.sfmt_cstbu.f
7159 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7160 int UNUSED written = 0;
7161 IADDR UNUSED pc = abuf->addr;
7162 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7163
7164 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7165 {
7166 SI tmp_address;
7167 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7168 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7169 {
7170 SI opval = tmp_address;
7171 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7172 written |= (1 << 6);
7173 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7174 }
7175 }
7176 }
7177
7178 abuf->written = written;
7179 return vpc;
7180 #undef FLD
7181 }
7182
7183 /* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7184
7185 static SEM_PC
7186 SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7187 {
7188 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7189 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7190 int UNUSED written = 0;
7191 IADDR UNUSED pc = abuf->addr;
7192 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7193
7194 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7195 {
7196 SI tmp_address;
7197 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7198 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7199 {
7200 SI opval = tmp_address;
7201 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7202 written |= (1 << 6);
7203 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7204 }
7205 }
7206 }
7207
7208 abuf->written = written;
7209 return vpc;
7210 #undef FLD
7211 }
7212
7213 /* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7214
7215 static SEM_PC
7216 SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7217 {
7218 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7220 int UNUSED written = 0;
7221 IADDR UNUSED pc = abuf->addr;
7222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7223
7224 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7225 {
7226 SI tmp_address;
7227 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7228 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7229 {
7230 SI opval = tmp_address;
7231 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7232 written |= (1 << 6);
7233 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7234 }
7235 }
7236 }
7237
7238 abuf->written = written;
7239 return vpc;
7240 #undef FLD
7241 }
7242
7243 /* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7244
7245 static SEM_PC
7246 SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7247 {
7248 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7249 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7250 int UNUSED written = 0;
7251 IADDR UNUSED pc = abuf->addr;
7252 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7253
7254 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7255 {
7256 SI tmp_address;
7257 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7258 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7259 {
7260 SI opval = tmp_address;
7261 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7262 written |= (1 << 6);
7263 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7264 }
7265 }
7266 }
7267
7268 abuf->written = written;
7269 return vpc;
7270 #undef FLD
7271 }
7272
7273 /* cstdu: cstdu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7274
7275 static SEM_PC
7276 SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7277 {
7278 #define FLD(f) abuf->fields.sfmt_cstdu.f
7279 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7280 int UNUSED written = 0;
7281 IADDR UNUSED pc = abuf->addr;
7282 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7283
7284 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7285 {
7286 SI tmp_address;
7287 {
7288 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7289 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7290 }
7291 {
7292 SI opval = tmp_address;
7293 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7294 written |= (1 << 6);
7295 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7296 }
7297 }
7298 }
7299
7300 abuf->written = written;
7301 return vpc;
7302 #undef FLD
7303 }
7304
7305 /* cstdfu: cstdfu$pack $FRk,@($GRi,$GRj),$CCi,$cond */
7306
7307 static SEM_PC
7308 SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7309 {
7310 #define FLD(f) abuf->fields.sfmt_cstdfu.f
7311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7312 int UNUSED written = 0;
7313 IADDR UNUSED pc = abuf->addr;
7314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7315
7316 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7317 {
7318 SI tmp_address;
7319 {
7320 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7321 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7322 }
7323 {
7324 SI opval = tmp_address;
7325 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7326 written |= (1 << 6);
7327 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7328 }
7329 }
7330 }
7331
7332 abuf->written = written;
7333 return vpc;
7334 #undef FLD
7335 }
7336
7337 /* stbi: stbi$pack $GRk,@($GRi,$d12) */
7338
7339 static SEM_PC
7340 SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7341 {
7342 #define FLD(f) abuf->fields.sfmt_swapi.f
7343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7344 int UNUSED written = 0;
7345 IADDR UNUSED pc = abuf->addr;
7346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7347
7348 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7349
7350 return vpc;
7351 #undef FLD
7352 }
7353
7354 /* sthi: sthi$pack $GRk,@($GRi,$d12) */
7355
7356 static SEM_PC
7357 SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7358 {
7359 #define FLD(f) abuf->fields.sfmt_swapi.f
7360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7361 int UNUSED written = 0;
7362 IADDR UNUSED pc = abuf->addr;
7363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7364
7365 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7366
7367 return vpc;
7368 #undef FLD
7369 }
7370
7371 /* sti: sti$pack $GRk,@($GRi,$d12) */
7372
7373 static SEM_PC
7374 SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7375 {
7376 #define FLD(f) abuf->fields.sfmt_swapi.f
7377 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7378 int UNUSED written = 0;
7379 IADDR UNUSED pc = abuf->addr;
7380 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7381
7382 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7383
7384 return vpc;
7385 #undef FLD
7386 }
7387
7388 /* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7389
7390 static SEM_PC
7391 SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7392 {
7393 #define FLD(f) abuf->fields.sfmt_stbfi.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 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7400
7401 return vpc;
7402 #undef FLD
7403 }
7404
7405 /* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7406
7407 static SEM_PC
7408 SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7409 {
7410 #define FLD(f) abuf->fields.sfmt_stbfi.f
7411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7412 int UNUSED written = 0;
7413 IADDR UNUSED pc = abuf->addr;
7414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7415
7416 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7417
7418 return vpc;
7419 #undef FLD
7420 }
7421
7422 /* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7423
7424 static SEM_PC
7425 SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7426 {
7427 #define FLD(f) abuf->fields.sfmt_stbfi.f
7428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7429 int UNUSED written = 0;
7430 IADDR UNUSED pc = abuf->addr;
7431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7432
7433 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7434
7435 return vpc;
7436 #undef FLD
7437 }
7438
7439 /* stdi: stdi$pack $GRk,@($GRi,$d12) */
7440
7441 static SEM_PC
7442 SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7443 {
7444 #define FLD(f) abuf->fields.sfmt_stdi.f
7445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7446 int UNUSED written = 0;
7447 IADDR UNUSED pc = abuf->addr;
7448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7449
7450 {
7451 SI tmp_address;
7452 {
7453 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7454 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7455 }
7456 }
7457
7458 return vpc;
7459 #undef FLD
7460 }
7461
7462 /* stdfi: stdfi$pack $FRk,@($GRi,$d12) */
7463
7464 static SEM_PC
7465 SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7466 {
7467 #define FLD(f) abuf->fields.sfmt_stdfi.f
7468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7469 int UNUSED written = 0;
7470 IADDR UNUSED pc = abuf->addr;
7471 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7472
7473 {
7474 SI tmp_address;
7475 {
7476 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7477 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7478 }
7479 }
7480
7481 return vpc;
7482 #undef FLD
7483 }
7484
7485 /* stqi: stqi$pack $GRk,@($GRi,$d12) */
7486
7487 static SEM_PC
7488 SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7489 {
7490 #define FLD(f) abuf->fields.sfmt_stdi.f
7491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7492 int UNUSED written = 0;
7493 IADDR UNUSED pc = abuf->addr;
7494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7495
7496 {
7497 SI tmp_address;
7498 {
7499 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7500 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7501 }
7502 }
7503
7504 return vpc;
7505 #undef FLD
7506 }
7507
7508 /* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7509
7510 static SEM_PC
7511 SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7512 {
7513 #define FLD(f) abuf->fields.sfmt_stdfi.f
7514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7515 int UNUSED written = 0;
7516 IADDR UNUSED pc = abuf->addr;
7517 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7518
7519 {
7520 SI tmp_address;
7521 {
7522 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7523 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7524 }
7525 }
7526
7527 return vpc;
7528 #undef FLD
7529 }
7530
7531 /* swap: swap$pack @($GRi,$GRj),$GRk */
7532
7533 static SEM_PC
7534 SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7535 {
7536 #define FLD(f) abuf->fields.sfmt_cswap.f
7537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7538 int UNUSED written = 0;
7539 IADDR UNUSED pc = abuf->addr;
7540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7541
7542 {
7543 SI tmp_tmp;
7544 SI tmp_address;
7545 tmp_tmp = GET_H_GR (FLD (f_GRk));
7546 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7547 {
7548 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7549 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7550 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7551 }
7552 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7553 }
7554
7555 return vpc;
7556 #undef FLD
7557 }
7558
7559 /* swapi: swapi$pack @($GRi,$d12),$GRk */
7560
7561 static SEM_PC
7562 SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7563 {
7564 #define FLD(f) abuf->fields.sfmt_swapi.f
7565 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7566 int UNUSED written = 0;
7567 IADDR UNUSED pc = abuf->addr;
7568 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7569
7570 {
7571 SI tmp_tmp;
7572 SI tmp_address;
7573 tmp_tmp = GET_H_GR (FLD (f_GRk));
7574 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7575 {
7576 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7577 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7578 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7579 }
7580 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7581 }
7582
7583 return vpc;
7584 #undef FLD
7585 }
7586
7587 /* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7588
7589 static SEM_PC
7590 SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7591 {
7592 #define FLD(f) abuf->fields.sfmt_cswap.f
7593 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7594 int UNUSED written = 0;
7595 IADDR UNUSED pc = abuf->addr;
7596 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7597
7598 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7599 {
7600 SI tmp_tmp;
7601 SI tmp_address;
7602 tmp_tmp = GET_H_GR (FLD (f_GRk));
7603 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7604 {
7605 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7606 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7607 written |= (1 << 6);
7608 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7609 }
7610 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7611 }
7612 }
7613
7614 abuf->written = written;
7615 return vpc;
7616 #undef FLD
7617 }
7618
7619 /* movgf: movgf$pack $GRj,$FRintk */
7620
7621 static SEM_PC
7622 SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7623 {
7624 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7626 int UNUSED written = 0;
7627 IADDR UNUSED pc = abuf->addr;
7628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7629
7630 {
7631 SI opval = GET_H_GR (FLD (f_GRj));
7632 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7633 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7634 }
7635
7636 return vpc;
7637 #undef FLD
7638 }
7639
7640 /* movfg: movfg$pack $FRintk,$GRj */
7641
7642 static SEM_PC
7643 SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7644 {
7645 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7646 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7647 int UNUSED written = 0;
7648 IADDR UNUSED pc = abuf->addr;
7649 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7650
7651 {
7652 SI opval = GET_H_FR_INT (FLD (f_FRk));
7653 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7655 }
7656
7657 return vpc;
7658 #undef FLD
7659 }
7660
7661 /* movgfd: movgfd$pack $GRj,$FRintk */
7662
7663 static SEM_PC
7664 SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7665 {
7666 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7668 int UNUSED written = 0;
7669 IADDR UNUSED pc = abuf->addr;
7670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7671
7672 if (EQSI (FLD (f_GRj), 0)) {
7673 {
7674 {
7675 SI opval = 0;
7676 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7677 written |= (1 << 4);
7678 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7679 }
7680 {
7681 USI opval = 0;
7682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7683 written |= (1 << 5);
7684 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7685 }
7686 }
7687 } else {
7688 {
7689 {
7690 SI opval = GET_H_GR (FLD (f_GRj));
7691 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7692 written |= (1 << 4);
7693 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7694 }
7695 {
7696 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7697 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7698 written |= (1 << 5);
7699 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7700 }
7701 }
7702 }
7703
7704 abuf->written = written;
7705 return vpc;
7706 #undef FLD
7707 }
7708
7709 /* movfgd: movfgd$pack $FRintk,$GRj */
7710
7711 static SEM_PC
7712 SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7713 {
7714 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7715 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7716 int UNUSED written = 0;
7717 IADDR UNUSED pc = abuf->addr;
7718 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7719
7720 if (NESI (FLD (f_GRj), 0)) {
7721 {
7722 {
7723 SI opval = GET_H_FR_INT (FLD (f_FRk));
7724 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7725 written |= (1 << 4);
7726 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7727 }
7728 {
7729 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7730 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7731 written |= (1 << 5);
7732 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7733 }
7734 }
7735 }
7736
7737 abuf->written = written;
7738 return vpc;
7739 #undef FLD
7740 }
7741
7742 /* movgfq: movgfq$pack $GRj,$FRintk */
7743
7744 static SEM_PC
7745 SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7746 {
7747 #define FLD(f) abuf->fields.sfmt_movgfq.f
7748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7749 int UNUSED written = 0;
7750 IADDR UNUSED pc = abuf->addr;
7751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7752
7753 if (EQSI (FLD (f_GRj), 0)) {
7754 {
7755 {
7756 SI opval = 0;
7757 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7758 written |= (1 << 6);
7759 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7760 }
7761 {
7762 USI opval = 0;
7763 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7764 written |= (1 << 7);
7765 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7766 }
7767 {
7768 USI opval = 0;
7769 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7770 written |= (1 << 8);
7771 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7772 }
7773 {
7774 USI opval = 0;
7775 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7776 written |= (1 << 9);
7777 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7778 }
7779 }
7780 } else {
7781 {
7782 {
7783 SI opval = GET_H_GR (FLD (f_GRj));
7784 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7785 written |= (1 << 6);
7786 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7787 }
7788 {
7789 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7790 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7791 written |= (1 << 7);
7792 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7793 }
7794 {
7795 USI opval = GET_H_GR (((FLD (f_GRj)) + (2)));
7796 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7797 written |= (1 << 8);
7798 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7799 }
7800 {
7801 USI opval = GET_H_GR (((FLD (f_GRj)) + (3)));
7802 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7803 written |= (1 << 9);
7804 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7805 }
7806 }
7807 }
7808
7809 abuf->written = written;
7810 return vpc;
7811 #undef FLD
7812 }
7813
7814 /* movfgq: movfgq$pack $FRintk,$GRj */
7815
7816 static SEM_PC
7817 SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7818 {
7819 #define FLD(f) abuf->fields.sfmt_movfgq.f
7820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7821 int UNUSED written = 0;
7822 IADDR UNUSED pc = abuf->addr;
7823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7824
7825 if (NESI (FLD (f_GRj), 0)) {
7826 {
7827 {
7828 SI opval = GET_H_FR_INT (FLD (f_FRk));
7829 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7830 written |= (1 << 6);
7831 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7832 }
7833 {
7834 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7835 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7836 written |= (1 << 7);
7837 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7838 }
7839 {
7840 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (2)));
7841 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (2)), opval);
7842 written |= (1 << 8);
7843 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7844 }
7845 {
7846 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (3)));
7847 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (3)), opval);
7848 written |= (1 << 9);
7849 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7850 }
7851 }
7852 }
7853
7854 abuf->written = written;
7855 return vpc;
7856 #undef FLD
7857 }
7858
7859 /* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7860
7861 static SEM_PC
7862 SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7863 {
7864 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7866 int UNUSED written = 0;
7867 IADDR UNUSED pc = abuf->addr;
7868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7869
7870 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7871 {
7872 SI opval = GET_H_GR (FLD (f_GRj));
7873 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7874 written |= (1 << 3);
7875 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7876 }
7877 }
7878
7879 abuf->written = written;
7880 return vpc;
7881 #undef FLD
7882 }
7883
7884 /* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7885
7886 static SEM_PC
7887 SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7888 {
7889 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7890 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7891 int UNUSED written = 0;
7892 IADDR UNUSED pc = abuf->addr;
7893 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7894
7895 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7896 {
7897 SI opval = GET_H_FR_INT (FLD (f_FRk));
7898 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7899 written |= (1 << 3);
7900 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7901 }
7902 }
7903
7904 abuf->written = written;
7905 return vpc;
7906 #undef FLD
7907 }
7908
7909 /* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7910
7911 static SEM_PC
7912 SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7913 {
7914 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7916 int UNUSED written = 0;
7917 IADDR UNUSED pc = abuf->addr;
7918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7919
7920 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7921 if (EQSI (FLD (f_GRj), 0)) {
7922 {
7923 {
7924 SI opval = 0;
7925 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7926 written |= (1 << 6);
7927 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7928 }
7929 {
7930 USI opval = 0;
7931 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7932 written |= (1 << 7);
7933 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7934 }
7935 }
7936 } else {
7937 {
7938 {
7939 SI opval = GET_H_GR (FLD (f_GRj));
7940 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7941 written |= (1 << 6);
7942 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7943 }
7944 {
7945 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7946 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7947 written |= (1 << 7);
7948 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7949 }
7950 }
7951 }
7952 }
7953
7954 abuf->written = written;
7955 return vpc;
7956 #undef FLD
7957 }
7958
7959 /* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7960
7961 static SEM_PC
7962 SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7963 {
7964 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7965 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7966 int UNUSED written = 0;
7967 IADDR UNUSED pc = abuf->addr;
7968 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7969
7970 if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7971 {
7972 {
7973 SI opval = GET_H_FR_INT (FLD (f_FRk));
7974 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7975 written |= (1 << 6);
7976 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7977 }
7978 {
7979 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7981 written |= (1 << 7);
7982 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7983 }
7984 }
7985 }
7986
7987 abuf->written = written;
7988 return vpc;
7989 #undef FLD
7990 }
7991
7992 /* movgs: movgs$pack $GRj,$spr */
7993
7994 static SEM_PC
7995 SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7996 {
7997 #define FLD(f) abuf->fields.sfmt_movgs.f
7998 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7999 int UNUSED written = 0;
8000 IADDR UNUSED pc = abuf->addr;
8001 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8002
8003 {
8004 USI opval = GET_H_GR (FLD (f_GRj));
8005 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
8006 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8007 }
8008
8009 return vpc;
8010 #undef FLD
8011 }
8012
8013 /* movsg: movsg$pack $spr,$GRj */
8014
8015 static SEM_PC
8016 SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8017 {
8018 #define FLD(f) abuf->fields.sfmt_movsg.f
8019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8020 int UNUSED written = 0;
8021 IADDR UNUSED pc = abuf->addr;
8022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8023
8024 {
8025 SI opval = GET_H_SPR (FLD (f_spr));
8026 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
8027 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8028 }
8029
8030 return vpc;
8031 #undef FLD
8032 }
8033
8034 /* bra: bra$pack $hint_taken$label16 */
8035
8036 static SEM_PC
8037 SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8038 {
8039 #define FLD(f) abuf->fields.sfmt_fbne.f
8040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8041 int UNUSED written = 0;
8042 IADDR UNUSED pc = abuf->addr;
8043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8044
8045 {
8046 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8047 {
8048 USI opval = FLD (i_label16);
8049 sim_queue_pc_write (current_cpu, opval);
8050 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8051 }
8052 }
8053
8054 return vpc;
8055 #undef FLD
8056 }
8057
8058 /* bno: bno$pack$hint_not_taken */
8059
8060 static SEM_PC
8061 SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8062 {
8063 #define FLD(f) abuf->fields.sfmt_fbne.f
8064 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8065 int UNUSED written = 0;
8066 IADDR UNUSED pc = abuf->addr;
8067 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8068
8069 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8070
8071 return vpc;
8072 #undef FLD
8073 }
8074
8075 /* beq: beq$pack $ICCi_2,$hint,$label16 */
8076
8077 static SEM_PC
8078 SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8079 {
8080 #define FLD(f) abuf->fields.sfmt_beq.f
8081 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8082 int UNUSED written = 0;
8083 IADDR UNUSED pc = abuf->addr;
8084 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8085
8086 {
8087 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8088 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8089 {
8090 USI opval = FLD (i_label16);
8091 sim_queue_pc_write (current_cpu, opval);
8092 written |= (1 << 3);
8093 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8094 }
8095 }
8096 }
8097
8098 abuf->written = written;
8099 return vpc;
8100 #undef FLD
8101 }
8102
8103 /* bne: bne$pack $ICCi_2,$hint,$label16 */
8104
8105 static SEM_PC
8106 SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8107 {
8108 #define FLD(f) abuf->fields.sfmt_beq.f
8109 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8110 int UNUSED written = 0;
8111 IADDR UNUSED pc = abuf->addr;
8112 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8113
8114 {
8115 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8116 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8117 {
8118 USI opval = FLD (i_label16);
8119 sim_queue_pc_write (current_cpu, opval);
8120 written |= (1 << 3);
8121 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8122 }
8123 }
8124 }
8125
8126 abuf->written = written;
8127 return vpc;
8128 #undef FLD
8129 }
8130
8131 /* ble: ble$pack $ICCi_2,$hint,$label16 */
8132
8133 static SEM_PC
8134 SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8135 {
8136 #define FLD(f) abuf->fields.sfmt_beq.f
8137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8138 int UNUSED written = 0;
8139 IADDR UNUSED pc = abuf->addr;
8140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8141
8142 {
8143 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8144 if (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))))) {
8145 {
8146 USI opval = FLD (i_label16);
8147 sim_queue_pc_write (current_cpu, opval);
8148 written |= (1 << 3);
8149 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8150 }
8151 }
8152 }
8153
8154 abuf->written = written;
8155 return vpc;
8156 #undef FLD
8157 }
8158
8159 /* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8160
8161 static SEM_PC
8162 SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8163 {
8164 #define FLD(f) abuf->fields.sfmt_beq.f
8165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8166 int UNUSED written = 0;
8167 IADDR UNUSED pc = abuf->addr;
8168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8169
8170 {
8171 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8172 if (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)))))) {
8173 {
8174 USI opval = FLD (i_label16);
8175 sim_queue_pc_write (current_cpu, opval);
8176 written |= (1 << 3);
8177 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8178 }
8179 }
8180 }
8181
8182 abuf->written = written;
8183 return vpc;
8184 #undef FLD
8185 }
8186
8187 /* blt: blt$pack $ICCi_2,$hint,$label16 */
8188
8189 static SEM_PC
8190 SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8191 {
8192 #define FLD(f) abuf->fields.sfmt_beq.f
8193 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8194 int UNUSED written = 0;
8195 IADDR UNUSED pc = abuf->addr;
8196 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8197
8198 {
8199 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8200 if (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)))) {
8201 {
8202 USI opval = FLD (i_label16);
8203 sim_queue_pc_write (current_cpu, opval);
8204 written |= (1 << 3);
8205 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8206 }
8207 }
8208 }
8209
8210 abuf->written = written;
8211 return vpc;
8212 #undef FLD
8213 }
8214
8215 /* bge: bge$pack $ICCi_2,$hint,$label16 */
8216
8217 static SEM_PC
8218 SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8219 {
8220 #define FLD(f) abuf->fields.sfmt_beq.f
8221 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8222 int UNUSED written = 0;
8223 IADDR UNUSED pc = abuf->addr;
8224 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8225
8226 {
8227 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8228 if (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))))) {
8229 {
8230 USI opval = FLD (i_label16);
8231 sim_queue_pc_write (current_cpu, opval);
8232 written |= (1 << 3);
8233 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8234 }
8235 }
8236 }
8237
8238 abuf->written = written;
8239 return vpc;
8240 #undef FLD
8241 }
8242
8243 /* bls: bls$pack $ICCi_2,$hint,$label16 */
8244
8245 static SEM_PC
8246 SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8247 {
8248 #define FLD(f) abuf->fields.sfmt_beq.f
8249 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8250 int UNUSED written = 0;
8251 IADDR UNUSED pc = abuf->addr;
8252 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8253
8254 {
8255 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8256 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8257 {
8258 USI opval = FLD (i_label16);
8259 sim_queue_pc_write (current_cpu, opval);
8260 written |= (1 << 3);
8261 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8262 }
8263 }
8264 }
8265
8266 abuf->written = written;
8267 return vpc;
8268 #undef FLD
8269 }
8270
8271 /* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8272
8273 static SEM_PC
8274 SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8275 {
8276 #define FLD(f) abuf->fields.sfmt_beq.f
8277 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8278 int UNUSED written = 0;
8279 IADDR UNUSED pc = abuf->addr;
8280 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8281
8282 {
8283 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8284 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
8285 {
8286 USI opval = FLD (i_label16);
8287 sim_queue_pc_write (current_cpu, opval);
8288 written |= (1 << 3);
8289 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8290 }
8291 }
8292 }
8293
8294 abuf->written = written;
8295 return vpc;
8296 #undef FLD
8297 }
8298
8299 /* bc: bc$pack $ICCi_2,$hint,$label16 */
8300
8301 static SEM_PC
8302 SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8303 {
8304 #define FLD(f) abuf->fields.sfmt_beq.f
8305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8306 int UNUSED written = 0;
8307 IADDR UNUSED pc = abuf->addr;
8308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8309
8310 {
8311 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8312 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8313 {
8314 USI opval = FLD (i_label16);
8315 sim_queue_pc_write (current_cpu, opval);
8316 written |= (1 << 3);
8317 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8318 }
8319 }
8320 }
8321
8322 abuf->written = written;
8323 return vpc;
8324 #undef FLD
8325 }
8326
8327 /* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8328
8329 static SEM_PC
8330 SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8331 {
8332 #define FLD(f) abuf->fields.sfmt_beq.f
8333 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8334 int UNUSED written = 0;
8335 IADDR UNUSED pc = abuf->addr;
8336 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8337
8338 {
8339 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8340 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8341 {
8342 USI opval = FLD (i_label16);
8343 sim_queue_pc_write (current_cpu, opval);
8344 written |= (1 << 3);
8345 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8346 }
8347 }
8348 }
8349
8350 abuf->written = written;
8351 return vpc;
8352 #undef FLD
8353 }
8354
8355 /* bn: bn$pack $ICCi_2,$hint,$label16 */
8356
8357 static SEM_PC
8358 SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8359 {
8360 #define FLD(f) abuf->fields.sfmt_beq.f
8361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8362 int UNUSED written = 0;
8363 IADDR UNUSED pc = abuf->addr;
8364 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8365
8366 {
8367 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8368 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8369 {
8370 USI opval = FLD (i_label16);
8371 sim_queue_pc_write (current_cpu, opval);
8372 written |= (1 << 3);
8373 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8374 }
8375 }
8376 }
8377
8378 abuf->written = written;
8379 return vpc;
8380 #undef FLD
8381 }
8382
8383 /* bp: bp$pack $ICCi_2,$hint,$label16 */
8384
8385 static SEM_PC
8386 SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8387 {
8388 #define FLD(f) abuf->fields.sfmt_beq.f
8389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8390 int UNUSED written = 0;
8391 IADDR UNUSED pc = abuf->addr;
8392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8393
8394 {
8395 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8396 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8397 {
8398 USI opval = FLD (i_label16);
8399 sim_queue_pc_write (current_cpu, opval);
8400 written |= (1 << 3);
8401 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8402 }
8403 }
8404 }
8405
8406 abuf->written = written;
8407 return vpc;
8408 #undef FLD
8409 }
8410
8411 /* bv: bv$pack $ICCi_2,$hint,$label16 */
8412
8413 static SEM_PC
8414 SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8415 {
8416 #define FLD(f) abuf->fields.sfmt_beq.f
8417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8418 int UNUSED written = 0;
8419 IADDR UNUSED pc = abuf->addr;
8420 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8421
8422 {
8423 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8424 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8425 {
8426 USI opval = FLD (i_label16);
8427 sim_queue_pc_write (current_cpu, opval);
8428 written |= (1 << 3);
8429 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8430 }
8431 }
8432 }
8433
8434 abuf->written = written;
8435 return vpc;
8436 #undef FLD
8437 }
8438
8439 /* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8440
8441 static SEM_PC
8442 SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8443 {
8444 #define FLD(f) abuf->fields.sfmt_beq.f
8445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8446 int UNUSED written = 0;
8447 IADDR UNUSED pc = abuf->addr;
8448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8449
8450 {
8451 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8452 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8453 {
8454 USI opval = FLD (i_label16);
8455 sim_queue_pc_write (current_cpu, opval);
8456 written |= (1 << 3);
8457 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8458 }
8459 }
8460 }
8461
8462 abuf->written = written;
8463 return vpc;
8464 #undef FLD
8465 }
8466
8467 /* fbra: fbra$pack $hint_taken$label16 */
8468
8469 static SEM_PC
8470 SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8471 {
8472 #define FLD(f) abuf->fields.sfmt_fbne.f
8473 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8474 int UNUSED written = 0;
8475 IADDR UNUSED pc = abuf->addr;
8476 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8477
8478 {
8479 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8480 {
8481 USI opval = FLD (i_label16);
8482 sim_queue_pc_write (current_cpu, opval);
8483 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8484 }
8485 }
8486
8487 return vpc;
8488 #undef FLD
8489 }
8490
8491 /* fbno: fbno$pack$hint_not_taken */
8492
8493 static SEM_PC
8494 SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8495 {
8496 #define FLD(f) abuf->fields.sfmt_fbne.f
8497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8498 int UNUSED written = 0;
8499 IADDR UNUSED pc = abuf->addr;
8500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8501
8502 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8503
8504 return vpc;
8505 #undef FLD
8506 }
8507
8508 /* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8509
8510 static SEM_PC
8511 SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8512 {
8513 #define FLD(f) abuf->fields.sfmt_fbne.f
8514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8515 int UNUSED written = 0;
8516 IADDR UNUSED pc = abuf->addr;
8517 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8518
8519 {
8520 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8521 if (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))))) {
8522 {
8523 USI opval = FLD (i_label16);
8524 sim_queue_pc_write (current_cpu, opval);
8525 written |= (1 << 3);
8526 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8527 }
8528 }
8529 }
8530
8531 abuf->written = written;
8532 return vpc;
8533 #undef FLD
8534 }
8535
8536 /* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8537
8538 static SEM_PC
8539 SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8540 {
8541 #define FLD(f) abuf->fields.sfmt_fbne.f
8542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8543 int UNUSED written = 0;
8544 IADDR UNUSED pc = abuf->addr;
8545 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8546
8547 {
8548 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8549 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8550 {
8551 USI opval = FLD (i_label16);
8552 sim_queue_pc_write (current_cpu, opval);
8553 written |= (1 << 3);
8554 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8555 }
8556 }
8557 }
8558
8559 abuf->written = written;
8560 return vpc;
8561 #undef FLD
8562 }
8563
8564 /* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8565
8566 static SEM_PC
8567 SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8568 {
8569 #define FLD(f) abuf->fields.sfmt_fbne.f
8570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8571 int UNUSED written = 0;
8572 IADDR UNUSED pc = abuf->addr;
8573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8574
8575 {
8576 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8577 if (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)))) {
8578 {
8579 USI opval = FLD (i_label16);
8580 sim_queue_pc_write (current_cpu, opval);
8581 written |= (1 << 3);
8582 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8583 }
8584 }
8585 }
8586
8587 abuf->written = written;
8588 return vpc;
8589 #undef FLD
8590 }
8591
8592 /* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8593
8594 static SEM_PC
8595 SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8596 {
8597 #define FLD(f) abuf->fields.sfmt_fbne.f
8598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8599 int UNUSED written = 0;
8600 IADDR UNUSED pc = abuf->addr;
8601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8602
8603 {
8604 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8605 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8606 {
8607 USI opval = FLD (i_label16);
8608 sim_queue_pc_write (current_cpu, opval);
8609 written |= (1 << 3);
8610 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8611 }
8612 }
8613 }
8614
8615 abuf->written = written;
8616 return vpc;
8617 #undef FLD
8618 }
8619
8620 /* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8621
8622 static SEM_PC
8623 SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8624 {
8625 #define FLD(f) abuf->fields.sfmt_fbne.f
8626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8627 int UNUSED written = 0;
8628 IADDR UNUSED pc = abuf->addr;
8629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8630
8631 {
8632 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8633 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8634 {
8635 USI opval = FLD (i_label16);
8636 sim_queue_pc_write (current_cpu, opval);
8637 written |= (1 << 3);
8638 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8639 }
8640 }
8641 }
8642
8643 abuf->written = written;
8644 return vpc;
8645 #undef FLD
8646 }
8647
8648 /* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8649
8650 static SEM_PC
8651 SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8652 {
8653 #define FLD(f) abuf->fields.sfmt_fbne.f
8654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8655 int UNUSED written = 0;
8656 IADDR UNUSED pc = abuf->addr;
8657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8658
8659 {
8660 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8661 if (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)))) {
8662 {
8663 USI opval = FLD (i_label16);
8664 sim_queue_pc_write (current_cpu, opval);
8665 written |= (1 << 3);
8666 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8667 }
8668 }
8669 }
8670
8671 abuf->written = written;
8672 return vpc;
8673 #undef FLD
8674 }
8675
8676 /* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8677
8678 static SEM_PC
8679 SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8680 {
8681 #define FLD(f) abuf->fields.sfmt_fbne.f
8682 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8683 int UNUSED written = 0;
8684 IADDR UNUSED pc = abuf->addr;
8685 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8686
8687 {
8688 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8689 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8690 {
8691 USI opval = FLD (i_label16);
8692 sim_queue_pc_write (current_cpu, opval);
8693 written |= (1 << 3);
8694 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8695 }
8696 }
8697 }
8698
8699 abuf->written = written;
8700 return vpc;
8701 #undef FLD
8702 }
8703
8704 /* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8705
8706 static SEM_PC
8707 SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8708 {
8709 #define FLD(f) abuf->fields.sfmt_fbne.f
8710 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8711 int UNUSED written = 0;
8712 IADDR UNUSED pc = abuf->addr;
8713 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8714
8715 {
8716 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8717 if (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))))) {
8718 {
8719 USI opval = FLD (i_label16);
8720 sim_queue_pc_write (current_cpu, opval);
8721 written |= (1 << 3);
8722 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8723 }
8724 }
8725 }
8726
8727 abuf->written = written;
8728 return vpc;
8729 #undef FLD
8730 }
8731
8732 /* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8733
8734 static SEM_PC
8735 SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8736 {
8737 #define FLD(f) abuf->fields.sfmt_fbne.f
8738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8739 int UNUSED written = 0;
8740 IADDR UNUSED pc = abuf->addr;
8741 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8742
8743 {
8744 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8745 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8746 {
8747 USI opval = FLD (i_label16);
8748 sim_queue_pc_write (current_cpu, opval);
8749 written |= (1 << 3);
8750 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8751 }
8752 }
8753 }
8754
8755 abuf->written = written;
8756 return vpc;
8757 #undef FLD
8758 }
8759
8760 /* fble: fble$pack $FCCi_2,$hint,$label16 */
8761
8762 static SEM_PC
8763 SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8764 {
8765 #define FLD(f) abuf->fields.sfmt_fbne.f
8766 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8767 int UNUSED written = 0;
8768 IADDR UNUSED pc = abuf->addr;
8769 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8770
8771 {
8772 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8773 if (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)))) {
8774 {
8775 USI opval = FLD (i_label16);
8776 sim_queue_pc_write (current_cpu, opval);
8777 written |= (1 << 3);
8778 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8779 }
8780 }
8781 }
8782
8783 abuf->written = written;
8784 return vpc;
8785 #undef FLD
8786 }
8787
8788 /* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8789
8790 static SEM_PC
8791 SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8792 {
8793 #define FLD(f) abuf->fields.sfmt_fbne.f
8794 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8795 int UNUSED written = 0;
8796 IADDR UNUSED pc = abuf->addr;
8797 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8798
8799 {
8800 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8801 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8802 {
8803 USI opval = FLD (i_label16);
8804 sim_queue_pc_write (current_cpu, opval);
8805 written |= (1 << 3);
8806 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8807 }
8808 }
8809 }
8810
8811 abuf->written = written;
8812 return vpc;
8813 #undef FLD
8814 }
8815
8816 /* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8817
8818 static SEM_PC
8819 SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8820 {
8821 #define FLD(f) abuf->fields.sfmt_fbne.f
8822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8823 int UNUSED written = 0;
8824 IADDR UNUSED pc = abuf->addr;
8825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8826
8827 {
8828 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8829 if (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))))) {
8830 {
8831 USI opval = FLD (i_label16);
8832 sim_queue_pc_write (current_cpu, opval);
8833 written |= (1 << 3);
8834 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8835 }
8836 }
8837 }
8838
8839 abuf->written = written;
8840 return vpc;
8841 #undef FLD
8842 }
8843
8844 /* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8845
8846 static SEM_PC
8847 SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8848 {
8849 #define FLD(f) abuf->fields.sfmt_fbne.f
8850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8851 int UNUSED written = 0;
8852 IADDR UNUSED pc = abuf->addr;
8853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8854
8855 {
8856 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8857 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8858 {
8859 USI opval = FLD (i_label16);
8860 sim_queue_pc_write (current_cpu, opval);
8861 written |= (1 << 3);
8862 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8863 }
8864 }
8865 }
8866
8867 abuf->written = written;
8868 return vpc;
8869 #undef FLD
8870 }
8871
8872 /* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8873
8874 static SEM_PC
8875 SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8876 {
8877 #define FLD(f) abuf->fields.sfmt_fbne.f
8878 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8879 int UNUSED written = 0;
8880 IADDR UNUSED pc = abuf->addr;
8881 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8882
8883 {
8884 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8885 if (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))))) {
8886 {
8887 USI opval = FLD (i_label16);
8888 sim_queue_pc_write (current_cpu, opval);
8889 written |= (1 << 3);
8890 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8891 }
8892 }
8893 }
8894
8895 abuf->written = written;
8896 return vpc;
8897 #undef FLD
8898 }
8899
8900 /* bctrlr: bctrlr$pack $ccond,$hint */
8901
8902 static SEM_PC
8903 SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8904 {
8905 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8907 int UNUSED written = 0;
8908 IADDR UNUSED pc = abuf->addr;
8909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8910
8911 {
8912 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8913 {
8914 SI tmp_tmp;
8915 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8916 {
8917 USI opval = tmp_tmp;
8918 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8919 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8920 }
8921 if (EQSI (FLD (f_ccond), 0)) {
8922 if (NESI (tmp_tmp, 0)) {
8923 {
8924 USI opval = GET_H_SPR (((UINT) 272));
8925 sim_queue_pc_write (current_cpu, opval);
8926 written |= (1 << 5);
8927 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8928 }
8929 }
8930 } else {
8931 if (EQSI (tmp_tmp, 0)) {
8932 {
8933 USI opval = GET_H_SPR (((UINT) 272));
8934 sim_queue_pc_write (current_cpu, opval);
8935 written |= (1 << 5);
8936 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8937 }
8938 }
8939 }
8940 }
8941 }
8942
8943 abuf->written = written;
8944 return vpc;
8945 #undef FLD
8946 }
8947
8948 /* bralr: bralr$pack$hint_taken */
8949
8950 static SEM_PC
8951 SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8952 {
8953 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8955 int UNUSED written = 0;
8956 IADDR UNUSED pc = abuf->addr;
8957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8958
8959 {
8960 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8961 {
8962 USI opval = GET_H_SPR (((UINT) 272));
8963 sim_queue_pc_write (current_cpu, opval);
8964 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8965 }
8966 }
8967
8968 return vpc;
8969 #undef FLD
8970 }
8971
8972 /* bnolr: bnolr$pack$hint_not_taken */
8973
8974 static SEM_PC
8975 SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8976 {
8977 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8979 int UNUSED written = 0;
8980 IADDR UNUSED pc = abuf->addr;
8981 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8982
8983 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8984
8985 return vpc;
8986 #undef FLD
8987 }
8988
8989 /* beqlr: beqlr$pack $ICCi_2,$hint */
8990
8991 static SEM_PC
8992 SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8993 {
8994 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8996 int UNUSED written = 0;
8997 IADDR UNUSED pc = abuf->addr;
8998 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8999
9000 {
9001 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9002 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9003 {
9004 USI opval = GET_H_SPR (((UINT) 272));
9005 sim_queue_pc_write (current_cpu, opval);
9006 written |= (1 << 3);
9007 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9008 }
9009 }
9010 }
9011
9012 abuf->written = written;
9013 return vpc;
9014 #undef FLD
9015 }
9016
9017 /* bnelr: bnelr$pack $ICCi_2,$hint */
9018
9019 static SEM_PC
9020 SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9021 {
9022 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9023 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9024 int UNUSED written = 0;
9025 IADDR UNUSED pc = abuf->addr;
9026 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9027
9028 {
9029 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9030 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9031 {
9032 USI opval = GET_H_SPR (((UINT) 272));
9033 sim_queue_pc_write (current_cpu, opval);
9034 written |= (1 << 3);
9035 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9036 }
9037 }
9038 }
9039
9040 abuf->written = written;
9041 return vpc;
9042 #undef FLD
9043 }
9044
9045 /* blelr: blelr$pack $ICCi_2,$hint */
9046
9047 static SEM_PC
9048 SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9049 {
9050 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9051 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9052 int UNUSED written = 0;
9053 IADDR UNUSED pc = abuf->addr;
9054 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9055
9056 {
9057 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9058 if (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))))) {
9059 {
9060 USI opval = GET_H_SPR (((UINT) 272));
9061 sim_queue_pc_write (current_cpu, opval);
9062 written |= (1 << 3);
9063 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9064 }
9065 }
9066 }
9067
9068 abuf->written = written;
9069 return vpc;
9070 #undef FLD
9071 }
9072
9073 /* bgtlr: bgtlr$pack $ICCi_2,$hint */
9074
9075 static SEM_PC
9076 SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9077 {
9078 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9079 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9080 int UNUSED written = 0;
9081 IADDR UNUSED pc = abuf->addr;
9082 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9083
9084 {
9085 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9086 if (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)))))) {
9087 {
9088 USI opval = GET_H_SPR (((UINT) 272));
9089 sim_queue_pc_write (current_cpu, opval);
9090 written |= (1 << 3);
9091 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9092 }
9093 }
9094 }
9095
9096 abuf->written = written;
9097 return vpc;
9098 #undef FLD
9099 }
9100
9101 /* bltlr: bltlr$pack $ICCi_2,$hint */
9102
9103 static SEM_PC
9104 SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9105 {
9106 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9108 int UNUSED written = 0;
9109 IADDR UNUSED pc = abuf->addr;
9110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9111
9112 {
9113 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9114 if (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)))) {
9115 {
9116 USI opval = GET_H_SPR (((UINT) 272));
9117 sim_queue_pc_write (current_cpu, opval);
9118 written |= (1 << 3);
9119 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9120 }
9121 }
9122 }
9123
9124 abuf->written = written;
9125 return vpc;
9126 #undef FLD
9127 }
9128
9129 /* bgelr: bgelr$pack $ICCi_2,$hint */
9130
9131 static SEM_PC
9132 SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9133 {
9134 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9136 int UNUSED written = 0;
9137 IADDR UNUSED pc = abuf->addr;
9138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9139
9140 {
9141 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9142 if (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))))) {
9143 {
9144 USI opval = GET_H_SPR (((UINT) 272));
9145 sim_queue_pc_write (current_cpu, opval);
9146 written |= (1 << 3);
9147 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9148 }
9149 }
9150 }
9151
9152 abuf->written = written;
9153 return vpc;
9154 #undef FLD
9155 }
9156
9157 /* blslr: blslr$pack $ICCi_2,$hint */
9158
9159 static SEM_PC
9160 SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9161 {
9162 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9163 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9164 int UNUSED written = 0;
9165 IADDR UNUSED pc = abuf->addr;
9166 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9167
9168 {
9169 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9170 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9171 {
9172 USI opval = GET_H_SPR (((UINT) 272));
9173 sim_queue_pc_write (current_cpu, opval);
9174 written |= (1 << 3);
9175 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9176 }
9177 }
9178 }
9179
9180 abuf->written = written;
9181 return vpc;
9182 #undef FLD
9183 }
9184
9185 /* bhilr: bhilr$pack $ICCi_2,$hint */
9186
9187 static SEM_PC
9188 SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9189 {
9190 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9191 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9192 int UNUSED written = 0;
9193 IADDR UNUSED pc = abuf->addr;
9194 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9195
9196 {
9197 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9198 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
9199 {
9200 USI opval = GET_H_SPR (((UINT) 272));
9201 sim_queue_pc_write (current_cpu, opval);
9202 written |= (1 << 3);
9203 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9204 }
9205 }
9206 }
9207
9208 abuf->written = written;
9209 return vpc;
9210 #undef FLD
9211 }
9212
9213 /* bclr: bclr$pack $ICCi_2,$hint */
9214
9215 static SEM_PC
9216 SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9217 {
9218 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9220 int UNUSED written = 0;
9221 IADDR UNUSED pc = abuf->addr;
9222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9223
9224 {
9225 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9226 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9227 {
9228 USI opval = GET_H_SPR (((UINT) 272));
9229 sim_queue_pc_write (current_cpu, opval);
9230 written |= (1 << 3);
9231 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9232 }
9233 }
9234 }
9235
9236 abuf->written = written;
9237 return vpc;
9238 #undef FLD
9239 }
9240
9241 /* bnclr: bnclr$pack $ICCi_2,$hint */
9242
9243 static SEM_PC
9244 SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9245 {
9246 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9248 int UNUSED written = 0;
9249 IADDR UNUSED pc = abuf->addr;
9250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9251
9252 {
9253 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9254 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9255 {
9256 USI opval = GET_H_SPR (((UINT) 272));
9257 sim_queue_pc_write (current_cpu, opval);
9258 written |= (1 << 3);
9259 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9260 }
9261 }
9262 }
9263
9264 abuf->written = written;
9265 return vpc;
9266 #undef FLD
9267 }
9268
9269 /* bnlr: bnlr$pack $ICCi_2,$hint */
9270
9271 static SEM_PC
9272 SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9273 {
9274 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9275 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9276 int UNUSED written = 0;
9277 IADDR UNUSED pc = abuf->addr;
9278 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9279
9280 {
9281 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9282 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9283 {
9284 USI opval = GET_H_SPR (((UINT) 272));
9285 sim_queue_pc_write (current_cpu, opval);
9286 written |= (1 << 3);
9287 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9288 }
9289 }
9290 }
9291
9292 abuf->written = written;
9293 return vpc;
9294 #undef FLD
9295 }
9296
9297 /* bplr: bplr$pack $ICCi_2,$hint */
9298
9299 static SEM_PC
9300 SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9301 {
9302 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9304 int UNUSED written = 0;
9305 IADDR UNUSED pc = abuf->addr;
9306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9307
9308 {
9309 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9310 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9311 {
9312 USI opval = GET_H_SPR (((UINT) 272));
9313 sim_queue_pc_write (current_cpu, opval);
9314 written |= (1 << 3);
9315 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9316 }
9317 }
9318 }
9319
9320 abuf->written = written;
9321 return vpc;
9322 #undef FLD
9323 }
9324
9325 /* bvlr: bvlr$pack $ICCi_2,$hint */
9326
9327 static SEM_PC
9328 SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9329 {
9330 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9332 int UNUSED written = 0;
9333 IADDR UNUSED pc = abuf->addr;
9334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9335
9336 {
9337 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9338 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9339 {
9340 USI opval = GET_H_SPR (((UINT) 272));
9341 sim_queue_pc_write (current_cpu, opval);
9342 written |= (1 << 3);
9343 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9344 }
9345 }
9346 }
9347
9348 abuf->written = written;
9349 return vpc;
9350 #undef FLD
9351 }
9352
9353 /* bnvlr: bnvlr$pack $ICCi_2,$hint */
9354
9355 static SEM_PC
9356 SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9357 {
9358 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9360 int UNUSED written = 0;
9361 IADDR UNUSED pc = abuf->addr;
9362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9363
9364 {
9365 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9366 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9367 {
9368 USI opval = GET_H_SPR (((UINT) 272));
9369 sim_queue_pc_write (current_cpu, opval);
9370 written |= (1 << 3);
9371 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9372 }
9373 }
9374 }
9375
9376 abuf->written = written;
9377 return vpc;
9378 #undef FLD
9379 }
9380
9381 /* fbralr: fbralr$pack$hint_taken */
9382
9383 static SEM_PC
9384 SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9385 {
9386 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9387 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9388 int UNUSED written = 0;
9389 IADDR UNUSED pc = abuf->addr;
9390 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9391
9392 {
9393 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9394 {
9395 USI opval = GET_H_SPR (((UINT) 272));
9396 sim_queue_pc_write (current_cpu, opval);
9397 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9398 }
9399 }
9400
9401 return vpc;
9402 #undef FLD
9403 }
9404
9405 /* fbnolr: fbnolr$pack$hint_not_taken */
9406
9407 static SEM_PC
9408 SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9409 {
9410 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9412 int UNUSED written = 0;
9413 IADDR UNUSED pc = abuf->addr;
9414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9415
9416 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9417
9418 return vpc;
9419 #undef FLD
9420 }
9421
9422 /* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9423
9424 static SEM_PC
9425 SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9426 {
9427 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9429 int UNUSED written = 0;
9430 IADDR UNUSED pc = abuf->addr;
9431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9432
9433 {
9434 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9435 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9436 {
9437 USI opval = GET_H_SPR (((UINT) 272));
9438 sim_queue_pc_write (current_cpu, opval);
9439 written |= (1 << 3);
9440 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9441 }
9442 }
9443 }
9444
9445 abuf->written = written;
9446 return vpc;
9447 #undef FLD
9448 }
9449
9450 /* fbnelr: fbnelr$pack $FCCi_2,$hint */
9451
9452 static SEM_PC
9453 SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9454 {
9455 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9457 int UNUSED written = 0;
9458 IADDR UNUSED pc = abuf->addr;
9459 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9460
9461 {
9462 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9463 if (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))))) {
9464 {
9465 USI opval = GET_H_SPR (((UINT) 272));
9466 sim_queue_pc_write (current_cpu, opval);
9467 written |= (1 << 3);
9468 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9469 }
9470 }
9471 }
9472
9473 abuf->written = written;
9474 return vpc;
9475 #undef FLD
9476 }
9477
9478 /* fblglr: fblglr$pack $FCCi_2,$hint */
9479
9480 static SEM_PC
9481 SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9482 {
9483 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9485 int UNUSED written = 0;
9486 IADDR UNUSED pc = abuf->addr;
9487 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9488
9489 {
9490 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9491 if (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)))) {
9492 {
9493 USI opval = GET_H_SPR (((UINT) 272));
9494 sim_queue_pc_write (current_cpu, opval);
9495 written |= (1 << 3);
9496 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9497 }
9498 }
9499 }
9500
9501 abuf->written = written;
9502 return vpc;
9503 #undef FLD
9504 }
9505
9506 /* fbuelr: fbuelr$pack $FCCi_2,$hint */
9507
9508 static SEM_PC
9509 SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9510 {
9511 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9512 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9513 int UNUSED written = 0;
9514 IADDR UNUSED pc = abuf->addr;
9515 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9516
9517 {
9518 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9519 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9520 {
9521 USI opval = GET_H_SPR (((UINT) 272));
9522 sim_queue_pc_write (current_cpu, opval);
9523 written |= (1 << 3);
9524 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9525 }
9526 }
9527 }
9528
9529 abuf->written = written;
9530 return vpc;
9531 #undef FLD
9532 }
9533
9534 /* fbullr: fbullr$pack $FCCi_2,$hint */
9535
9536 static SEM_PC
9537 SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9538 {
9539 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9540 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9541 int UNUSED written = 0;
9542 IADDR UNUSED pc = abuf->addr;
9543 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9544
9545 {
9546 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9547 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9548 {
9549 USI opval = GET_H_SPR (((UINT) 272));
9550 sim_queue_pc_write (current_cpu, opval);
9551 written |= (1 << 3);
9552 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9553 }
9554 }
9555 }
9556
9557 abuf->written = written;
9558 return vpc;
9559 #undef FLD
9560 }
9561
9562 /* fbgelr: fbgelr$pack $FCCi_2,$hint */
9563
9564 static SEM_PC
9565 SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9566 {
9567 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9569 int UNUSED written = 0;
9570 IADDR UNUSED pc = abuf->addr;
9571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9572
9573 {
9574 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9575 if (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)))) {
9576 {
9577 USI opval = GET_H_SPR (((UINT) 272));
9578 sim_queue_pc_write (current_cpu, opval);
9579 written |= (1 << 3);
9580 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9581 }
9582 }
9583 }
9584
9585 abuf->written = written;
9586 return vpc;
9587 #undef FLD
9588 }
9589
9590 /* fbltlr: fbltlr$pack $FCCi_2,$hint */
9591
9592 static SEM_PC
9593 SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9594 {
9595 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9596 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9597 int UNUSED written = 0;
9598 IADDR UNUSED pc = abuf->addr;
9599 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9600
9601 {
9602 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9603 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9604 {
9605 USI opval = GET_H_SPR (((UINT) 272));
9606 sim_queue_pc_write (current_cpu, opval);
9607 written |= (1 << 3);
9608 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9609 }
9610 }
9611 }
9612
9613 abuf->written = written;
9614 return vpc;
9615 #undef FLD
9616 }
9617
9618 /* fbugelr: fbugelr$pack $FCCi_2,$hint */
9619
9620 static SEM_PC
9621 SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9622 {
9623 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9624 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9625 int UNUSED written = 0;
9626 IADDR UNUSED pc = abuf->addr;
9627 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9628
9629 {
9630 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9631 if (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))))) {
9632 {
9633 USI opval = GET_H_SPR (((UINT) 272));
9634 sim_queue_pc_write (current_cpu, opval);
9635 written |= (1 << 3);
9636 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9637 }
9638 }
9639 }
9640
9641 abuf->written = written;
9642 return vpc;
9643 #undef FLD
9644 }
9645
9646 /* fbuglr: fbuglr$pack $FCCi_2,$hint */
9647
9648 static SEM_PC
9649 SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9650 {
9651 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9652 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9653 int UNUSED written = 0;
9654 IADDR UNUSED pc = abuf->addr;
9655 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9656
9657 {
9658 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9659 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9660 {
9661 USI opval = GET_H_SPR (((UINT) 272));
9662 sim_queue_pc_write (current_cpu, opval);
9663 written |= (1 << 3);
9664 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9665 }
9666 }
9667 }
9668
9669 abuf->written = written;
9670 return vpc;
9671 #undef FLD
9672 }
9673
9674 /* fblelr: fblelr$pack $FCCi_2,$hint */
9675
9676 static SEM_PC
9677 SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9678 {
9679 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9681 int UNUSED written = 0;
9682 IADDR UNUSED pc = abuf->addr;
9683 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9684
9685 {
9686 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9687 if (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)))) {
9688 {
9689 USI opval = GET_H_SPR (((UINT) 272));
9690 sim_queue_pc_write (current_cpu, opval);
9691 written |= (1 << 3);
9692 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9693 }
9694 }
9695 }
9696
9697 abuf->written = written;
9698 return vpc;
9699 #undef FLD
9700 }
9701
9702 /* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9703
9704 static SEM_PC
9705 SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9706 {
9707 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9708 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9709 int UNUSED written = 0;
9710 IADDR UNUSED pc = abuf->addr;
9711 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9712
9713 {
9714 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9715 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9716 {
9717 USI opval = GET_H_SPR (((UINT) 272));
9718 sim_queue_pc_write (current_cpu, opval);
9719 written |= (1 << 3);
9720 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9721 }
9722 }
9723 }
9724
9725 abuf->written = written;
9726 return vpc;
9727 #undef FLD
9728 }
9729
9730 /* fbulelr: fbulelr$pack $FCCi_2,$hint */
9731
9732 static SEM_PC
9733 SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9734 {
9735 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9737 int UNUSED written = 0;
9738 IADDR UNUSED pc = abuf->addr;
9739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9740
9741 {
9742 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9743 if (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))))) {
9744 {
9745 USI opval = GET_H_SPR (((UINT) 272));
9746 sim_queue_pc_write (current_cpu, opval);
9747 written |= (1 << 3);
9748 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9749 }
9750 }
9751 }
9752
9753 abuf->written = written;
9754 return vpc;
9755 #undef FLD
9756 }
9757
9758 /* fbulr: fbulr$pack $FCCi_2,$hint */
9759
9760 static SEM_PC
9761 SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9762 {
9763 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9764 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9765 int UNUSED written = 0;
9766 IADDR UNUSED pc = abuf->addr;
9767 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9768
9769 {
9770 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9771 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9772 {
9773 USI opval = GET_H_SPR (((UINT) 272));
9774 sim_queue_pc_write (current_cpu, opval);
9775 written |= (1 << 3);
9776 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9777 }
9778 }
9779 }
9780
9781 abuf->written = written;
9782 return vpc;
9783 #undef FLD
9784 }
9785
9786 /* fbolr: fbolr$pack $FCCi_2,$hint */
9787
9788 static SEM_PC
9789 SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9790 {
9791 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9792 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9793 int UNUSED written = 0;
9794 IADDR UNUSED pc = abuf->addr;
9795 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9796
9797 {
9798 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9799 if (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))))) {
9800 {
9801 USI opval = GET_H_SPR (((UINT) 272));
9802 sim_queue_pc_write (current_cpu, opval);
9803 written |= (1 << 3);
9804 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9805 }
9806 }
9807 }
9808
9809 abuf->written = written;
9810 return vpc;
9811 #undef FLD
9812 }
9813
9814 /* bcralr: bcralr$pack $ccond$hint_taken */
9815
9816 static SEM_PC
9817 SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9818 {
9819 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9821 int UNUSED written = 0;
9822 IADDR UNUSED pc = abuf->addr;
9823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9824
9825 {
9826 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9827 {
9828 SI tmp_tmp;
9829 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9830 {
9831 USI opval = tmp_tmp;
9832 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9833 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9834 }
9835 if (EQSI (FLD (f_ccond), 0)) {
9836 if (NESI (tmp_tmp, 0)) {
9837 {
9838 USI opval = GET_H_SPR (((UINT) 272));
9839 sim_queue_pc_write (current_cpu, opval);
9840 written |= (1 << 5);
9841 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9842 }
9843 }
9844 } else {
9845 if (EQSI (tmp_tmp, 0)) {
9846 {
9847 USI opval = GET_H_SPR (((UINT) 272));
9848 sim_queue_pc_write (current_cpu, opval);
9849 written |= (1 << 5);
9850 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9851 }
9852 }
9853 }
9854 }
9855 }
9856
9857 abuf->written = written;
9858 return vpc;
9859 #undef FLD
9860 }
9861
9862 /* bcnolr: bcnolr$pack$hint_not_taken */
9863
9864 static SEM_PC
9865 SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9866 {
9867 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9869 int UNUSED written = 0;
9870 IADDR UNUSED pc = abuf->addr;
9871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9872
9873 {
9874 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9875 {
9876 SI tmp_tmp;
9877 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9878 {
9879 USI opval = tmp_tmp;
9880 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9881 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9882 }
9883 ((void) 0); /*nop*/
9884 }
9885 }
9886
9887 return vpc;
9888 #undef FLD
9889 }
9890
9891 /* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9892
9893 static SEM_PC
9894 SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9895 {
9896 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9898 int UNUSED written = 0;
9899 IADDR UNUSED pc = abuf->addr;
9900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9901
9902 {
9903 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9904 {
9905 SI tmp_tmp;
9906 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9907 {
9908 USI opval = tmp_tmp;
9909 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9910 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9911 }
9912 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9913 if (EQSI (FLD (f_ccond), 0)) {
9914 if (NESI (tmp_tmp, 0)) {
9915 {
9916 USI opval = GET_H_SPR (((UINT) 272));
9917 sim_queue_pc_write (current_cpu, opval);
9918 written |= (1 << 6);
9919 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9920 }
9921 }
9922 } else {
9923 if (EQSI (tmp_tmp, 0)) {
9924 {
9925 USI opval = GET_H_SPR (((UINT) 272));
9926 sim_queue_pc_write (current_cpu, opval);
9927 written |= (1 << 6);
9928 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9929 }
9930 }
9931 }
9932 }
9933 }
9934 }
9935
9936 abuf->written = written;
9937 return vpc;
9938 #undef FLD
9939 }
9940
9941 /* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9942
9943 static SEM_PC
9944 SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9945 {
9946 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9947 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9948 int UNUSED written = 0;
9949 IADDR UNUSED pc = abuf->addr;
9950 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9951
9952 {
9953 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9954 {
9955 SI tmp_tmp;
9956 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9957 {
9958 USI opval = tmp_tmp;
9959 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9960 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9961 }
9962 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9963 if (EQSI (FLD (f_ccond), 0)) {
9964 if (NESI (tmp_tmp, 0)) {
9965 {
9966 USI opval = GET_H_SPR (((UINT) 272));
9967 sim_queue_pc_write (current_cpu, opval);
9968 written |= (1 << 6);
9969 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9970 }
9971 }
9972 } else {
9973 if (EQSI (tmp_tmp, 0)) {
9974 {
9975 USI opval = GET_H_SPR (((UINT) 272));
9976 sim_queue_pc_write (current_cpu, opval);
9977 written |= (1 << 6);
9978 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9979 }
9980 }
9981 }
9982 }
9983 }
9984 }
9985
9986 abuf->written = written;
9987 return vpc;
9988 #undef FLD
9989 }
9990
9991 /* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9992
9993 static SEM_PC
9994 SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9995 {
9996 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9997 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9998 int UNUSED written = 0;
9999 IADDR UNUSED pc = abuf->addr;
10000 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10001
10002 {
10003 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10004 {
10005 SI tmp_tmp;
10006 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10007 {
10008 USI opval = tmp_tmp;
10009 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10010 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10011 }
10012 if (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))))) {
10013 if (EQSI (FLD (f_ccond), 0)) {
10014 if (NESI (tmp_tmp, 0)) {
10015 {
10016 USI opval = GET_H_SPR (((UINT) 272));
10017 sim_queue_pc_write (current_cpu, opval);
10018 written |= (1 << 6);
10019 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10020 }
10021 }
10022 } else {
10023 if (EQSI (tmp_tmp, 0)) {
10024 {
10025 USI opval = GET_H_SPR (((UINT) 272));
10026 sim_queue_pc_write (current_cpu, opval);
10027 written |= (1 << 6);
10028 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10029 }
10030 }
10031 }
10032 }
10033 }
10034 }
10035
10036 abuf->written = written;
10037 return vpc;
10038 #undef FLD
10039 }
10040
10041 /* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
10042
10043 static SEM_PC
10044 SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10045 {
10046 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10047 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10048 int UNUSED written = 0;
10049 IADDR UNUSED pc = abuf->addr;
10050 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10051
10052 {
10053 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10054 {
10055 SI tmp_tmp;
10056 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10057 {
10058 USI opval = tmp_tmp;
10059 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10060 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10061 }
10062 if (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)))))) {
10063 if (EQSI (FLD (f_ccond), 0)) {
10064 if (NESI (tmp_tmp, 0)) {
10065 {
10066 USI opval = GET_H_SPR (((UINT) 272));
10067 sim_queue_pc_write (current_cpu, opval);
10068 written |= (1 << 6);
10069 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10070 }
10071 }
10072 } else {
10073 if (EQSI (tmp_tmp, 0)) {
10074 {
10075 USI opval = GET_H_SPR (((UINT) 272));
10076 sim_queue_pc_write (current_cpu, opval);
10077 written |= (1 << 6);
10078 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10079 }
10080 }
10081 }
10082 }
10083 }
10084 }
10085
10086 abuf->written = written;
10087 return vpc;
10088 #undef FLD
10089 }
10090
10091 /* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
10092
10093 static SEM_PC
10094 SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10095 {
10096 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10098 int UNUSED written = 0;
10099 IADDR UNUSED pc = abuf->addr;
10100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10101
10102 {
10103 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10104 {
10105 SI tmp_tmp;
10106 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10107 {
10108 USI opval = tmp_tmp;
10109 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10110 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10111 }
10112 if (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)))) {
10113 if (EQSI (FLD (f_ccond), 0)) {
10114 if (NESI (tmp_tmp, 0)) {
10115 {
10116 USI opval = GET_H_SPR (((UINT) 272));
10117 sim_queue_pc_write (current_cpu, opval);
10118 written |= (1 << 6);
10119 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10120 }
10121 }
10122 } else {
10123 if (EQSI (tmp_tmp, 0)) {
10124 {
10125 USI opval = GET_H_SPR (((UINT) 272));
10126 sim_queue_pc_write (current_cpu, opval);
10127 written |= (1 << 6);
10128 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10129 }
10130 }
10131 }
10132 }
10133 }
10134 }
10135
10136 abuf->written = written;
10137 return vpc;
10138 #undef FLD
10139 }
10140
10141 /* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10142
10143 static SEM_PC
10144 SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10145 {
10146 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10148 int UNUSED written = 0;
10149 IADDR UNUSED pc = abuf->addr;
10150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10151
10152 {
10153 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10154 {
10155 SI tmp_tmp;
10156 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10157 {
10158 USI opval = tmp_tmp;
10159 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10160 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10161 }
10162 if (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))))) {
10163 if (EQSI (FLD (f_ccond), 0)) {
10164 if (NESI (tmp_tmp, 0)) {
10165 {
10166 USI opval = GET_H_SPR (((UINT) 272));
10167 sim_queue_pc_write (current_cpu, opval);
10168 written |= (1 << 6);
10169 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10170 }
10171 }
10172 } else {
10173 if (EQSI (tmp_tmp, 0)) {
10174 {
10175 USI opval = GET_H_SPR (((UINT) 272));
10176 sim_queue_pc_write (current_cpu, opval);
10177 written |= (1 << 6);
10178 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10179 }
10180 }
10181 }
10182 }
10183 }
10184 }
10185
10186 abuf->written = written;
10187 return vpc;
10188 #undef FLD
10189 }
10190
10191 /* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10192
10193 static SEM_PC
10194 SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10195 {
10196 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10198 int UNUSED written = 0;
10199 IADDR UNUSED pc = abuf->addr;
10200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10201
10202 {
10203 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10204 {
10205 SI tmp_tmp;
10206 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10207 {
10208 USI opval = tmp_tmp;
10209 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10210 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10211 }
10212 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10213 if (EQSI (FLD (f_ccond), 0)) {
10214 if (NESI (tmp_tmp, 0)) {
10215 {
10216 USI opval = GET_H_SPR (((UINT) 272));
10217 sim_queue_pc_write (current_cpu, opval);
10218 written |= (1 << 6);
10219 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10220 }
10221 }
10222 } else {
10223 if (EQSI (tmp_tmp, 0)) {
10224 {
10225 USI opval = GET_H_SPR (((UINT) 272));
10226 sim_queue_pc_write (current_cpu, opval);
10227 written |= (1 << 6);
10228 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10229 }
10230 }
10231 }
10232 }
10233 }
10234 }
10235
10236 abuf->written = written;
10237 return vpc;
10238 #undef FLD
10239 }
10240
10241 /* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10242
10243 static SEM_PC
10244 SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10245 {
10246 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10248 int UNUSED written = 0;
10249 IADDR UNUSED pc = abuf->addr;
10250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10251
10252 {
10253 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10254 {
10255 SI tmp_tmp;
10256 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10257 {
10258 USI opval = tmp_tmp;
10259 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10260 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10261 }
10262 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
10263 if (EQSI (FLD (f_ccond), 0)) {
10264 if (NESI (tmp_tmp, 0)) {
10265 {
10266 USI opval = GET_H_SPR (((UINT) 272));
10267 sim_queue_pc_write (current_cpu, opval);
10268 written |= (1 << 6);
10269 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10270 }
10271 }
10272 } else {
10273 if (EQSI (tmp_tmp, 0)) {
10274 {
10275 USI opval = GET_H_SPR (((UINT) 272));
10276 sim_queue_pc_write (current_cpu, opval);
10277 written |= (1 << 6);
10278 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10279 }
10280 }
10281 }
10282 }
10283 }
10284 }
10285
10286 abuf->written = written;
10287 return vpc;
10288 #undef FLD
10289 }
10290
10291 /* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10292
10293 static SEM_PC
10294 SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10295 {
10296 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10298 int UNUSED written = 0;
10299 IADDR UNUSED pc = abuf->addr;
10300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10301
10302 {
10303 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10304 {
10305 SI tmp_tmp;
10306 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10307 {
10308 USI opval = tmp_tmp;
10309 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10310 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10311 }
10312 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10313 if (EQSI (FLD (f_ccond), 0)) {
10314 if (NESI (tmp_tmp, 0)) {
10315 {
10316 USI opval = GET_H_SPR (((UINT) 272));
10317 sim_queue_pc_write (current_cpu, opval);
10318 written |= (1 << 6);
10319 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10320 }
10321 }
10322 } else {
10323 if (EQSI (tmp_tmp, 0)) {
10324 {
10325 USI opval = GET_H_SPR (((UINT) 272));
10326 sim_queue_pc_write (current_cpu, opval);
10327 written |= (1 << 6);
10328 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10329 }
10330 }
10331 }
10332 }
10333 }
10334 }
10335
10336 abuf->written = written;
10337 return vpc;
10338 #undef FLD
10339 }
10340
10341 /* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10342
10343 static SEM_PC
10344 SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10345 {
10346 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10348 int UNUSED written = 0;
10349 IADDR UNUSED pc = abuf->addr;
10350 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10351
10352 {
10353 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10354 {
10355 SI tmp_tmp;
10356 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10357 {
10358 USI opval = tmp_tmp;
10359 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10360 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10361 }
10362 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10363 if (EQSI (FLD (f_ccond), 0)) {
10364 if (NESI (tmp_tmp, 0)) {
10365 {
10366 USI opval = GET_H_SPR (((UINT) 272));
10367 sim_queue_pc_write (current_cpu, opval);
10368 written |= (1 << 6);
10369 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10370 }
10371 }
10372 } else {
10373 if (EQSI (tmp_tmp, 0)) {
10374 {
10375 USI opval = GET_H_SPR (((UINT) 272));
10376 sim_queue_pc_write (current_cpu, opval);
10377 written |= (1 << 6);
10378 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10379 }
10380 }
10381 }
10382 }
10383 }
10384 }
10385
10386 abuf->written = written;
10387 return vpc;
10388 #undef FLD
10389 }
10390
10391 /* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10392
10393 static SEM_PC
10394 SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10395 {
10396 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10397 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10398 int UNUSED written = 0;
10399 IADDR UNUSED pc = abuf->addr;
10400 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10401
10402 {
10403 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10404 {
10405 SI tmp_tmp;
10406 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10407 {
10408 USI opval = tmp_tmp;
10409 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10410 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10411 }
10412 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10413 if (EQSI (FLD (f_ccond), 0)) {
10414 if (NESI (tmp_tmp, 0)) {
10415 {
10416 USI opval = GET_H_SPR (((UINT) 272));
10417 sim_queue_pc_write (current_cpu, opval);
10418 written |= (1 << 6);
10419 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10420 }
10421 }
10422 } else {
10423 if (EQSI (tmp_tmp, 0)) {
10424 {
10425 USI opval = GET_H_SPR (((UINT) 272));
10426 sim_queue_pc_write (current_cpu, opval);
10427 written |= (1 << 6);
10428 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10429 }
10430 }
10431 }
10432 }
10433 }
10434 }
10435
10436 abuf->written = written;
10437 return vpc;
10438 #undef FLD
10439 }
10440
10441 /* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10442
10443 static SEM_PC
10444 SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10445 {
10446 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10448 int UNUSED written = 0;
10449 IADDR UNUSED pc = abuf->addr;
10450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10451
10452 {
10453 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10454 {
10455 SI tmp_tmp;
10456 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10457 {
10458 USI opval = tmp_tmp;
10459 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10460 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10461 }
10462 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10463 if (EQSI (FLD (f_ccond), 0)) {
10464 if (NESI (tmp_tmp, 0)) {
10465 {
10466 USI opval = GET_H_SPR (((UINT) 272));
10467 sim_queue_pc_write (current_cpu, opval);
10468 written |= (1 << 6);
10469 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10470 }
10471 }
10472 } else {
10473 if (EQSI (tmp_tmp, 0)) {
10474 {
10475 USI opval = GET_H_SPR (((UINT) 272));
10476 sim_queue_pc_write (current_cpu, opval);
10477 written |= (1 << 6);
10478 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10479 }
10480 }
10481 }
10482 }
10483 }
10484 }
10485
10486 abuf->written = written;
10487 return vpc;
10488 #undef FLD
10489 }
10490
10491 /* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10492
10493 static SEM_PC
10494 SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10495 {
10496 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10498 int UNUSED written = 0;
10499 IADDR UNUSED pc = abuf->addr;
10500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10501
10502 {
10503 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10504 {
10505 SI tmp_tmp;
10506 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10507 {
10508 USI opval = tmp_tmp;
10509 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10510 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10511 }
10512 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10513 if (EQSI (FLD (f_ccond), 0)) {
10514 if (NESI (tmp_tmp, 0)) {
10515 {
10516 USI opval = GET_H_SPR (((UINT) 272));
10517 sim_queue_pc_write (current_cpu, opval);
10518 written |= (1 << 6);
10519 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10520 }
10521 }
10522 } else {
10523 if (EQSI (tmp_tmp, 0)) {
10524 {
10525 USI opval = GET_H_SPR (((UINT) 272));
10526 sim_queue_pc_write (current_cpu, opval);
10527 written |= (1 << 6);
10528 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10529 }
10530 }
10531 }
10532 }
10533 }
10534 }
10535
10536 abuf->written = written;
10537 return vpc;
10538 #undef FLD
10539 }
10540
10541 /* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10542
10543 static SEM_PC
10544 SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10545 {
10546 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10548 int UNUSED written = 0;
10549 IADDR UNUSED pc = abuf->addr;
10550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10551
10552 {
10553 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10554 {
10555 SI tmp_tmp;
10556 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10557 {
10558 USI opval = tmp_tmp;
10559 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10560 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10561 }
10562 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10563 if (EQSI (FLD (f_ccond), 0)) {
10564 if (NESI (tmp_tmp, 0)) {
10565 {
10566 USI opval = GET_H_SPR (((UINT) 272));
10567 sim_queue_pc_write (current_cpu, opval);
10568 written |= (1 << 6);
10569 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10570 }
10571 }
10572 } else {
10573 if (EQSI (tmp_tmp, 0)) {
10574 {
10575 USI opval = GET_H_SPR (((UINT) 272));
10576 sim_queue_pc_write (current_cpu, opval);
10577 written |= (1 << 6);
10578 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10579 }
10580 }
10581 }
10582 }
10583 }
10584 }
10585
10586 abuf->written = written;
10587 return vpc;
10588 #undef FLD
10589 }
10590
10591 /* fcbralr: fcbralr$pack $ccond$hint_taken */
10592
10593 static SEM_PC
10594 SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10595 {
10596 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10598 int UNUSED written = 0;
10599 IADDR UNUSED pc = abuf->addr;
10600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10601
10602 {
10603 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10604 {
10605 SI tmp_tmp;
10606 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10607 {
10608 USI opval = tmp_tmp;
10609 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10610 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10611 }
10612 if (EQSI (FLD (f_ccond), 0)) {
10613 if (NESI (tmp_tmp, 0)) {
10614 {
10615 USI opval = GET_H_SPR (((UINT) 272));
10616 sim_queue_pc_write (current_cpu, opval);
10617 written |= (1 << 5);
10618 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10619 }
10620 }
10621 } else {
10622 if (EQSI (tmp_tmp, 0)) {
10623 {
10624 USI opval = GET_H_SPR (((UINT) 272));
10625 sim_queue_pc_write (current_cpu, opval);
10626 written |= (1 << 5);
10627 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10628 }
10629 }
10630 }
10631 }
10632 }
10633
10634 abuf->written = written;
10635 return vpc;
10636 #undef FLD
10637 }
10638
10639 /* fcbnolr: fcbnolr$pack$hint_not_taken */
10640
10641 static SEM_PC
10642 SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10643 {
10644 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10645 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10646 int UNUSED written = 0;
10647 IADDR UNUSED pc = abuf->addr;
10648 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10649
10650 {
10651 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10652 {
10653 SI tmp_tmp;
10654 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10655 {
10656 USI opval = tmp_tmp;
10657 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10658 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10659 }
10660 ((void) 0); /*nop*/
10661 }
10662 }
10663
10664 return vpc;
10665 #undef FLD
10666 }
10667
10668 /* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10669
10670 static SEM_PC
10671 SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10672 {
10673 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10675 int UNUSED written = 0;
10676 IADDR UNUSED pc = abuf->addr;
10677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10678
10679 {
10680 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10681 {
10682 SI tmp_tmp;
10683 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10684 {
10685 USI opval = tmp_tmp;
10686 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10687 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10688 }
10689 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10690 if (EQSI (FLD (f_ccond), 0)) {
10691 if (NESI (tmp_tmp, 0)) {
10692 {
10693 USI opval = GET_H_SPR (((UINT) 272));
10694 sim_queue_pc_write (current_cpu, opval);
10695 written |= (1 << 6);
10696 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10697 }
10698 }
10699 } else {
10700 if (EQSI (tmp_tmp, 0)) {
10701 {
10702 USI opval = GET_H_SPR (((UINT) 272));
10703 sim_queue_pc_write (current_cpu, opval);
10704 written |= (1 << 6);
10705 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10706 }
10707 }
10708 }
10709 }
10710 }
10711 }
10712
10713 abuf->written = written;
10714 return vpc;
10715 #undef FLD
10716 }
10717
10718 /* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10719
10720 static SEM_PC
10721 SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10722 {
10723 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10725 int UNUSED written = 0;
10726 IADDR UNUSED pc = abuf->addr;
10727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10728
10729 {
10730 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10731 {
10732 SI tmp_tmp;
10733 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10734 {
10735 USI opval = tmp_tmp;
10736 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10737 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10738 }
10739 if (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))))) {
10740 if (EQSI (FLD (f_ccond), 0)) {
10741 if (NESI (tmp_tmp, 0)) {
10742 {
10743 USI opval = GET_H_SPR (((UINT) 272));
10744 sim_queue_pc_write (current_cpu, opval);
10745 written |= (1 << 6);
10746 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10747 }
10748 }
10749 } else {
10750 if (EQSI (tmp_tmp, 0)) {
10751 {
10752 USI opval = GET_H_SPR (((UINT) 272));
10753 sim_queue_pc_write (current_cpu, opval);
10754 written |= (1 << 6);
10755 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10756 }
10757 }
10758 }
10759 }
10760 }
10761 }
10762
10763 abuf->written = written;
10764 return vpc;
10765 #undef FLD
10766 }
10767
10768 /* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10769
10770 static SEM_PC
10771 SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10772 {
10773 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10775 int UNUSED written = 0;
10776 IADDR UNUSED pc = abuf->addr;
10777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10778
10779 {
10780 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10781 {
10782 SI tmp_tmp;
10783 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10784 {
10785 USI opval = tmp_tmp;
10786 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10787 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10788 }
10789 if (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)))) {
10790 if (EQSI (FLD (f_ccond), 0)) {
10791 if (NESI (tmp_tmp, 0)) {
10792 {
10793 USI opval = GET_H_SPR (((UINT) 272));
10794 sim_queue_pc_write (current_cpu, opval);
10795 written |= (1 << 6);
10796 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10797 }
10798 }
10799 } else {
10800 if (EQSI (tmp_tmp, 0)) {
10801 {
10802 USI opval = GET_H_SPR (((UINT) 272));
10803 sim_queue_pc_write (current_cpu, opval);
10804 written |= (1 << 6);
10805 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10806 }
10807 }
10808 }
10809 }
10810 }
10811 }
10812
10813 abuf->written = written;
10814 return vpc;
10815 #undef FLD
10816 }
10817
10818 /* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10819
10820 static SEM_PC
10821 SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10822 {
10823 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10825 int UNUSED written = 0;
10826 IADDR UNUSED pc = abuf->addr;
10827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10828
10829 {
10830 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10831 {
10832 SI tmp_tmp;
10833 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10834 {
10835 USI opval = tmp_tmp;
10836 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10837 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10838 }
10839 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10840 if (EQSI (FLD (f_ccond), 0)) {
10841 if (NESI (tmp_tmp, 0)) {
10842 {
10843 USI opval = GET_H_SPR (((UINT) 272));
10844 sim_queue_pc_write (current_cpu, opval);
10845 written |= (1 << 6);
10846 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10847 }
10848 }
10849 } else {
10850 if (EQSI (tmp_tmp, 0)) {
10851 {
10852 USI opval = GET_H_SPR (((UINT) 272));
10853 sim_queue_pc_write (current_cpu, opval);
10854 written |= (1 << 6);
10855 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10856 }
10857 }
10858 }
10859 }
10860 }
10861 }
10862
10863 abuf->written = written;
10864 return vpc;
10865 #undef FLD
10866 }
10867
10868 /* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10869
10870 static SEM_PC
10871 SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10872 {
10873 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10874 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10875 int UNUSED written = 0;
10876 IADDR UNUSED pc = abuf->addr;
10877 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10878
10879 {
10880 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10881 {
10882 SI tmp_tmp;
10883 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10884 {
10885 USI opval = tmp_tmp;
10886 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10887 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10888 }
10889 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10890 if (EQSI (FLD (f_ccond), 0)) {
10891 if (NESI (tmp_tmp, 0)) {
10892 {
10893 USI opval = GET_H_SPR (((UINT) 272));
10894 sim_queue_pc_write (current_cpu, opval);
10895 written |= (1 << 6);
10896 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10897 }
10898 }
10899 } else {
10900 if (EQSI (tmp_tmp, 0)) {
10901 {
10902 USI opval = GET_H_SPR (((UINT) 272));
10903 sim_queue_pc_write (current_cpu, opval);
10904 written |= (1 << 6);
10905 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10906 }
10907 }
10908 }
10909 }
10910 }
10911 }
10912
10913 abuf->written = written;
10914 return vpc;
10915 #undef FLD
10916 }
10917
10918 /* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10919
10920 static SEM_PC
10921 SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10922 {
10923 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10925 int UNUSED written = 0;
10926 IADDR UNUSED pc = abuf->addr;
10927 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10928
10929 {
10930 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10931 {
10932 SI tmp_tmp;
10933 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10934 {
10935 USI opval = tmp_tmp;
10936 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10937 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10938 }
10939 if (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)))) {
10940 if (EQSI (FLD (f_ccond), 0)) {
10941 if (NESI (tmp_tmp, 0)) {
10942 {
10943 USI opval = GET_H_SPR (((UINT) 272));
10944 sim_queue_pc_write (current_cpu, opval);
10945 written |= (1 << 6);
10946 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10947 }
10948 }
10949 } else {
10950 if (EQSI (tmp_tmp, 0)) {
10951 {
10952 USI opval = GET_H_SPR (((UINT) 272));
10953 sim_queue_pc_write (current_cpu, opval);
10954 written |= (1 << 6);
10955 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10956 }
10957 }
10958 }
10959 }
10960 }
10961 }
10962
10963 abuf->written = written;
10964 return vpc;
10965 #undef FLD
10966 }
10967
10968 /* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10969
10970 static SEM_PC
10971 SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10972 {
10973 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10975 int UNUSED written = 0;
10976 IADDR UNUSED pc = abuf->addr;
10977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10978
10979 {
10980 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10981 {
10982 SI tmp_tmp;
10983 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10984 {
10985 USI opval = tmp_tmp;
10986 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10987 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10988 }
10989 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10990 if (EQSI (FLD (f_ccond), 0)) {
10991 if (NESI (tmp_tmp, 0)) {
10992 {
10993 USI opval = GET_H_SPR (((UINT) 272));
10994 sim_queue_pc_write (current_cpu, opval);
10995 written |= (1 << 6);
10996 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10997 }
10998 }
10999 } else {
11000 if (EQSI (tmp_tmp, 0)) {
11001 {
11002 USI opval = GET_H_SPR (((UINT) 272));
11003 sim_queue_pc_write (current_cpu, opval);
11004 written |= (1 << 6);
11005 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11006 }
11007 }
11008 }
11009 }
11010 }
11011 }
11012
11013 abuf->written = written;
11014 return vpc;
11015 #undef FLD
11016 }
11017
11018 /* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
11019
11020 static SEM_PC
11021 SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11022 {
11023 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11024 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11025 int UNUSED written = 0;
11026 IADDR UNUSED pc = abuf->addr;
11027 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11028
11029 {
11030 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11031 {
11032 SI tmp_tmp;
11033 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11034 {
11035 USI opval = tmp_tmp;
11036 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11037 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11038 }
11039 if (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))))) {
11040 if (EQSI (FLD (f_ccond), 0)) {
11041 if (NESI (tmp_tmp, 0)) {
11042 {
11043 USI opval = GET_H_SPR (((UINT) 272));
11044 sim_queue_pc_write (current_cpu, opval);
11045 written |= (1 << 6);
11046 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11047 }
11048 }
11049 } else {
11050 if (EQSI (tmp_tmp, 0)) {
11051 {
11052 USI opval = GET_H_SPR (((UINT) 272));
11053 sim_queue_pc_write (current_cpu, opval);
11054 written |= (1 << 6);
11055 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11056 }
11057 }
11058 }
11059 }
11060 }
11061 }
11062
11063 abuf->written = written;
11064 return vpc;
11065 #undef FLD
11066 }
11067
11068 /* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
11069
11070 static SEM_PC
11071 SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11072 {
11073 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11075 int UNUSED written = 0;
11076 IADDR UNUSED pc = abuf->addr;
11077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11078
11079 {
11080 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11081 {
11082 SI tmp_tmp;
11083 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11084 {
11085 USI opval = tmp_tmp;
11086 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11087 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11088 }
11089 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
11090 if (EQSI (FLD (f_ccond), 0)) {
11091 if (NESI (tmp_tmp, 0)) {
11092 {
11093 USI opval = GET_H_SPR (((UINT) 272));
11094 sim_queue_pc_write (current_cpu, opval);
11095 written |= (1 << 6);
11096 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11097 }
11098 }
11099 } else {
11100 if (EQSI (tmp_tmp, 0)) {
11101 {
11102 USI opval = GET_H_SPR (((UINT) 272));
11103 sim_queue_pc_write (current_cpu, opval);
11104 written |= (1 << 6);
11105 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11106 }
11107 }
11108 }
11109 }
11110 }
11111 }
11112
11113 abuf->written = written;
11114 return vpc;
11115 #undef FLD
11116 }
11117
11118 /* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11119
11120 static SEM_PC
11121 SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11122 {
11123 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11125 int UNUSED written = 0;
11126 IADDR UNUSED pc = abuf->addr;
11127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11128
11129 {
11130 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11131 {
11132 SI tmp_tmp;
11133 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11134 {
11135 USI opval = tmp_tmp;
11136 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11137 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11138 }
11139 if (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)))) {
11140 if (EQSI (FLD (f_ccond), 0)) {
11141 if (NESI (tmp_tmp, 0)) {
11142 {
11143 USI opval = GET_H_SPR (((UINT) 272));
11144 sim_queue_pc_write (current_cpu, opval);
11145 written |= (1 << 6);
11146 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11147 }
11148 }
11149 } else {
11150 if (EQSI (tmp_tmp, 0)) {
11151 {
11152 USI opval = GET_H_SPR (((UINT) 272));
11153 sim_queue_pc_write (current_cpu, opval);
11154 written |= (1 << 6);
11155 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11156 }
11157 }
11158 }
11159 }
11160 }
11161 }
11162
11163 abuf->written = written;
11164 return vpc;
11165 #undef FLD
11166 }
11167
11168 /* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11169
11170 static SEM_PC
11171 SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11172 {
11173 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11175 int UNUSED written = 0;
11176 IADDR UNUSED pc = abuf->addr;
11177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11178
11179 {
11180 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11181 {
11182 SI tmp_tmp;
11183 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11184 {
11185 USI opval = tmp_tmp;
11186 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11187 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11188 }
11189 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11190 if (EQSI (FLD (f_ccond), 0)) {
11191 if (NESI (tmp_tmp, 0)) {
11192 {
11193 USI opval = GET_H_SPR (((UINT) 272));
11194 sim_queue_pc_write (current_cpu, opval);
11195 written |= (1 << 6);
11196 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11197 }
11198 }
11199 } else {
11200 if (EQSI (tmp_tmp, 0)) {
11201 {
11202 USI opval = GET_H_SPR (((UINT) 272));
11203 sim_queue_pc_write (current_cpu, opval);
11204 written |= (1 << 6);
11205 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11206 }
11207 }
11208 }
11209 }
11210 }
11211 }
11212
11213 abuf->written = written;
11214 return vpc;
11215 #undef FLD
11216 }
11217
11218 /* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11219
11220 static SEM_PC
11221 SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11222 {
11223 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11225 int UNUSED written = 0;
11226 IADDR UNUSED pc = abuf->addr;
11227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11228
11229 {
11230 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11231 {
11232 SI tmp_tmp;
11233 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11234 {
11235 USI opval = tmp_tmp;
11236 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11237 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11238 }
11239 if (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))))) {
11240 if (EQSI (FLD (f_ccond), 0)) {
11241 if (NESI (tmp_tmp, 0)) {
11242 {
11243 USI opval = GET_H_SPR (((UINT) 272));
11244 sim_queue_pc_write (current_cpu, opval);
11245 written |= (1 << 6);
11246 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11247 }
11248 }
11249 } else {
11250 if (EQSI (tmp_tmp, 0)) {
11251 {
11252 USI opval = GET_H_SPR (((UINT) 272));
11253 sim_queue_pc_write (current_cpu, opval);
11254 written |= (1 << 6);
11255 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11256 }
11257 }
11258 }
11259 }
11260 }
11261 }
11262
11263 abuf->written = written;
11264 return vpc;
11265 #undef FLD
11266 }
11267
11268 /* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11269
11270 static SEM_PC
11271 SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11272 {
11273 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11275 int UNUSED written = 0;
11276 IADDR UNUSED pc = abuf->addr;
11277 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11278
11279 {
11280 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11281 {
11282 SI tmp_tmp;
11283 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11284 {
11285 USI opval = tmp_tmp;
11286 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11287 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11288 }
11289 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11290 if (EQSI (FLD (f_ccond), 0)) {
11291 if (NESI (tmp_tmp, 0)) {
11292 {
11293 USI opval = GET_H_SPR (((UINT) 272));
11294 sim_queue_pc_write (current_cpu, opval);
11295 written |= (1 << 6);
11296 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11297 }
11298 }
11299 } else {
11300 if (EQSI (tmp_tmp, 0)) {
11301 {
11302 USI opval = GET_H_SPR (((UINT) 272));
11303 sim_queue_pc_write (current_cpu, opval);
11304 written |= (1 << 6);
11305 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11306 }
11307 }
11308 }
11309 }
11310 }
11311 }
11312
11313 abuf->written = written;
11314 return vpc;
11315 #undef FLD
11316 }
11317
11318 /* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11319
11320 static SEM_PC
11321 SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11322 {
11323 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11325 int UNUSED written = 0;
11326 IADDR UNUSED pc = abuf->addr;
11327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11328
11329 {
11330 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11331 {
11332 SI tmp_tmp;
11333 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11334 {
11335 USI opval = tmp_tmp;
11336 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11337 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11338 }
11339 if (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))))) {
11340 if (EQSI (FLD (f_ccond), 0)) {
11341 if (NESI (tmp_tmp, 0)) {
11342 {
11343 USI opval = GET_H_SPR (((UINT) 272));
11344 sim_queue_pc_write (current_cpu, opval);
11345 written |= (1 << 6);
11346 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11347 }
11348 }
11349 } else {
11350 if (EQSI (tmp_tmp, 0)) {
11351 {
11352 USI opval = GET_H_SPR (((UINT) 272));
11353 sim_queue_pc_write (current_cpu, opval);
11354 written |= (1 << 6);
11355 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11356 }
11357 }
11358 }
11359 }
11360 }
11361 }
11362
11363 abuf->written = written;
11364 return vpc;
11365 #undef FLD
11366 }
11367
11368 /* jmpl: jmpl$pack @($GRi,$GRj) */
11369
11370 static SEM_PC
11371 SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11372 {
11373 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11375 int UNUSED written = 0;
11376 IADDR UNUSED pc = abuf->addr;
11377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11378
11379 {
11380 if (EQSI (FLD (f_LI), 1)) {
11381 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11382 }
11383 {
11384 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11385 sim_queue_pc_write (current_cpu, opval);
11386 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11387 }
11388 frvbf_model_branch (current_cpu, pc, 2);
11389 }
11390
11391 return vpc;
11392 #undef FLD
11393 }
11394
11395 /* calll: calll$pack @($GRi,$GRj) */
11396
11397 static SEM_PC
11398 SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11399 {
11400 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11401 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11402 int UNUSED written = 0;
11403 IADDR UNUSED pc = abuf->addr;
11404 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11405
11406 {
11407 if (EQSI (FLD (f_LI), 1)) {
11408 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11409 }
11410 {
11411 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11412 sim_queue_pc_write (current_cpu, opval);
11413 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11414 }
11415 frvbf_model_branch (current_cpu, pc, 2);
11416 }
11417
11418 return vpc;
11419 #undef FLD
11420 }
11421
11422 /* jmpil: jmpil$pack @($GRi,$s12) */
11423
11424 static SEM_PC
11425 SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11426 {
11427 #define FLD(f) abuf->fields.sfmt_jmpil.f
11428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11429 int UNUSED written = 0;
11430 IADDR UNUSED pc = abuf->addr;
11431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11432
11433 {
11434 if (EQSI (FLD (f_LI), 1)) {
11435 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11436 }
11437 {
11438 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11439 sim_queue_pc_write (current_cpu, opval);
11440 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11441 }
11442 frvbf_model_branch (current_cpu, pc, 2);
11443 }
11444
11445 return vpc;
11446 #undef FLD
11447 }
11448
11449 /* callil: callil$pack @($GRi,$s12) */
11450
11451 static SEM_PC
11452 SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11453 {
11454 #define FLD(f) abuf->fields.sfmt_jmpil.f
11455 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11456 int UNUSED written = 0;
11457 IADDR UNUSED pc = abuf->addr;
11458 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11459
11460 {
11461 if (EQSI (FLD (f_LI), 1)) {
11462 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11463 }
11464 {
11465 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11466 sim_queue_pc_write (current_cpu, opval);
11467 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11468 }
11469 frvbf_model_branch (current_cpu, pc, 2);
11470 }
11471
11472 return vpc;
11473 #undef FLD
11474 }
11475
11476 /* call: call$pack $label24 */
11477
11478 static SEM_PC
11479 SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11480 {
11481 #define FLD(f) abuf->fields.sfmt_call.f
11482 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11483 int UNUSED written = 0;
11484 IADDR UNUSED pc = abuf->addr;
11485 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11486
11487 {
11488 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11489 {
11490 USI opval = FLD (i_label24);
11491 sim_queue_pc_write (current_cpu, opval);
11492 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11493 }
11494 frvbf_model_branch (current_cpu, pc, 2);
11495 }
11496
11497 return vpc;
11498 #undef FLD
11499 }
11500
11501 /* rett: rett$pack $debug */
11502
11503 static SEM_PC
11504 SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11505 {
11506 #define FLD(f) abuf->fields.sfmt_rett.f
11507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11508 int UNUSED written = 0;
11509 IADDR UNUSED pc = abuf->addr;
11510 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11511
11512 {
11513 {
11514 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11515 sim_queue_pc_write (current_cpu, opval);
11516 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11517 }
11518 frvbf_model_branch (current_cpu, pc, 2);
11519 }
11520
11521 return vpc;
11522 #undef FLD
11523 }
11524
11525 /* rei: rei$pack $eir */
11526
11527 static SEM_PC
11528 SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11529 {
11530 #define FLD(f) abuf->fields.fmt_empty.f
11531 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11532 int UNUSED written = 0;
11533 IADDR UNUSED pc = abuf->addr;
11534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11535
11536 ((void) 0); /*nop*/
11537
11538 return vpc;
11539 #undef FLD
11540 }
11541
11542 /* tra: tra$pack $GRi,$GRj */
11543
11544 static SEM_PC
11545 SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11546 {
11547 #define FLD(f) abuf->fields.sfmt_ftne.f
11548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11549 int UNUSED written = 0;
11550 IADDR UNUSED pc = abuf->addr;
11551 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11552
11553 {
11554 ; /*clobber*/
11555 ; /*clobber*/
11556 ; /*clobber*/
11557 ; /*clobber*/
11558 if (NEBI (CPU (h_psr_esr), 0)) {
11559 {
11560 ; /*clobber*/
11561 ; /*clobber*/
11562 ; /*clobber*/
11563 ; /*clobber*/
11564 }
11565 }
11566 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11567 }
11568
11569 abuf->written = written;
11570 return vpc;
11571 #undef FLD
11572 }
11573
11574 /* tno: tno$pack */
11575
11576 static SEM_PC
11577 SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11578 {
11579 #define FLD(f) abuf->fields.fmt_empty.f
11580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11581 int UNUSED written = 0;
11582 IADDR UNUSED pc = abuf->addr;
11583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11584
11585 ((void) 0); /*nop*/
11586
11587 return vpc;
11588 #undef FLD
11589 }
11590
11591 /* teq: teq$pack $ICCi_2,$GRi,$GRj */
11592
11593 static SEM_PC
11594 SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11595 {
11596 #define FLD(f) abuf->fields.sfmt_teq.f
11597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11598 int UNUSED written = 0;
11599 IADDR UNUSED pc = abuf->addr;
11600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11601
11602 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11603 {
11604 ; /*clobber*/
11605 ; /*clobber*/
11606 ; /*clobber*/
11607 ; /*clobber*/
11608 if (NEBI (CPU (h_psr_esr), 0)) {
11609 {
11610 ; /*clobber*/
11611 ; /*clobber*/
11612 ; /*clobber*/
11613 ; /*clobber*/
11614 }
11615 }
11616 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11617 }
11618 }
11619
11620 abuf->written = written;
11621 return vpc;
11622 #undef FLD
11623 }
11624
11625 /* tne: tne$pack $ICCi_2,$GRi,$GRj */
11626
11627 static SEM_PC
11628 SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11629 {
11630 #define FLD(f) abuf->fields.sfmt_teq.f
11631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11632 int UNUSED written = 0;
11633 IADDR UNUSED pc = abuf->addr;
11634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11635
11636 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11637 {
11638 ; /*clobber*/
11639 ; /*clobber*/
11640 ; /*clobber*/
11641 ; /*clobber*/
11642 if (NEBI (CPU (h_psr_esr), 0)) {
11643 {
11644 ; /*clobber*/
11645 ; /*clobber*/
11646 ; /*clobber*/
11647 ; /*clobber*/
11648 }
11649 }
11650 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11651 }
11652 }
11653
11654 abuf->written = written;
11655 return vpc;
11656 #undef FLD
11657 }
11658
11659 /* tle: tle$pack $ICCi_2,$GRi,$GRj */
11660
11661 static SEM_PC
11662 SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11663 {
11664 #define FLD(f) abuf->fields.sfmt_teq.f
11665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11666 int UNUSED written = 0;
11667 IADDR UNUSED pc = abuf->addr;
11668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11669
11670 if (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))))) {
11671 {
11672 ; /*clobber*/
11673 ; /*clobber*/
11674 ; /*clobber*/
11675 ; /*clobber*/
11676 if (NEBI (CPU (h_psr_esr), 0)) {
11677 {
11678 ; /*clobber*/
11679 ; /*clobber*/
11680 ; /*clobber*/
11681 ; /*clobber*/
11682 }
11683 }
11684 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11685 }
11686 }
11687
11688 abuf->written = written;
11689 return vpc;
11690 #undef FLD
11691 }
11692
11693 /* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11694
11695 static SEM_PC
11696 SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11697 {
11698 #define FLD(f) abuf->fields.sfmt_teq.f
11699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11700 int UNUSED written = 0;
11701 IADDR UNUSED pc = abuf->addr;
11702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11703
11704 if (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)))))) {
11705 {
11706 ; /*clobber*/
11707 ; /*clobber*/
11708 ; /*clobber*/
11709 ; /*clobber*/
11710 if (NEBI (CPU (h_psr_esr), 0)) {
11711 {
11712 ; /*clobber*/
11713 ; /*clobber*/
11714 ; /*clobber*/
11715 ; /*clobber*/
11716 }
11717 }
11718 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11719 }
11720 }
11721
11722 abuf->written = written;
11723 return vpc;
11724 #undef FLD
11725 }
11726
11727 /* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11728
11729 static SEM_PC
11730 SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11731 {
11732 #define FLD(f) abuf->fields.sfmt_teq.f
11733 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11734 int UNUSED written = 0;
11735 IADDR UNUSED pc = abuf->addr;
11736 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11737
11738 if (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)))) {
11739 {
11740 ; /*clobber*/
11741 ; /*clobber*/
11742 ; /*clobber*/
11743 ; /*clobber*/
11744 if (NEBI (CPU (h_psr_esr), 0)) {
11745 {
11746 ; /*clobber*/
11747 ; /*clobber*/
11748 ; /*clobber*/
11749 ; /*clobber*/
11750 }
11751 }
11752 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11753 }
11754 }
11755
11756 abuf->written = written;
11757 return vpc;
11758 #undef FLD
11759 }
11760
11761 /* tge: tge$pack $ICCi_2,$GRi,$GRj */
11762
11763 static SEM_PC
11764 SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11765 {
11766 #define FLD(f) abuf->fields.sfmt_teq.f
11767 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11768 int UNUSED written = 0;
11769 IADDR UNUSED pc = abuf->addr;
11770 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11771
11772 if (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))))) {
11773 {
11774 ; /*clobber*/
11775 ; /*clobber*/
11776 ; /*clobber*/
11777 ; /*clobber*/
11778 if (NEBI (CPU (h_psr_esr), 0)) {
11779 {
11780 ; /*clobber*/
11781 ; /*clobber*/
11782 ; /*clobber*/
11783 ; /*clobber*/
11784 }
11785 }
11786 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11787 }
11788 }
11789
11790 abuf->written = written;
11791 return vpc;
11792 #undef FLD
11793 }
11794
11795 /* tls: tls$pack $ICCi_2,$GRi,$GRj */
11796
11797 static SEM_PC
11798 SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11799 {
11800 #define FLD(f) abuf->fields.sfmt_teq.f
11801 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11802 int UNUSED written = 0;
11803 IADDR UNUSED pc = abuf->addr;
11804 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11805
11806 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11807 {
11808 ; /*clobber*/
11809 ; /*clobber*/
11810 ; /*clobber*/
11811 ; /*clobber*/
11812 if (NEBI (CPU (h_psr_esr), 0)) {
11813 {
11814 ; /*clobber*/
11815 ; /*clobber*/
11816 ; /*clobber*/
11817 ; /*clobber*/
11818 }
11819 }
11820 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11821 }
11822 }
11823
11824 abuf->written = written;
11825 return vpc;
11826 #undef FLD
11827 }
11828
11829 /* thi: thi$pack $ICCi_2,$GRi,$GRj */
11830
11831 static SEM_PC
11832 SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11833 {
11834 #define FLD(f) abuf->fields.sfmt_teq.f
11835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11836 int UNUSED written = 0;
11837 IADDR UNUSED pc = abuf->addr;
11838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11839
11840 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
11841 {
11842 ; /*clobber*/
11843 ; /*clobber*/
11844 ; /*clobber*/
11845 ; /*clobber*/
11846 if (NEBI (CPU (h_psr_esr), 0)) {
11847 {
11848 ; /*clobber*/
11849 ; /*clobber*/
11850 ; /*clobber*/
11851 ; /*clobber*/
11852 }
11853 }
11854 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11855 }
11856 }
11857
11858 abuf->written = written;
11859 return vpc;
11860 #undef FLD
11861 }
11862
11863 /* tc: tc$pack $ICCi_2,$GRi,$GRj */
11864
11865 static SEM_PC
11866 SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11867 {
11868 #define FLD(f) abuf->fields.sfmt_teq.f
11869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11870 int UNUSED written = 0;
11871 IADDR UNUSED pc = abuf->addr;
11872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11873
11874 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11875 {
11876 ; /*clobber*/
11877 ; /*clobber*/
11878 ; /*clobber*/
11879 ; /*clobber*/
11880 if (NEBI (CPU (h_psr_esr), 0)) {
11881 {
11882 ; /*clobber*/
11883 ; /*clobber*/
11884 ; /*clobber*/
11885 ; /*clobber*/
11886 }
11887 }
11888 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11889 }
11890 }
11891
11892 abuf->written = written;
11893 return vpc;
11894 #undef FLD
11895 }
11896
11897 /* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11898
11899 static SEM_PC
11900 SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11901 {
11902 #define FLD(f) abuf->fields.sfmt_teq.f
11903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11904 int UNUSED written = 0;
11905 IADDR UNUSED pc = abuf->addr;
11906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11907
11908 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11909 {
11910 ; /*clobber*/
11911 ; /*clobber*/
11912 ; /*clobber*/
11913 ; /*clobber*/
11914 if (NEBI (CPU (h_psr_esr), 0)) {
11915 {
11916 ; /*clobber*/
11917 ; /*clobber*/
11918 ; /*clobber*/
11919 ; /*clobber*/
11920 }
11921 }
11922 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11923 }
11924 }
11925
11926 abuf->written = written;
11927 return vpc;
11928 #undef FLD
11929 }
11930
11931 /* tn: tn$pack $ICCi_2,$GRi,$GRj */
11932
11933 static SEM_PC
11934 SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11935 {
11936 #define FLD(f) abuf->fields.sfmt_teq.f
11937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11938 int UNUSED written = 0;
11939 IADDR UNUSED pc = abuf->addr;
11940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11941
11942 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11943 {
11944 ; /*clobber*/
11945 ; /*clobber*/
11946 ; /*clobber*/
11947 ; /*clobber*/
11948 if (NEBI (CPU (h_psr_esr), 0)) {
11949 {
11950 ; /*clobber*/
11951 ; /*clobber*/
11952 ; /*clobber*/
11953 ; /*clobber*/
11954 }
11955 }
11956 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11957 }
11958 }
11959
11960 abuf->written = written;
11961 return vpc;
11962 #undef FLD
11963 }
11964
11965 /* tp: tp$pack $ICCi_2,$GRi,$GRj */
11966
11967 static SEM_PC
11968 SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11969 {
11970 #define FLD(f) abuf->fields.sfmt_teq.f
11971 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11972 int UNUSED written = 0;
11973 IADDR UNUSED pc = abuf->addr;
11974 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11975
11976 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11977 {
11978 ; /*clobber*/
11979 ; /*clobber*/
11980 ; /*clobber*/
11981 ; /*clobber*/
11982 if (NEBI (CPU (h_psr_esr), 0)) {
11983 {
11984 ; /*clobber*/
11985 ; /*clobber*/
11986 ; /*clobber*/
11987 ; /*clobber*/
11988 }
11989 }
11990 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11991 }
11992 }
11993
11994 abuf->written = written;
11995 return vpc;
11996 #undef FLD
11997 }
11998
11999 /* tv: tv$pack $ICCi_2,$GRi,$GRj */
12000
12001 static SEM_PC
12002 SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12003 {
12004 #define FLD(f) abuf->fields.sfmt_teq.f
12005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12006 int UNUSED written = 0;
12007 IADDR UNUSED pc = abuf->addr;
12008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12009
12010 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12011 {
12012 ; /*clobber*/
12013 ; /*clobber*/
12014 ; /*clobber*/
12015 ; /*clobber*/
12016 if (NEBI (CPU (h_psr_esr), 0)) {
12017 {
12018 ; /*clobber*/
12019 ; /*clobber*/
12020 ; /*clobber*/
12021 ; /*clobber*/
12022 }
12023 }
12024 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12025 }
12026 }
12027
12028 abuf->written = written;
12029 return vpc;
12030 #undef FLD
12031 }
12032
12033 /* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
12034
12035 static SEM_PC
12036 SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12037 {
12038 #define FLD(f) abuf->fields.sfmt_teq.f
12039 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12040 int UNUSED written = 0;
12041 IADDR UNUSED pc = abuf->addr;
12042 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12043
12044 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
12045 {
12046 ; /*clobber*/
12047 ; /*clobber*/
12048 ; /*clobber*/
12049 ; /*clobber*/
12050 if (NEBI (CPU (h_psr_esr), 0)) {
12051 {
12052 ; /*clobber*/
12053 ; /*clobber*/
12054 ; /*clobber*/
12055 ; /*clobber*/
12056 }
12057 }
12058 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12059 }
12060 }
12061
12062 abuf->written = written;
12063 return vpc;
12064 #undef FLD
12065 }
12066
12067 /* ftra: ftra$pack $GRi,$GRj */
12068
12069 static SEM_PC
12070 SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12071 {
12072 #define FLD(f) abuf->fields.sfmt_ftne.f
12073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12074 int UNUSED written = 0;
12075 IADDR UNUSED pc = abuf->addr;
12076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12077
12078 {
12079 ; /*clobber*/
12080 ; /*clobber*/
12081 ; /*clobber*/
12082 ; /*clobber*/
12083 if (NEBI (CPU (h_psr_esr), 0)) {
12084 {
12085 ; /*clobber*/
12086 ; /*clobber*/
12087 ; /*clobber*/
12088 ; /*clobber*/
12089 }
12090 }
12091 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12092 }
12093
12094 abuf->written = written;
12095 return vpc;
12096 #undef FLD
12097 }
12098
12099 /* ftno: ftno$pack */
12100
12101 static SEM_PC
12102 SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12103 {
12104 #define FLD(f) abuf->fields.fmt_empty.f
12105 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12106 int UNUSED written = 0;
12107 IADDR UNUSED pc = abuf->addr;
12108 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12109
12110 ((void) 0); /*nop*/
12111
12112 return vpc;
12113 #undef FLD
12114 }
12115
12116 /* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12117
12118 static SEM_PC
12119 SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12120 {
12121 #define FLD(f) abuf->fields.sfmt_ftne.f
12122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12123 int UNUSED written = 0;
12124 IADDR UNUSED pc = abuf->addr;
12125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12126
12127 if (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))))) {
12128 {
12129 ; /*clobber*/
12130 ; /*clobber*/
12131 ; /*clobber*/
12132 ; /*clobber*/
12133 if (NEBI (CPU (h_psr_esr), 0)) {
12134 {
12135 ; /*clobber*/
12136 ; /*clobber*/
12137 ; /*clobber*/
12138 ; /*clobber*/
12139 }
12140 }
12141 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12142 }
12143 }
12144
12145 abuf->written = written;
12146 return vpc;
12147 #undef FLD
12148 }
12149
12150 /* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12151
12152 static SEM_PC
12153 SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12154 {
12155 #define FLD(f) abuf->fields.sfmt_ftne.f
12156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12157 int UNUSED written = 0;
12158 IADDR UNUSED pc = abuf->addr;
12159 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12160
12161 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12162 {
12163 ; /*clobber*/
12164 ; /*clobber*/
12165 ; /*clobber*/
12166 ; /*clobber*/
12167 if (NEBI (CPU (h_psr_esr), 0)) {
12168 {
12169 ; /*clobber*/
12170 ; /*clobber*/
12171 ; /*clobber*/
12172 ; /*clobber*/
12173 }
12174 }
12175 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12176 }
12177 }
12178
12179 abuf->written = written;
12180 return vpc;
12181 #undef FLD
12182 }
12183
12184 /* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12185
12186 static SEM_PC
12187 SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12188 {
12189 #define FLD(f) abuf->fields.sfmt_ftne.f
12190 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12191 int UNUSED written = 0;
12192 IADDR UNUSED pc = abuf->addr;
12193 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12194
12195 if (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)))) {
12196 {
12197 ; /*clobber*/
12198 ; /*clobber*/
12199 ; /*clobber*/
12200 ; /*clobber*/
12201 if (NEBI (CPU (h_psr_esr), 0)) {
12202 {
12203 ; /*clobber*/
12204 ; /*clobber*/
12205 ; /*clobber*/
12206 ; /*clobber*/
12207 }
12208 }
12209 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12210 }
12211 }
12212
12213 abuf->written = written;
12214 return vpc;
12215 #undef FLD
12216 }
12217
12218 /* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12219
12220 static SEM_PC
12221 SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12222 {
12223 #define FLD(f) abuf->fields.sfmt_ftne.f
12224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12225 int UNUSED written = 0;
12226 IADDR UNUSED pc = abuf->addr;
12227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12228
12229 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12230 {
12231 ; /*clobber*/
12232 ; /*clobber*/
12233 ; /*clobber*/
12234 ; /*clobber*/
12235 if (NEBI (CPU (h_psr_esr), 0)) {
12236 {
12237 ; /*clobber*/
12238 ; /*clobber*/
12239 ; /*clobber*/
12240 ; /*clobber*/
12241 }
12242 }
12243 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12244 }
12245 }
12246
12247 abuf->written = written;
12248 return vpc;
12249 #undef FLD
12250 }
12251
12252 /* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12253
12254 static SEM_PC
12255 SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12256 {
12257 #define FLD(f) abuf->fields.sfmt_ftne.f
12258 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12259 int UNUSED written = 0;
12260 IADDR UNUSED pc = abuf->addr;
12261 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12262
12263 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12264 {
12265 ; /*clobber*/
12266 ; /*clobber*/
12267 ; /*clobber*/
12268 ; /*clobber*/
12269 if (NEBI (CPU (h_psr_esr), 0)) {
12270 {
12271 ; /*clobber*/
12272 ; /*clobber*/
12273 ; /*clobber*/
12274 ; /*clobber*/
12275 }
12276 }
12277 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12278 }
12279 }
12280
12281 abuf->written = written;
12282 return vpc;
12283 #undef FLD
12284 }
12285
12286 /* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12287
12288 static SEM_PC
12289 SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12290 {
12291 #define FLD(f) abuf->fields.sfmt_ftne.f
12292 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12293 int UNUSED written = 0;
12294 IADDR UNUSED pc = abuf->addr;
12295 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12296
12297 if (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)))) {
12298 {
12299 ; /*clobber*/
12300 ; /*clobber*/
12301 ; /*clobber*/
12302 ; /*clobber*/
12303 if (NEBI (CPU (h_psr_esr), 0)) {
12304 {
12305 ; /*clobber*/
12306 ; /*clobber*/
12307 ; /*clobber*/
12308 ; /*clobber*/
12309 }
12310 }
12311 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12312 }
12313 }
12314
12315 abuf->written = written;
12316 return vpc;
12317 #undef FLD
12318 }
12319
12320 /* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12321
12322 static SEM_PC
12323 SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12324 {
12325 #define FLD(f) abuf->fields.sfmt_ftne.f
12326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12327 int UNUSED written = 0;
12328 IADDR UNUSED pc = abuf->addr;
12329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12330
12331 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12332 {
12333 ; /*clobber*/
12334 ; /*clobber*/
12335 ; /*clobber*/
12336 ; /*clobber*/
12337 if (NEBI (CPU (h_psr_esr), 0)) {
12338 {
12339 ; /*clobber*/
12340 ; /*clobber*/
12341 ; /*clobber*/
12342 ; /*clobber*/
12343 }
12344 }
12345 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12346 }
12347 }
12348
12349 abuf->written = written;
12350 return vpc;
12351 #undef FLD
12352 }
12353
12354 /* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12355
12356 static SEM_PC
12357 SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12358 {
12359 #define FLD(f) abuf->fields.sfmt_ftne.f
12360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12361 int UNUSED written = 0;
12362 IADDR UNUSED pc = abuf->addr;
12363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12364
12365 if (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))))) {
12366 {
12367 ; /*clobber*/
12368 ; /*clobber*/
12369 ; /*clobber*/
12370 ; /*clobber*/
12371 if (NEBI (CPU (h_psr_esr), 0)) {
12372 {
12373 ; /*clobber*/
12374 ; /*clobber*/
12375 ; /*clobber*/
12376 ; /*clobber*/
12377 }
12378 }
12379 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12380 }
12381 }
12382
12383 abuf->written = written;
12384 return vpc;
12385 #undef FLD
12386 }
12387
12388 /* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12389
12390 static SEM_PC
12391 SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12392 {
12393 #define FLD(f) abuf->fields.sfmt_ftne.f
12394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12395 int UNUSED written = 0;
12396 IADDR UNUSED pc = abuf->addr;
12397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12398
12399 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12400 {
12401 ; /*clobber*/
12402 ; /*clobber*/
12403 ; /*clobber*/
12404 ; /*clobber*/
12405 if (NEBI (CPU (h_psr_esr), 0)) {
12406 {
12407 ; /*clobber*/
12408 ; /*clobber*/
12409 ; /*clobber*/
12410 ; /*clobber*/
12411 }
12412 }
12413 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12414 }
12415 }
12416
12417 abuf->written = written;
12418 return vpc;
12419 #undef FLD
12420 }
12421
12422 /* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12423
12424 static SEM_PC
12425 SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12426 {
12427 #define FLD(f) abuf->fields.sfmt_ftne.f
12428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12429 int UNUSED written = 0;
12430 IADDR UNUSED pc = abuf->addr;
12431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12432
12433 if (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)))) {
12434 {
12435 ; /*clobber*/
12436 ; /*clobber*/
12437 ; /*clobber*/
12438 ; /*clobber*/
12439 if (NEBI (CPU (h_psr_esr), 0)) {
12440 {
12441 ; /*clobber*/
12442 ; /*clobber*/
12443 ; /*clobber*/
12444 ; /*clobber*/
12445 }
12446 }
12447 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12448 }
12449 }
12450
12451 abuf->written = written;
12452 return vpc;
12453 #undef FLD
12454 }
12455
12456 /* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12457
12458 static SEM_PC
12459 SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12460 {
12461 #define FLD(f) abuf->fields.sfmt_ftne.f
12462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12463 int UNUSED written = 0;
12464 IADDR UNUSED pc = abuf->addr;
12465 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12466
12467 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12468 {
12469 ; /*clobber*/
12470 ; /*clobber*/
12471 ; /*clobber*/
12472 ; /*clobber*/
12473 if (NEBI (CPU (h_psr_esr), 0)) {
12474 {
12475 ; /*clobber*/
12476 ; /*clobber*/
12477 ; /*clobber*/
12478 ; /*clobber*/
12479 }
12480 }
12481 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12482 }
12483 }
12484
12485 abuf->written = written;
12486 return vpc;
12487 #undef FLD
12488 }
12489
12490 /* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12491
12492 static SEM_PC
12493 SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12494 {
12495 #define FLD(f) abuf->fields.sfmt_ftne.f
12496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12497 int UNUSED written = 0;
12498 IADDR UNUSED pc = abuf->addr;
12499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12500
12501 if (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))))) {
12502 {
12503 ; /*clobber*/
12504 ; /*clobber*/
12505 ; /*clobber*/
12506 ; /*clobber*/
12507 if (NEBI (CPU (h_psr_esr), 0)) {
12508 {
12509 ; /*clobber*/
12510 ; /*clobber*/
12511 ; /*clobber*/
12512 ; /*clobber*/
12513 }
12514 }
12515 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12516 }
12517 }
12518
12519 abuf->written = written;
12520 return vpc;
12521 #undef FLD
12522 }
12523
12524 /* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12525
12526 static SEM_PC
12527 SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12528 {
12529 #define FLD(f) abuf->fields.sfmt_ftne.f
12530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12531 int UNUSED written = 0;
12532 IADDR UNUSED pc = abuf->addr;
12533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12534
12535 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12536 {
12537 ; /*clobber*/
12538 ; /*clobber*/
12539 ; /*clobber*/
12540 ; /*clobber*/
12541 if (NEBI (CPU (h_psr_esr), 0)) {
12542 {
12543 ; /*clobber*/
12544 ; /*clobber*/
12545 ; /*clobber*/
12546 ; /*clobber*/
12547 }
12548 }
12549 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12550 }
12551 }
12552
12553 abuf->written = written;
12554 return vpc;
12555 #undef FLD
12556 }
12557
12558 /* fto: fto$pack $FCCi_2,$GRi,$GRj */
12559
12560 static SEM_PC
12561 SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12562 {
12563 #define FLD(f) abuf->fields.sfmt_ftne.f
12564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12565 int UNUSED written = 0;
12566 IADDR UNUSED pc = abuf->addr;
12567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12568
12569 if (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))))) {
12570 {
12571 ; /*clobber*/
12572 ; /*clobber*/
12573 ; /*clobber*/
12574 ; /*clobber*/
12575 if (NEBI (CPU (h_psr_esr), 0)) {
12576 {
12577 ; /*clobber*/
12578 ; /*clobber*/
12579 ; /*clobber*/
12580 ; /*clobber*/
12581 }
12582 }
12583 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12584 }
12585 }
12586
12587 abuf->written = written;
12588 return vpc;
12589 #undef FLD
12590 }
12591
12592 /* tira: tira$pack $GRi,$s12 */
12593
12594 static SEM_PC
12595 SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12596 {
12597 #define FLD(f) abuf->fields.sfmt_ftine.f
12598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12599 int UNUSED written = 0;
12600 IADDR UNUSED pc = abuf->addr;
12601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12602
12603 {
12604 ; /*clobber*/
12605 ; /*clobber*/
12606 ; /*clobber*/
12607 ; /*clobber*/
12608 if (NEBI (CPU (h_psr_esr), 0)) {
12609 {
12610 ; /*clobber*/
12611 ; /*clobber*/
12612 ; /*clobber*/
12613 ; /*clobber*/
12614 }
12615 }
12616 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12617 }
12618
12619 abuf->written = written;
12620 return vpc;
12621 #undef FLD
12622 }
12623
12624 /* tino: tino$pack */
12625
12626 static SEM_PC
12627 SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12628 {
12629 #define FLD(f) abuf->fields.fmt_empty.f
12630 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12631 int UNUSED written = 0;
12632 IADDR UNUSED pc = abuf->addr;
12633 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12634
12635 ((void) 0); /*nop*/
12636
12637 return vpc;
12638 #undef FLD
12639 }
12640
12641 /* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12642
12643 static SEM_PC
12644 SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12645 {
12646 #define FLD(f) abuf->fields.sfmt_tieq.f
12647 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12648 int UNUSED written = 0;
12649 IADDR UNUSED pc = abuf->addr;
12650 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12651
12652 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12653 {
12654 ; /*clobber*/
12655 ; /*clobber*/
12656 ; /*clobber*/
12657 ; /*clobber*/
12658 if (NEBI (CPU (h_psr_esr), 0)) {
12659 {
12660 ; /*clobber*/
12661 ; /*clobber*/
12662 ; /*clobber*/
12663 ; /*clobber*/
12664 }
12665 }
12666 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12667 }
12668 }
12669
12670 abuf->written = written;
12671 return vpc;
12672 #undef FLD
12673 }
12674
12675 /* tine: tine$pack $ICCi_2,$GRi,$s12 */
12676
12677 static SEM_PC
12678 SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12679 {
12680 #define FLD(f) abuf->fields.sfmt_tieq.f
12681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12682 int UNUSED written = 0;
12683 IADDR UNUSED pc = abuf->addr;
12684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12685
12686 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12687 {
12688 ; /*clobber*/
12689 ; /*clobber*/
12690 ; /*clobber*/
12691 ; /*clobber*/
12692 if (NEBI (CPU (h_psr_esr), 0)) {
12693 {
12694 ; /*clobber*/
12695 ; /*clobber*/
12696 ; /*clobber*/
12697 ; /*clobber*/
12698 }
12699 }
12700 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12701 }
12702 }
12703
12704 abuf->written = written;
12705 return vpc;
12706 #undef FLD
12707 }
12708
12709 /* tile: tile$pack $ICCi_2,$GRi,$s12 */
12710
12711 static SEM_PC
12712 SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12713 {
12714 #define FLD(f) abuf->fields.sfmt_tieq.f
12715 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12716 int UNUSED written = 0;
12717 IADDR UNUSED pc = abuf->addr;
12718 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12719
12720 if (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))))) {
12721 {
12722 ; /*clobber*/
12723 ; /*clobber*/
12724 ; /*clobber*/
12725 ; /*clobber*/
12726 if (NEBI (CPU (h_psr_esr), 0)) {
12727 {
12728 ; /*clobber*/
12729 ; /*clobber*/
12730 ; /*clobber*/
12731 ; /*clobber*/
12732 }
12733 }
12734 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12735 }
12736 }
12737
12738 abuf->written = written;
12739 return vpc;
12740 #undef FLD
12741 }
12742
12743 /* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12744
12745 static SEM_PC
12746 SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12747 {
12748 #define FLD(f) abuf->fields.sfmt_tieq.f
12749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12750 int UNUSED written = 0;
12751 IADDR UNUSED pc = abuf->addr;
12752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12753
12754 if (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)))))) {
12755 {
12756 ; /*clobber*/
12757 ; /*clobber*/
12758 ; /*clobber*/
12759 ; /*clobber*/
12760 if (NEBI (CPU (h_psr_esr), 0)) {
12761 {
12762 ; /*clobber*/
12763 ; /*clobber*/
12764 ; /*clobber*/
12765 ; /*clobber*/
12766 }
12767 }
12768 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12769 }
12770 }
12771
12772 abuf->written = written;
12773 return vpc;
12774 #undef FLD
12775 }
12776
12777 /* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12778
12779 static SEM_PC
12780 SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12781 {
12782 #define FLD(f) abuf->fields.sfmt_tieq.f
12783 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12784 int UNUSED written = 0;
12785 IADDR UNUSED pc = abuf->addr;
12786 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12787
12788 if (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)))) {
12789 {
12790 ; /*clobber*/
12791 ; /*clobber*/
12792 ; /*clobber*/
12793 ; /*clobber*/
12794 if (NEBI (CPU (h_psr_esr), 0)) {
12795 {
12796 ; /*clobber*/
12797 ; /*clobber*/
12798 ; /*clobber*/
12799 ; /*clobber*/
12800 }
12801 }
12802 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12803 }
12804 }
12805
12806 abuf->written = written;
12807 return vpc;
12808 #undef FLD
12809 }
12810
12811 /* tige: tige$pack $ICCi_2,$GRi,$s12 */
12812
12813 static SEM_PC
12814 SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12815 {
12816 #define FLD(f) abuf->fields.sfmt_tieq.f
12817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12818 int UNUSED written = 0;
12819 IADDR UNUSED pc = abuf->addr;
12820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12821
12822 if (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))))) {
12823 {
12824 ; /*clobber*/
12825 ; /*clobber*/
12826 ; /*clobber*/
12827 ; /*clobber*/
12828 if (NEBI (CPU (h_psr_esr), 0)) {
12829 {
12830 ; /*clobber*/
12831 ; /*clobber*/
12832 ; /*clobber*/
12833 ; /*clobber*/
12834 }
12835 }
12836 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12837 }
12838 }
12839
12840 abuf->written = written;
12841 return vpc;
12842 #undef FLD
12843 }
12844
12845 /* tils: tils$pack $ICCi_2,$GRi,$s12 */
12846
12847 static SEM_PC
12848 SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12849 {
12850 #define FLD(f) abuf->fields.sfmt_tieq.f
12851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12852 int UNUSED written = 0;
12853 IADDR UNUSED pc = abuf->addr;
12854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12855
12856 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12857 {
12858 ; /*clobber*/
12859 ; /*clobber*/
12860 ; /*clobber*/
12861 ; /*clobber*/
12862 if (NEBI (CPU (h_psr_esr), 0)) {
12863 {
12864 ; /*clobber*/
12865 ; /*clobber*/
12866 ; /*clobber*/
12867 ; /*clobber*/
12868 }
12869 }
12870 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12871 }
12872 }
12873
12874 abuf->written = written;
12875 return vpc;
12876 #undef FLD
12877 }
12878
12879 /* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12880
12881 static SEM_PC
12882 SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12883 {
12884 #define FLD(f) abuf->fields.sfmt_tieq.f
12885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12886 int UNUSED written = 0;
12887 IADDR UNUSED pc = abuf->addr;
12888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12889
12890 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
12891 {
12892 ; /*clobber*/
12893 ; /*clobber*/
12894 ; /*clobber*/
12895 ; /*clobber*/
12896 if (NEBI (CPU (h_psr_esr), 0)) {
12897 {
12898 ; /*clobber*/
12899 ; /*clobber*/
12900 ; /*clobber*/
12901 ; /*clobber*/
12902 }
12903 }
12904 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12905 }
12906 }
12907
12908 abuf->written = written;
12909 return vpc;
12910 #undef FLD
12911 }
12912
12913 /* tic: tic$pack $ICCi_2,$GRi,$s12 */
12914
12915 static SEM_PC
12916 SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12917 {
12918 #define FLD(f) abuf->fields.sfmt_tieq.f
12919 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12920 int UNUSED written = 0;
12921 IADDR UNUSED pc = abuf->addr;
12922 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12923
12924 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12925 {
12926 ; /*clobber*/
12927 ; /*clobber*/
12928 ; /*clobber*/
12929 ; /*clobber*/
12930 if (NEBI (CPU (h_psr_esr), 0)) {
12931 {
12932 ; /*clobber*/
12933 ; /*clobber*/
12934 ; /*clobber*/
12935 ; /*clobber*/
12936 }
12937 }
12938 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12939 }
12940 }
12941
12942 abuf->written = written;
12943 return vpc;
12944 #undef FLD
12945 }
12946
12947 /* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12948
12949 static SEM_PC
12950 SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12951 {
12952 #define FLD(f) abuf->fields.sfmt_tieq.f
12953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12954 int UNUSED written = 0;
12955 IADDR UNUSED pc = abuf->addr;
12956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12957
12958 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12959 {
12960 ; /*clobber*/
12961 ; /*clobber*/
12962 ; /*clobber*/
12963 ; /*clobber*/
12964 if (NEBI (CPU (h_psr_esr), 0)) {
12965 {
12966 ; /*clobber*/
12967 ; /*clobber*/
12968 ; /*clobber*/
12969 ; /*clobber*/
12970 }
12971 }
12972 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12973 }
12974 }
12975
12976 abuf->written = written;
12977 return vpc;
12978 #undef FLD
12979 }
12980
12981 /* tin: tin$pack $ICCi_2,$GRi,$s12 */
12982
12983 static SEM_PC
12984 SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12985 {
12986 #define FLD(f) abuf->fields.sfmt_tieq.f
12987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12988 int UNUSED written = 0;
12989 IADDR UNUSED pc = abuf->addr;
12990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12991
12992 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12993 {
12994 ; /*clobber*/
12995 ; /*clobber*/
12996 ; /*clobber*/
12997 ; /*clobber*/
12998 if (NEBI (CPU (h_psr_esr), 0)) {
12999 {
13000 ; /*clobber*/
13001 ; /*clobber*/
13002 ; /*clobber*/
13003 ; /*clobber*/
13004 }
13005 }
13006 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13007 }
13008 }
13009
13010 abuf->written = written;
13011 return vpc;
13012 #undef FLD
13013 }
13014
13015 /* tip: tip$pack $ICCi_2,$GRi,$s12 */
13016
13017 static SEM_PC
13018 SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13019 {
13020 #define FLD(f) abuf->fields.sfmt_tieq.f
13021 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13022 int UNUSED written = 0;
13023 IADDR UNUSED pc = abuf->addr;
13024 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13025
13026 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
13027 {
13028 ; /*clobber*/
13029 ; /*clobber*/
13030 ; /*clobber*/
13031 ; /*clobber*/
13032 if (NEBI (CPU (h_psr_esr), 0)) {
13033 {
13034 ; /*clobber*/
13035 ; /*clobber*/
13036 ; /*clobber*/
13037 ; /*clobber*/
13038 }
13039 }
13040 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13041 }
13042 }
13043
13044 abuf->written = written;
13045 return vpc;
13046 #undef FLD
13047 }
13048
13049 /* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
13050
13051 static SEM_PC
13052 SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13053 {
13054 #define FLD(f) abuf->fields.sfmt_tieq.f
13055 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13056 int UNUSED written = 0;
13057 IADDR UNUSED pc = abuf->addr;
13058 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13059
13060 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
13061 {
13062 ; /*clobber*/
13063 ; /*clobber*/
13064 ; /*clobber*/
13065 ; /*clobber*/
13066 if (NEBI (CPU (h_psr_esr), 0)) {
13067 {
13068 ; /*clobber*/
13069 ; /*clobber*/
13070 ; /*clobber*/
13071 ; /*clobber*/
13072 }
13073 }
13074 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13075 }
13076 }
13077
13078 abuf->written = written;
13079 return vpc;
13080 #undef FLD
13081 }
13082
13083 /* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
13084
13085 static SEM_PC
13086 SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13087 {
13088 #define FLD(f) abuf->fields.sfmt_tieq.f
13089 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13090 int UNUSED written = 0;
13091 IADDR UNUSED pc = abuf->addr;
13092 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13093
13094 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13095 {
13096 ; /*clobber*/
13097 ; /*clobber*/
13098 ; /*clobber*/
13099 ; /*clobber*/
13100 if (NEBI (CPU (h_psr_esr), 0)) {
13101 {
13102 ; /*clobber*/
13103 ; /*clobber*/
13104 ; /*clobber*/
13105 ; /*clobber*/
13106 }
13107 }
13108 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13109 }
13110 }
13111
13112 abuf->written = written;
13113 return vpc;
13114 #undef FLD
13115 }
13116
13117 /* ftira: ftira$pack $GRi,$s12 */
13118
13119 static SEM_PC
13120 SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13121 {
13122 #define FLD(f) abuf->fields.sfmt_ftine.f
13123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13124 int UNUSED written = 0;
13125 IADDR UNUSED pc = abuf->addr;
13126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13127
13128 {
13129 ; /*clobber*/
13130 ; /*clobber*/
13131 ; /*clobber*/
13132 ; /*clobber*/
13133 if (NEBI (CPU (h_psr_esr), 0)) {
13134 {
13135 ; /*clobber*/
13136 ; /*clobber*/
13137 ; /*clobber*/
13138 ; /*clobber*/
13139 }
13140 }
13141 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13142 }
13143
13144 abuf->written = written;
13145 return vpc;
13146 #undef FLD
13147 }
13148
13149 /* ftino: ftino$pack */
13150
13151 static SEM_PC
13152 SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13153 {
13154 #define FLD(f) abuf->fields.fmt_empty.f
13155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13156 int UNUSED written = 0;
13157 IADDR UNUSED pc = abuf->addr;
13158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13159
13160 ((void) 0); /*nop*/
13161
13162 return vpc;
13163 #undef FLD
13164 }
13165
13166 /* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13167
13168 static SEM_PC
13169 SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13170 {
13171 #define FLD(f) abuf->fields.sfmt_ftine.f
13172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13173 int UNUSED written = 0;
13174 IADDR UNUSED pc = abuf->addr;
13175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13176
13177 if (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))))) {
13178 {
13179 ; /*clobber*/
13180 ; /*clobber*/
13181 ; /*clobber*/
13182 ; /*clobber*/
13183 if (NEBI (CPU (h_psr_esr), 0)) {
13184 {
13185 ; /*clobber*/
13186 ; /*clobber*/
13187 ; /*clobber*/
13188 ; /*clobber*/
13189 }
13190 }
13191 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13192 }
13193 }
13194
13195 abuf->written = written;
13196 return vpc;
13197 #undef FLD
13198 }
13199
13200 /* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13201
13202 static SEM_PC
13203 SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13204 {
13205 #define FLD(f) abuf->fields.sfmt_ftine.f
13206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13207 int UNUSED written = 0;
13208 IADDR UNUSED pc = abuf->addr;
13209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13210
13211 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13212 {
13213 ; /*clobber*/
13214 ; /*clobber*/
13215 ; /*clobber*/
13216 ; /*clobber*/
13217 if (NEBI (CPU (h_psr_esr), 0)) {
13218 {
13219 ; /*clobber*/
13220 ; /*clobber*/
13221 ; /*clobber*/
13222 ; /*clobber*/
13223 }
13224 }
13225 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13226 }
13227 }
13228
13229 abuf->written = written;
13230 return vpc;
13231 #undef FLD
13232 }
13233
13234 /* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13235
13236 static SEM_PC
13237 SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13238 {
13239 #define FLD(f) abuf->fields.sfmt_ftine.f
13240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13241 int UNUSED written = 0;
13242 IADDR UNUSED pc = abuf->addr;
13243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13244
13245 if (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)))) {
13246 {
13247 ; /*clobber*/
13248 ; /*clobber*/
13249 ; /*clobber*/
13250 ; /*clobber*/
13251 if (NEBI (CPU (h_psr_esr), 0)) {
13252 {
13253 ; /*clobber*/
13254 ; /*clobber*/
13255 ; /*clobber*/
13256 ; /*clobber*/
13257 }
13258 }
13259 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13260 }
13261 }
13262
13263 abuf->written = written;
13264 return vpc;
13265 #undef FLD
13266 }
13267
13268 /* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13269
13270 static SEM_PC
13271 SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13272 {
13273 #define FLD(f) abuf->fields.sfmt_ftine.f
13274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13275 int UNUSED written = 0;
13276 IADDR UNUSED pc = abuf->addr;
13277 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13278
13279 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13280 {
13281 ; /*clobber*/
13282 ; /*clobber*/
13283 ; /*clobber*/
13284 ; /*clobber*/
13285 if (NEBI (CPU (h_psr_esr), 0)) {
13286 {
13287 ; /*clobber*/
13288 ; /*clobber*/
13289 ; /*clobber*/
13290 ; /*clobber*/
13291 }
13292 }
13293 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13294 }
13295 }
13296
13297 abuf->written = written;
13298 return vpc;
13299 #undef FLD
13300 }
13301
13302 /* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13303
13304 static SEM_PC
13305 SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13306 {
13307 #define FLD(f) abuf->fields.sfmt_ftine.f
13308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13309 int UNUSED written = 0;
13310 IADDR UNUSED pc = abuf->addr;
13311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13312
13313 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13314 {
13315 ; /*clobber*/
13316 ; /*clobber*/
13317 ; /*clobber*/
13318 ; /*clobber*/
13319 if (NEBI (CPU (h_psr_esr), 0)) {
13320 {
13321 ; /*clobber*/
13322 ; /*clobber*/
13323 ; /*clobber*/
13324 ; /*clobber*/
13325 }
13326 }
13327 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13328 }
13329 }
13330
13331 abuf->written = written;
13332 return vpc;
13333 #undef FLD
13334 }
13335
13336 /* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13337
13338 static SEM_PC
13339 SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13340 {
13341 #define FLD(f) abuf->fields.sfmt_ftine.f
13342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13343 int UNUSED written = 0;
13344 IADDR UNUSED pc = abuf->addr;
13345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13346
13347 if (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)))) {
13348 {
13349 ; /*clobber*/
13350 ; /*clobber*/
13351 ; /*clobber*/
13352 ; /*clobber*/
13353 if (NEBI (CPU (h_psr_esr), 0)) {
13354 {
13355 ; /*clobber*/
13356 ; /*clobber*/
13357 ; /*clobber*/
13358 ; /*clobber*/
13359 }
13360 }
13361 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13362 }
13363 }
13364
13365 abuf->written = written;
13366 return vpc;
13367 #undef FLD
13368 }
13369
13370 /* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13371
13372 static SEM_PC
13373 SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13374 {
13375 #define FLD(f) abuf->fields.sfmt_ftine.f
13376 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13377 int UNUSED written = 0;
13378 IADDR UNUSED pc = abuf->addr;
13379 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13380
13381 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13382 {
13383 ; /*clobber*/
13384 ; /*clobber*/
13385 ; /*clobber*/
13386 ; /*clobber*/
13387 if (NEBI (CPU (h_psr_esr), 0)) {
13388 {
13389 ; /*clobber*/
13390 ; /*clobber*/
13391 ; /*clobber*/
13392 ; /*clobber*/
13393 }
13394 }
13395 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13396 }
13397 }
13398
13399 abuf->written = written;
13400 return vpc;
13401 #undef FLD
13402 }
13403
13404 /* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13405
13406 static SEM_PC
13407 SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13408 {
13409 #define FLD(f) abuf->fields.sfmt_ftine.f
13410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13411 int UNUSED written = 0;
13412 IADDR UNUSED pc = abuf->addr;
13413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13414
13415 if (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))))) {
13416 {
13417 ; /*clobber*/
13418 ; /*clobber*/
13419 ; /*clobber*/
13420 ; /*clobber*/
13421 if (NEBI (CPU (h_psr_esr), 0)) {
13422 {
13423 ; /*clobber*/
13424 ; /*clobber*/
13425 ; /*clobber*/
13426 ; /*clobber*/
13427 }
13428 }
13429 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13430 }
13431 }
13432
13433 abuf->written = written;
13434 return vpc;
13435 #undef FLD
13436 }
13437
13438 /* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13439
13440 static SEM_PC
13441 SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13442 {
13443 #define FLD(f) abuf->fields.sfmt_ftine.f
13444 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13445 int UNUSED written = 0;
13446 IADDR UNUSED pc = abuf->addr;
13447 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13448
13449 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13450 {
13451 ; /*clobber*/
13452 ; /*clobber*/
13453 ; /*clobber*/
13454 ; /*clobber*/
13455 if (NEBI (CPU (h_psr_esr), 0)) {
13456 {
13457 ; /*clobber*/
13458 ; /*clobber*/
13459 ; /*clobber*/
13460 ; /*clobber*/
13461 }
13462 }
13463 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13464 }
13465 }
13466
13467 abuf->written = written;
13468 return vpc;
13469 #undef FLD
13470 }
13471
13472 /* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13473
13474 static SEM_PC
13475 SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13476 {
13477 #define FLD(f) abuf->fields.sfmt_ftine.f
13478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13479 int UNUSED written = 0;
13480 IADDR UNUSED pc = abuf->addr;
13481 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13482
13483 if (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)))) {
13484 {
13485 ; /*clobber*/
13486 ; /*clobber*/
13487 ; /*clobber*/
13488 ; /*clobber*/
13489 if (NEBI (CPU (h_psr_esr), 0)) {
13490 {
13491 ; /*clobber*/
13492 ; /*clobber*/
13493 ; /*clobber*/
13494 ; /*clobber*/
13495 }
13496 }
13497 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13498 }
13499 }
13500
13501 abuf->written = written;
13502 return vpc;
13503 #undef FLD
13504 }
13505
13506 /* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13507
13508 static SEM_PC
13509 SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13510 {
13511 #define FLD(f) abuf->fields.sfmt_ftine.f
13512 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13513 int UNUSED written = 0;
13514 IADDR UNUSED pc = abuf->addr;
13515 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13516
13517 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13518 {
13519 ; /*clobber*/
13520 ; /*clobber*/
13521 ; /*clobber*/
13522 ; /*clobber*/
13523 if (NEBI (CPU (h_psr_esr), 0)) {
13524 {
13525 ; /*clobber*/
13526 ; /*clobber*/
13527 ; /*clobber*/
13528 ; /*clobber*/
13529 }
13530 }
13531 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13532 }
13533 }
13534
13535 abuf->written = written;
13536 return vpc;
13537 #undef FLD
13538 }
13539
13540 /* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13541
13542 static SEM_PC
13543 SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13544 {
13545 #define FLD(f) abuf->fields.sfmt_ftine.f
13546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13547 int UNUSED written = 0;
13548 IADDR UNUSED pc = abuf->addr;
13549 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13550
13551 if (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))))) {
13552 {
13553 ; /*clobber*/
13554 ; /*clobber*/
13555 ; /*clobber*/
13556 ; /*clobber*/
13557 if (NEBI (CPU (h_psr_esr), 0)) {
13558 {
13559 ; /*clobber*/
13560 ; /*clobber*/
13561 ; /*clobber*/
13562 ; /*clobber*/
13563 }
13564 }
13565 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13566 }
13567 }
13568
13569 abuf->written = written;
13570 return vpc;
13571 #undef FLD
13572 }
13573
13574 /* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13575
13576 static SEM_PC
13577 SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13578 {
13579 #define FLD(f) abuf->fields.sfmt_ftine.f
13580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13581 int UNUSED written = 0;
13582 IADDR UNUSED pc = abuf->addr;
13583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13584
13585 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13586 {
13587 ; /*clobber*/
13588 ; /*clobber*/
13589 ; /*clobber*/
13590 ; /*clobber*/
13591 if (NEBI (CPU (h_psr_esr), 0)) {
13592 {
13593 ; /*clobber*/
13594 ; /*clobber*/
13595 ; /*clobber*/
13596 ; /*clobber*/
13597 }
13598 }
13599 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13600 }
13601 }
13602
13603 abuf->written = written;
13604 return vpc;
13605 #undef FLD
13606 }
13607
13608 /* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13609
13610 static SEM_PC
13611 SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13612 {
13613 #define FLD(f) abuf->fields.sfmt_ftine.f
13614 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13615 int UNUSED written = 0;
13616 IADDR UNUSED pc = abuf->addr;
13617 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13618
13619 if (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))))) {
13620 {
13621 ; /*clobber*/
13622 ; /*clobber*/
13623 ; /*clobber*/
13624 ; /*clobber*/
13625 if (NEBI (CPU (h_psr_esr), 0)) {
13626 {
13627 ; /*clobber*/
13628 ; /*clobber*/
13629 ; /*clobber*/
13630 ; /*clobber*/
13631 }
13632 }
13633 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13634 }
13635 }
13636
13637 abuf->written = written;
13638 return vpc;
13639 #undef FLD
13640 }
13641
13642 /* break: break$pack */
13643
13644 static SEM_PC
13645 SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13646 {
13647 #define FLD(f) abuf->fields.sfmt_break.f
13648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13649 int UNUSED written = 0;
13650 IADDR UNUSED pc = abuf->addr;
13651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13652
13653 {
13654 ; /*clobber*/
13655 ; /*clobber*/
13656 ; /*clobber*/
13657 ; /*clobber*/
13658 ; /*clobber*/
13659 ; /*clobber*/
13660 frv_break (current_cpu);
13661 }
13662
13663 return vpc;
13664 #undef FLD
13665 }
13666
13667 /* mtrap: mtrap$pack */
13668
13669 static SEM_PC
13670 SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13671 {
13672 #define FLD(f) abuf->fields.fmt_empty.f
13673 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13674 int UNUSED written = 0;
13675 IADDR UNUSED pc = abuf->addr;
13676 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13677
13678 frv_mtrap (current_cpu);
13679
13680 return vpc;
13681 #undef FLD
13682 }
13683
13684 /* andcr: andcr$pack $CRi,$CRj,$CRk */
13685
13686 static SEM_PC
13687 SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13688 {
13689 #define FLD(f) abuf->fields.sfmt_andcr.f
13690 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13691 int UNUSED written = 0;
13692 IADDR UNUSED pc = abuf->addr;
13693 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13694
13695 {
13696 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13697 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13698 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13699 }
13700
13701 return vpc;
13702 #undef FLD
13703 }
13704
13705 /* orcr: orcr$pack $CRi,$CRj,$CRk */
13706
13707 static SEM_PC
13708 SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13709 {
13710 #define FLD(f) abuf->fields.sfmt_andcr.f
13711 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13712 int UNUSED written = 0;
13713 IADDR UNUSED pc = abuf->addr;
13714 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13715
13716 {
13717 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13718 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13719 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13720 }
13721
13722 return vpc;
13723 #undef FLD
13724 }
13725
13726 /* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13727
13728 static SEM_PC
13729 SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13730 {
13731 #define FLD(f) abuf->fields.sfmt_andcr.f
13732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13733 int UNUSED written = 0;
13734 IADDR UNUSED pc = abuf->addr;
13735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13736
13737 {
13738 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13739 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13740 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13741 }
13742
13743 return vpc;
13744 #undef FLD
13745 }
13746
13747 /* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13748
13749 static SEM_PC
13750 SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13751 {
13752 #define FLD(f) abuf->fields.sfmt_andcr.f
13753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13754 int UNUSED written = 0;
13755 IADDR UNUSED pc = abuf->addr;
13756 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13757
13758 {
13759 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13760 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13761 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13762 }
13763
13764 return vpc;
13765 #undef FLD
13766 }
13767
13768 /* norcr: norcr$pack $CRi,$CRj,$CRk */
13769
13770 static SEM_PC
13771 SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13772 {
13773 #define FLD(f) abuf->fields.sfmt_andcr.f
13774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13775 int UNUSED written = 0;
13776 IADDR UNUSED pc = abuf->addr;
13777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13778
13779 {
13780 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13781 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13782 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13783 }
13784
13785 return vpc;
13786 #undef FLD
13787 }
13788
13789 /* andncr: andncr$pack $CRi,$CRj,$CRk */
13790
13791 static SEM_PC
13792 SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13793 {
13794 #define FLD(f) abuf->fields.sfmt_andcr.f
13795 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13796 int UNUSED written = 0;
13797 IADDR UNUSED pc = abuf->addr;
13798 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13799
13800 {
13801 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13802 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13803 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13804 }
13805
13806 return vpc;
13807 #undef FLD
13808 }
13809
13810 /* orncr: orncr$pack $CRi,$CRj,$CRk */
13811
13812 static SEM_PC
13813 SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13814 {
13815 #define FLD(f) abuf->fields.sfmt_andcr.f
13816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13817 int UNUSED written = 0;
13818 IADDR UNUSED pc = abuf->addr;
13819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13820
13821 {
13822 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13823 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13824 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13825 }
13826
13827 return vpc;
13828 #undef FLD
13829 }
13830
13831 /* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13832
13833 static SEM_PC
13834 SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13835 {
13836 #define FLD(f) abuf->fields.sfmt_andcr.f
13837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13838 int UNUSED written = 0;
13839 IADDR UNUSED pc = abuf->addr;
13840 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13841
13842 {
13843 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13844 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13845 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13846 }
13847
13848 return vpc;
13849 #undef FLD
13850 }
13851
13852 /* norncr: norncr$pack $CRi,$CRj,$CRk */
13853
13854 static SEM_PC
13855 SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13856 {
13857 #define FLD(f) abuf->fields.sfmt_andcr.f
13858 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13859 int UNUSED written = 0;
13860 IADDR UNUSED pc = abuf->addr;
13861 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13862
13863 {
13864 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13865 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13866 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13867 }
13868
13869 return vpc;
13870 #undef FLD
13871 }
13872
13873 /* notcr: notcr$pack $CRj,$CRk */
13874
13875 static SEM_PC
13876 SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13877 {
13878 #define FLD(f) abuf->fields.sfmt_andcr.f
13879 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13880 int UNUSED written = 0;
13881 IADDR UNUSED pc = abuf->addr;
13882 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13883
13884 {
13885 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13886 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13887 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13888 }
13889
13890 return vpc;
13891 #undef FLD
13892 }
13893
13894 /* ckra: ckra$pack $CRj_int */
13895
13896 static SEM_PC
13897 SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13898 {
13899 #define FLD(f) abuf->fields.sfmt_cckeq.f
13900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13901 int UNUSED written = 0;
13902 IADDR UNUSED pc = abuf->addr;
13903 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13904
13905 {
13906 UQI opval = 3;
13907 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13908 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13909 }
13910
13911 return vpc;
13912 #undef FLD
13913 }
13914
13915 /* ckno: ckno$pack $CRj_int */
13916
13917 static SEM_PC
13918 SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13919 {
13920 #define FLD(f) abuf->fields.sfmt_cckeq.f
13921 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13922 int UNUSED written = 0;
13923 IADDR UNUSED pc = abuf->addr;
13924 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13925
13926 {
13927 UQI opval = 2;
13928 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13929 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13930 }
13931
13932 return vpc;
13933 #undef FLD
13934 }
13935
13936 /* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13937
13938 static SEM_PC
13939 SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13940 {
13941 #define FLD(f) abuf->fields.sfmt_cckeq.f
13942 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13943 int UNUSED written = 0;
13944 IADDR UNUSED pc = abuf->addr;
13945 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13946
13947 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13948 {
13949 UQI opval = 3;
13950 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13951 written |= (1 << 1);
13952 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13953 }
13954 } else {
13955 {
13956 UQI opval = 2;
13957 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13958 written |= (1 << 1);
13959 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13960 }
13961 }
13962
13963 abuf->written = written;
13964 return vpc;
13965 #undef FLD
13966 }
13967
13968 /* ckne: ckne$pack $ICCi_3,$CRj_int */
13969
13970 static SEM_PC
13971 SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13972 {
13973 #define FLD(f) abuf->fields.sfmt_cckeq.f
13974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13975 int UNUSED written = 0;
13976 IADDR UNUSED pc = abuf->addr;
13977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13978
13979 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13980 {
13981 UQI opval = 3;
13982 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13983 written |= (1 << 1);
13984 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13985 }
13986 } else {
13987 {
13988 UQI opval = 2;
13989 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13990 written |= (1 << 1);
13991 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13992 }
13993 }
13994
13995 abuf->written = written;
13996 return vpc;
13997 #undef FLD
13998 }
13999
14000 /* ckle: ckle$pack $ICCi_3,$CRj_int */
14001
14002 static SEM_PC
14003 SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14004 {
14005 #define FLD(f) abuf->fields.sfmt_cckeq.f
14006 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14007 int UNUSED written = 0;
14008 IADDR UNUSED pc = abuf->addr;
14009 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14010
14011 if (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))))) {
14012 {
14013 UQI opval = 3;
14014 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14015 written |= (1 << 1);
14016 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14017 }
14018 } else {
14019 {
14020 UQI opval = 2;
14021 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14022 written |= (1 << 1);
14023 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14024 }
14025 }
14026
14027 abuf->written = written;
14028 return vpc;
14029 #undef FLD
14030 }
14031
14032 /* ckgt: ckgt$pack $ICCi_3,$CRj_int */
14033
14034 static SEM_PC
14035 SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14036 {
14037 #define FLD(f) abuf->fields.sfmt_cckeq.f
14038 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14039 int UNUSED written = 0;
14040 IADDR UNUSED pc = abuf->addr;
14041 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14042
14043 if (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)))))) {
14044 {
14045 UQI opval = 3;
14046 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14047 written |= (1 << 1);
14048 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14049 }
14050 } else {
14051 {
14052 UQI opval = 2;
14053 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14054 written |= (1 << 1);
14055 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14056 }
14057 }
14058
14059 abuf->written = written;
14060 return vpc;
14061 #undef FLD
14062 }
14063
14064 /* cklt: cklt$pack $ICCi_3,$CRj_int */
14065
14066 static SEM_PC
14067 SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14068 {
14069 #define FLD(f) abuf->fields.sfmt_cckeq.f
14070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14071 int UNUSED written = 0;
14072 IADDR UNUSED pc = abuf->addr;
14073 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14074
14075 if (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)))) {
14076 {
14077 UQI opval = 3;
14078 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14079 written |= (1 << 1);
14080 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14081 }
14082 } else {
14083 {
14084 UQI opval = 2;
14085 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14086 written |= (1 << 1);
14087 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14088 }
14089 }
14090
14091 abuf->written = written;
14092 return vpc;
14093 #undef FLD
14094 }
14095
14096 /* ckge: ckge$pack $ICCi_3,$CRj_int */
14097
14098 static SEM_PC
14099 SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14100 {
14101 #define FLD(f) abuf->fields.sfmt_cckeq.f
14102 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14103 int UNUSED written = 0;
14104 IADDR UNUSED pc = abuf->addr;
14105 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14106
14107 if (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))))) {
14108 {
14109 UQI opval = 3;
14110 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14111 written |= (1 << 1);
14112 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14113 }
14114 } else {
14115 {
14116 UQI opval = 2;
14117 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14118 written |= (1 << 1);
14119 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14120 }
14121 }
14122
14123 abuf->written = written;
14124 return vpc;
14125 #undef FLD
14126 }
14127
14128 /* ckls: ckls$pack $ICCi_3,$CRj_int */
14129
14130 static SEM_PC
14131 SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14132 {
14133 #define FLD(f) abuf->fields.sfmt_cckeq.f
14134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14135 int UNUSED written = 0;
14136 IADDR UNUSED pc = abuf->addr;
14137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14138
14139 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14140 {
14141 UQI opval = 3;
14142 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14143 written |= (1 << 1);
14144 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14145 }
14146 } else {
14147 {
14148 UQI opval = 2;
14149 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14150 written |= (1 << 1);
14151 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14152 }
14153 }
14154
14155 abuf->written = written;
14156 return vpc;
14157 #undef FLD
14158 }
14159
14160 /* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14161
14162 static SEM_PC
14163 SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14164 {
14165 #define FLD(f) abuf->fields.sfmt_cckeq.f
14166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14167 int UNUSED written = 0;
14168 IADDR UNUSED pc = abuf->addr;
14169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14170
14171 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
14172 {
14173 UQI opval = 3;
14174 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14175 written |= (1 << 1);
14176 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14177 }
14178 } else {
14179 {
14180 UQI opval = 2;
14181 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14182 written |= (1 << 1);
14183 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14184 }
14185 }
14186
14187 abuf->written = written;
14188 return vpc;
14189 #undef FLD
14190 }
14191
14192 /* ckc: ckc$pack $ICCi_3,$CRj_int */
14193
14194 static SEM_PC
14195 SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14196 {
14197 #define FLD(f) abuf->fields.sfmt_cckeq.f
14198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14199 int UNUSED written = 0;
14200 IADDR UNUSED pc = abuf->addr;
14201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14202
14203 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14204 {
14205 UQI opval = 3;
14206 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14207 written |= (1 << 1);
14208 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14209 }
14210 } else {
14211 {
14212 UQI opval = 2;
14213 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14214 written |= (1 << 1);
14215 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14216 }
14217 }
14218
14219 abuf->written = written;
14220 return vpc;
14221 #undef FLD
14222 }
14223
14224 /* cknc: cknc$pack $ICCi_3,$CRj_int */
14225
14226 static SEM_PC
14227 SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14228 {
14229 #define FLD(f) abuf->fields.sfmt_cckeq.f
14230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14231 int UNUSED written = 0;
14232 IADDR UNUSED pc = abuf->addr;
14233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14234
14235 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14236 {
14237 UQI opval = 3;
14238 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14239 written |= (1 << 1);
14240 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14241 }
14242 } else {
14243 {
14244 UQI opval = 2;
14245 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14246 written |= (1 << 1);
14247 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14248 }
14249 }
14250
14251 abuf->written = written;
14252 return vpc;
14253 #undef FLD
14254 }
14255
14256 /* ckn: ckn$pack $ICCi_3,$CRj_int */
14257
14258 static SEM_PC
14259 SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14260 {
14261 #define FLD(f) abuf->fields.sfmt_cckeq.f
14262 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14263 int UNUSED written = 0;
14264 IADDR UNUSED pc = abuf->addr;
14265 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14266
14267 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14268 {
14269 UQI opval = 3;
14270 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14271 written |= (1 << 1);
14272 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14273 }
14274 } else {
14275 {
14276 UQI opval = 2;
14277 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14278 written |= (1 << 1);
14279 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14280 }
14281 }
14282
14283 abuf->written = written;
14284 return vpc;
14285 #undef FLD
14286 }
14287
14288 /* ckp: ckp$pack $ICCi_3,$CRj_int */
14289
14290 static SEM_PC
14291 SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14292 {
14293 #define FLD(f) abuf->fields.sfmt_cckeq.f
14294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14295 int UNUSED written = 0;
14296 IADDR UNUSED pc = abuf->addr;
14297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14298
14299 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14300 {
14301 UQI opval = 3;
14302 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14303 written |= (1 << 1);
14304 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14305 }
14306 } else {
14307 {
14308 UQI opval = 2;
14309 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14310 written |= (1 << 1);
14311 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14312 }
14313 }
14314
14315 abuf->written = written;
14316 return vpc;
14317 #undef FLD
14318 }
14319
14320 /* ckv: ckv$pack $ICCi_3,$CRj_int */
14321
14322 static SEM_PC
14323 SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14324 {
14325 #define FLD(f) abuf->fields.sfmt_cckeq.f
14326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14327 int UNUSED written = 0;
14328 IADDR UNUSED pc = abuf->addr;
14329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14330
14331 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14332 {
14333 UQI opval = 3;
14334 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14335 written |= (1 << 1);
14336 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14337 }
14338 } else {
14339 {
14340 UQI opval = 2;
14341 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14342 written |= (1 << 1);
14343 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14344 }
14345 }
14346
14347 abuf->written = written;
14348 return vpc;
14349 #undef FLD
14350 }
14351
14352 /* cknv: cknv$pack $ICCi_3,$CRj_int */
14353
14354 static SEM_PC
14355 SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14356 {
14357 #define FLD(f) abuf->fields.sfmt_cckeq.f
14358 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14359 int UNUSED written = 0;
14360 IADDR UNUSED pc = abuf->addr;
14361 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14362
14363 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14364 {
14365 UQI opval = 3;
14366 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14367 written |= (1 << 1);
14368 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14369 }
14370 } else {
14371 {
14372 UQI opval = 2;
14373 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14374 written |= (1 << 1);
14375 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14376 }
14377 }
14378
14379 abuf->written = written;
14380 return vpc;
14381 #undef FLD
14382 }
14383
14384 /* fckra: fckra$pack $CRj_float */
14385
14386 static SEM_PC
14387 SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14388 {
14389 #define FLD(f) abuf->fields.sfmt_cfckne.f
14390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14391 int UNUSED written = 0;
14392 IADDR UNUSED pc = abuf->addr;
14393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14394
14395 {
14396 UQI opval = 3;
14397 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14398 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14399 }
14400
14401 return vpc;
14402 #undef FLD
14403 }
14404
14405 /* fckno: fckno$pack $CRj_float */
14406
14407 static SEM_PC
14408 SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14409 {
14410 #define FLD(f) abuf->fields.sfmt_cfckne.f
14411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14412 int UNUSED written = 0;
14413 IADDR UNUSED pc = abuf->addr;
14414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14415
14416 {
14417 UQI opval = 2;
14418 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14419 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14420 }
14421
14422 return vpc;
14423 #undef FLD
14424 }
14425
14426 /* fckne: fckne$pack $FCCi_3,$CRj_float */
14427
14428 static SEM_PC
14429 SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14430 {
14431 #define FLD(f) abuf->fields.sfmt_cfckne.f
14432 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14433 int UNUSED written = 0;
14434 IADDR UNUSED pc = abuf->addr;
14435 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14436
14437 if (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))))) {
14438 {
14439 UQI opval = 3;
14440 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14441 written |= (1 << 1);
14442 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14443 }
14444 } else {
14445 {
14446 UQI opval = 2;
14447 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14448 written |= (1 << 1);
14449 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14450 }
14451 }
14452
14453 abuf->written = written;
14454 return vpc;
14455 #undef FLD
14456 }
14457
14458 /* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14459
14460 static SEM_PC
14461 SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14462 {
14463 #define FLD(f) abuf->fields.sfmt_cfckne.f
14464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14465 int UNUSED written = 0;
14466 IADDR UNUSED pc = abuf->addr;
14467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14468
14469 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14470 {
14471 UQI opval = 3;
14472 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14473 written |= (1 << 1);
14474 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14475 }
14476 } else {
14477 {
14478 UQI opval = 2;
14479 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14480 written |= (1 << 1);
14481 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14482 }
14483 }
14484
14485 abuf->written = written;
14486 return vpc;
14487 #undef FLD
14488 }
14489
14490 /* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14491
14492 static SEM_PC
14493 SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14494 {
14495 #define FLD(f) abuf->fields.sfmt_cfckne.f
14496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14497 int UNUSED written = 0;
14498 IADDR UNUSED pc = abuf->addr;
14499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14500
14501 if (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)))) {
14502 {
14503 UQI opval = 3;
14504 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14505 written |= (1 << 1);
14506 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14507 }
14508 } else {
14509 {
14510 UQI opval = 2;
14511 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14512 written |= (1 << 1);
14513 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14514 }
14515 }
14516
14517 abuf->written = written;
14518 return vpc;
14519 #undef FLD
14520 }
14521
14522 /* fckue: fckue$pack $FCCi_3,$CRj_float */
14523
14524 static SEM_PC
14525 SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14526 {
14527 #define FLD(f) abuf->fields.sfmt_cfckne.f
14528 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14529 int UNUSED written = 0;
14530 IADDR UNUSED pc = abuf->addr;
14531 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14532
14533 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14534 {
14535 UQI opval = 3;
14536 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14537 written |= (1 << 1);
14538 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14539 }
14540 } else {
14541 {
14542 UQI opval = 2;
14543 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14544 written |= (1 << 1);
14545 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14546 }
14547 }
14548
14549 abuf->written = written;
14550 return vpc;
14551 #undef FLD
14552 }
14553
14554 /* fckul: fckul$pack $FCCi_3,$CRj_float */
14555
14556 static SEM_PC
14557 SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14558 {
14559 #define FLD(f) abuf->fields.sfmt_cfckne.f
14560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14561 int UNUSED written = 0;
14562 IADDR UNUSED pc = abuf->addr;
14563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14564
14565 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14566 {
14567 UQI opval = 3;
14568 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14569 written |= (1 << 1);
14570 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14571 }
14572 } else {
14573 {
14574 UQI opval = 2;
14575 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14576 written |= (1 << 1);
14577 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14578 }
14579 }
14580
14581 abuf->written = written;
14582 return vpc;
14583 #undef FLD
14584 }
14585
14586 /* fckge: fckge$pack $FCCi_3,$CRj_float */
14587
14588 static SEM_PC
14589 SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14590 {
14591 #define FLD(f) abuf->fields.sfmt_cfckne.f
14592 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14593 int UNUSED written = 0;
14594 IADDR UNUSED pc = abuf->addr;
14595 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14596
14597 if (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)))) {
14598 {
14599 UQI opval = 3;
14600 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14601 written |= (1 << 1);
14602 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14603 }
14604 } else {
14605 {
14606 UQI opval = 2;
14607 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14608 written |= (1 << 1);
14609 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14610 }
14611 }
14612
14613 abuf->written = written;
14614 return vpc;
14615 #undef FLD
14616 }
14617
14618 /* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14619
14620 static SEM_PC
14621 SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14622 {
14623 #define FLD(f) abuf->fields.sfmt_cfckne.f
14624 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14625 int UNUSED written = 0;
14626 IADDR UNUSED pc = abuf->addr;
14627 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14628
14629 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14630 {
14631 UQI opval = 3;
14632 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14633 written |= (1 << 1);
14634 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14635 }
14636 } else {
14637 {
14638 UQI opval = 2;
14639 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14640 written |= (1 << 1);
14641 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14642 }
14643 }
14644
14645 abuf->written = written;
14646 return vpc;
14647 #undef FLD
14648 }
14649
14650 /* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14651
14652 static SEM_PC
14653 SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14654 {
14655 #define FLD(f) abuf->fields.sfmt_cfckne.f
14656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14657 int UNUSED written = 0;
14658 IADDR UNUSED pc = abuf->addr;
14659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14660
14661 if (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))))) {
14662 {
14663 UQI opval = 3;
14664 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14665 written |= (1 << 1);
14666 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14667 }
14668 } else {
14669 {
14670 UQI opval = 2;
14671 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14672 written |= (1 << 1);
14673 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14674 }
14675 }
14676
14677 abuf->written = written;
14678 return vpc;
14679 #undef FLD
14680 }
14681
14682 /* fckug: fckug$pack $FCCi_3,$CRj_float */
14683
14684 static SEM_PC
14685 SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14686 {
14687 #define FLD(f) abuf->fields.sfmt_cfckne.f
14688 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14689 int UNUSED written = 0;
14690 IADDR UNUSED pc = abuf->addr;
14691 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14692
14693 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14694 {
14695 UQI opval = 3;
14696 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14697 written |= (1 << 1);
14698 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14699 }
14700 } else {
14701 {
14702 UQI opval = 2;
14703 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14704 written |= (1 << 1);
14705 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14706 }
14707 }
14708
14709 abuf->written = written;
14710 return vpc;
14711 #undef FLD
14712 }
14713
14714 /* fckle: fckle$pack $FCCi_3,$CRj_float */
14715
14716 static SEM_PC
14717 SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14718 {
14719 #define FLD(f) abuf->fields.sfmt_cfckne.f
14720 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14721 int UNUSED written = 0;
14722 IADDR UNUSED pc = abuf->addr;
14723 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14724
14725 if (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)))) {
14726 {
14727 UQI opval = 3;
14728 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14729 written |= (1 << 1);
14730 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14731 }
14732 } else {
14733 {
14734 UQI opval = 2;
14735 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14736 written |= (1 << 1);
14737 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14738 }
14739 }
14740
14741 abuf->written = written;
14742 return vpc;
14743 #undef FLD
14744 }
14745
14746 /* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14747
14748 static SEM_PC
14749 SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14750 {
14751 #define FLD(f) abuf->fields.sfmt_cfckne.f
14752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14753 int UNUSED written = 0;
14754 IADDR UNUSED pc = abuf->addr;
14755 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14756
14757 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14758 {
14759 UQI opval = 3;
14760 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14761 written |= (1 << 1);
14762 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14763 }
14764 } else {
14765 {
14766 UQI opval = 2;
14767 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14768 written |= (1 << 1);
14769 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14770 }
14771 }
14772
14773 abuf->written = written;
14774 return vpc;
14775 #undef FLD
14776 }
14777
14778 /* fckule: fckule$pack $FCCi_3,$CRj_float */
14779
14780 static SEM_PC
14781 SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14782 {
14783 #define FLD(f) abuf->fields.sfmt_cfckne.f
14784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14785 int UNUSED written = 0;
14786 IADDR UNUSED pc = abuf->addr;
14787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14788
14789 if (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))))) {
14790 {
14791 UQI opval = 3;
14792 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14793 written |= (1 << 1);
14794 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14795 }
14796 } else {
14797 {
14798 UQI opval = 2;
14799 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14800 written |= (1 << 1);
14801 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14802 }
14803 }
14804
14805 abuf->written = written;
14806 return vpc;
14807 #undef FLD
14808 }
14809
14810 /* fcku: fcku$pack $FCCi_3,$CRj_float */
14811
14812 static SEM_PC
14813 SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14814 {
14815 #define FLD(f) abuf->fields.sfmt_cfckne.f
14816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14817 int UNUSED written = 0;
14818 IADDR UNUSED pc = abuf->addr;
14819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14820
14821 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14822 {
14823 UQI opval = 3;
14824 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14825 written |= (1 << 1);
14826 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14827 }
14828 } else {
14829 {
14830 UQI opval = 2;
14831 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14832 written |= (1 << 1);
14833 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14834 }
14835 }
14836
14837 abuf->written = written;
14838 return vpc;
14839 #undef FLD
14840 }
14841
14842 /* fcko: fcko$pack $FCCi_3,$CRj_float */
14843
14844 static SEM_PC
14845 SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14846 {
14847 #define FLD(f) abuf->fields.sfmt_cfckne.f
14848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14849 int UNUSED written = 0;
14850 IADDR UNUSED pc = abuf->addr;
14851 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14852
14853 if (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))))) {
14854 {
14855 UQI opval = 3;
14856 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14857 written |= (1 << 1);
14858 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14859 }
14860 } else {
14861 {
14862 UQI opval = 2;
14863 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14864 written |= (1 << 1);
14865 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14866 }
14867 }
14868
14869 abuf->written = written;
14870 return vpc;
14871 #undef FLD
14872 }
14873
14874 /* cckra: cckra$pack $CRj_int,$CCi,$cond */
14875
14876 static SEM_PC
14877 SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14878 {
14879 #define FLD(f) abuf->fields.sfmt_cckeq.f
14880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14881 int UNUSED written = 0;
14882 IADDR UNUSED pc = abuf->addr;
14883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14884
14885 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14886 {
14887 UQI opval = 3;
14888 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14889 written |= (1 << 2);
14890 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14891 }
14892 } else {
14893 {
14894 UQI opval = 0;
14895 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14896 written |= (1 << 2);
14897 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14898 }
14899 }
14900
14901 abuf->written = written;
14902 return vpc;
14903 #undef FLD
14904 }
14905
14906 /* cckno: cckno$pack $CRj_int,$CCi,$cond */
14907
14908 static SEM_PC
14909 SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14910 {
14911 #define FLD(f) abuf->fields.sfmt_cckeq.f
14912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14913 int UNUSED written = 0;
14914 IADDR UNUSED pc = abuf->addr;
14915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14916
14917 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14918 {
14919 UQI opval = 2;
14920 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14921 written |= (1 << 2);
14922 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14923 }
14924 } else {
14925 {
14926 UQI opval = 0;
14927 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14928 written |= (1 << 2);
14929 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14930 }
14931 }
14932
14933 abuf->written = written;
14934 return vpc;
14935 #undef FLD
14936 }
14937
14938 /* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14939
14940 static SEM_PC
14941 SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14942 {
14943 #define FLD(f) abuf->fields.sfmt_cckeq.f
14944 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14945 int UNUSED written = 0;
14946 IADDR UNUSED pc = abuf->addr;
14947 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14948
14949 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14950 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14951 {
14952 UQI opval = 3;
14953 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14954 written |= (1 << 3);
14955 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14956 }
14957 } else {
14958 {
14959 UQI opval = 2;
14960 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14961 written |= (1 << 3);
14962 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14963 }
14964 }
14965 } else {
14966 {
14967 UQI opval = 0;
14968 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14969 written |= (1 << 3);
14970 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14971 }
14972 }
14973
14974 abuf->written = written;
14975 return vpc;
14976 #undef FLD
14977 }
14978
14979 /* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14980
14981 static SEM_PC
14982 SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14983 {
14984 #define FLD(f) abuf->fields.sfmt_cckeq.f
14985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14986 int UNUSED written = 0;
14987 IADDR UNUSED pc = abuf->addr;
14988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14989
14990 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14991 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14992 {
14993 UQI opval = 3;
14994 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14995 written |= (1 << 3);
14996 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14997 }
14998 } else {
14999 {
15000 UQI opval = 2;
15001 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15002 written |= (1 << 3);
15003 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15004 }
15005 }
15006 } else {
15007 {
15008 UQI opval = 0;
15009 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15010 written |= (1 << 3);
15011 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15012 }
15013 }
15014
15015 abuf->written = written;
15016 return vpc;
15017 #undef FLD
15018 }
15019
15020 /* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
15021
15022 static SEM_PC
15023 SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15024 {
15025 #define FLD(f) abuf->fields.sfmt_cckeq.f
15026 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15027 int UNUSED written = 0;
15028 IADDR UNUSED pc = abuf->addr;
15029 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15030
15031 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15032 if (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))))) {
15033 {
15034 UQI opval = 3;
15035 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15036 written |= (1 << 3);
15037 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15038 }
15039 } else {
15040 {
15041 UQI opval = 2;
15042 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15043 written |= (1 << 3);
15044 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15045 }
15046 }
15047 } else {
15048 {
15049 UQI opval = 0;
15050 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15051 written |= (1 << 3);
15052 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15053 }
15054 }
15055
15056 abuf->written = written;
15057 return vpc;
15058 #undef FLD
15059 }
15060
15061 /* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15062
15063 static SEM_PC
15064 SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15065 {
15066 #define FLD(f) abuf->fields.sfmt_cckeq.f
15067 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15068 int UNUSED written = 0;
15069 IADDR UNUSED pc = abuf->addr;
15070 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15071
15072 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15073 if (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)))))) {
15074 {
15075 UQI opval = 3;
15076 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15077 written |= (1 << 3);
15078 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15079 }
15080 } else {
15081 {
15082 UQI opval = 2;
15083 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15084 written |= (1 << 3);
15085 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15086 }
15087 }
15088 } else {
15089 {
15090 UQI opval = 0;
15091 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15092 written |= (1 << 3);
15093 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15094 }
15095 }
15096
15097 abuf->written = written;
15098 return vpc;
15099 #undef FLD
15100 }
15101
15102 /* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15103
15104 static SEM_PC
15105 SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15106 {
15107 #define FLD(f) abuf->fields.sfmt_cckeq.f
15108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15109 int UNUSED written = 0;
15110 IADDR UNUSED pc = abuf->addr;
15111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15112
15113 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15114 if (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)))) {
15115 {
15116 UQI opval = 3;
15117 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15118 written |= (1 << 3);
15119 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15120 }
15121 } else {
15122 {
15123 UQI opval = 2;
15124 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15125 written |= (1 << 3);
15126 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15127 }
15128 }
15129 } else {
15130 {
15131 UQI opval = 0;
15132 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15133 written |= (1 << 3);
15134 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15135 }
15136 }
15137
15138 abuf->written = written;
15139 return vpc;
15140 #undef FLD
15141 }
15142
15143 /* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15144
15145 static SEM_PC
15146 SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15147 {
15148 #define FLD(f) abuf->fields.sfmt_cckeq.f
15149 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15150 int UNUSED written = 0;
15151 IADDR UNUSED pc = abuf->addr;
15152 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15153
15154 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15155 if (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))))) {
15156 {
15157 UQI opval = 3;
15158 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15159 written |= (1 << 3);
15160 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15161 }
15162 } else {
15163 {
15164 UQI opval = 2;
15165 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15166 written |= (1 << 3);
15167 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15168 }
15169 }
15170 } else {
15171 {
15172 UQI opval = 0;
15173 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15174 written |= (1 << 3);
15175 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15176 }
15177 }
15178
15179 abuf->written = written;
15180 return vpc;
15181 #undef FLD
15182 }
15183
15184 /* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15185
15186 static SEM_PC
15187 SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15188 {
15189 #define FLD(f) abuf->fields.sfmt_cckeq.f
15190 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15191 int UNUSED written = 0;
15192 IADDR UNUSED pc = abuf->addr;
15193 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15194
15195 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15196 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15197 {
15198 UQI opval = 3;
15199 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15200 written |= (1 << 3);
15201 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15202 }
15203 } else {
15204 {
15205 UQI opval = 2;
15206 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15207 written |= (1 << 3);
15208 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15209 }
15210 }
15211 } else {
15212 {
15213 UQI opval = 0;
15214 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15215 written |= (1 << 3);
15216 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15217 }
15218 }
15219
15220 abuf->written = written;
15221 return vpc;
15222 #undef FLD
15223 }
15224
15225 /* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15226
15227 static SEM_PC
15228 SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15229 {
15230 #define FLD(f) abuf->fields.sfmt_cckeq.f
15231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15232 int UNUSED written = 0;
15233 IADDR UNUSED pc = abuf->addr;
15234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15235
15236 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15237 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
15238 {
15239 UQI opval = 3;
15240 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15241 written |= (1 << 3);
15242 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15243 }
15244 } else {
15245 {
15246 UQI opval = 2;
15247 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15248 written |= (1 << 3);
15249 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15250 }
15251 }
15252 } else {
15253 {
15254 UQI opval = 0;
15255 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15256 written |= (1 << 3);
15257 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15258 }
15259 }
15260
15261 abuf->written = written;
15262 return vpc;
15263 #undef FLD
15264 }
15265
15266 /* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15267
15268 static SEM_PC
15269 SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15270 {
15271 #define FLD(f) abuf->fields.sfmt_cckeq.f
15272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15273 int UNUSED written = 0;
15274 IADDR UNUSED pc = abuf->addr;
15275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15276
15277 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15278 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15279 {
15280 UQI opval = 3;
15281 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15282 written |= (1 << 3);
15283 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15284 }
15285 } else {
15286 {
15287 UQI opval = 2;
15288 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15289 written |= (1 << 3);
15290 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15291 }
15292 }
15293 } else {
15294 {
15295 UQI opval = 0;
15296 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15297 written |= (1 << 3);
15298 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15299 }
15300 }
15301
15302 abuf->written = written;
15303 return vpc;
15304 #undef FLD
15305 }
15306
15307 /* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15308
15309 static SEM_PC
15310 SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15311 {
15312 #define FLD(f) abuf->fields.sfmt_cckeq.f
15313 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15314 int UNUSED written = 0;
15315 IADDR UNUSED pc = abuf->addr;
15316 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15317
15318 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15319 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15320 {
15321 UQI opval = 3;
15322 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15323 written |= (1 << 3);
15324 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15325 }
15326 } else {
15327 {
15328 UQI opval = 2;
15329 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15330 written |= (1 << 3);
15331 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15332 }
15333 }
15334 } else {
15335 {
15336 UQI opval = 0;
15337 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15338 written |= (1 << 3);
15339 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15340 }
15341 }
15342
15343 abuf->written = written;
15344 return vpc;
15345 #undef FLD
15346 }
15347
15348 /* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15349
15350 static SEM_PC
15351 SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15352 {
15353 #define FLD(f) abuf->fields.sfmt_cckeq.f
15354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15355 int UNUSED written = 0;
15356 IADDR UNUSED pc = abuf->addr;
15357 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15358
15359 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15360 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15361 {
15362 UQI opval = 3;
15363 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15364 written |= (1 << 3);
15365 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15366 }
15367 } else {
15368 {
15369 UQI opval = 2;
15370 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15371 written |= (1 << 3);
15372 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15373 }
15374 }
15375 } else {
15376 {
15377 UQI opval = 0;
15378 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15379 written |= (1 << 3);
15380 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15381 }
15382 }
15383
15384 abuf->written = written;
15385 return vpc;
15386 #undef FLD
15387 }
15388
15389 /* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15390
15391 static SEM_PC
15392 SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15393 {
15394 #define FLD(f) abuf->fields.sfmt_cckeq.f
15395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15396 int UNUSED written = 0;
15397 IADDR UNUSED pc = abuf->addr;
15398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15399
15400 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15401 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15402 {
15403 UQI opval = 3;
15404 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15405 written |= (1 << 3);
15406 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15407 }
15408 } else {
15409 {
15410 UQI opval = 2;
15411 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15412 written |= (1 << 3);
15413 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15414 }
15415 }
15416 } else {
15417 {
15418 UQI opval = 0;
15419 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15420 written |= (1 << 3);
15421 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15422 }
15423 }
15424
15425 abuf->written = written;
15426 return vpc;
15427 #undef FLD
15428 }
15429
15430 /* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15431
15432 static SEM_PC
15433 SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15434 {
15435 #define FLD(f) abuf->fields.sfmt_cckeq.f
15436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15437 int UNUSED written = 0;
15438 IADDR UNUSED pc = abuf->addr;
15439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15440
15441 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15442 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15443 {
15444 UQI opval = 3;
15445 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15446 written |= (1 << 3);
15447 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15448 }
15449 } else {
15450 {
15451 UQI opval = 2;
15452 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15453 written |= (1 << 3);
15454 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15455 }
15456 }
15457 } else {
15458 {
15459 UQI opval = 0;
15460 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15461 written |= (1 << 3);
15462 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15463 }
15464 }
15465
15466 abuf->written = written;
15467 return vpc;
15468 #undef FLD
15469 }
15470
15471 /* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15472
15473 static SEM_PC
15474 SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15475 {
15476 #define FLD(f) abuf->fields.sfmt_cckeq.f
15477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15478 int UNUSED written = 0;
15479 IADDR UNUSED pc = abuf->addr;
15480 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15481
15482 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15483 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15484 {
15485 UQI opval = 3;
15486 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15487 written |= (1 << 3);
15488 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15489 }
15490 } else {
15491 {
15492 UQI opval = 2;
15493 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15494 written |= (1 << 3);
15495 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15496 }
15497 }
15498 } else {
15499 {
15500 UQI opval = 0;
15501 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15502 written |= (1 << 3);
15503 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15504 }
15505 }
15506
15507 abuf->written = written;
15508 return vpc;
15509 #undef FLD
15510 }
15511
15512 /* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15513
15514 static SEM_PC
15515 SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15516 {
15517 #define FLD(f) abuf->fields.sfmt_cfckne.f
15518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15519 int UNUSED written = 0;
15520 IADDR UNUSED pc = abuf->addr;
15521 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15522
15523 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15524 {
15525 UQI opval = 3;
15526 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15527 written |= (1 << 2);
15528 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15529 }
15530 } else {
15531 {
15532 UQI opval = 0;
15533 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15534 written |= (1 << 2);
15535 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15536 }
15537 }
15538
15539 abuf->written = written;
15540 return vpc;
15541 #undef FLD
15542 }
15543
15544 /* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15545
15546 static SEM_PC
15547 SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15548 {
15549 #define FLD(f) abuf->fields.sfmt_cfckne.f
15550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15551 int UNUSED written = 0;
15552 IADDR UNUSED pc = abuf->addr;
15553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15554
15555 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15556 {
15557 UQI opval = 2;
15558 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15559 written |= (1 << 2);
15560 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15561 }
15562 } else {
15563 {
15564 UQI opval = 0;
15565 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15566 written |= (1 << 2);
15567 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15568 }
15569 }
15570
15571 abuf->written = written;
15572 return vpc;
15573 #undef FLD
15574 }
15575
15576 /* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15577
15578 static SEM_PC
15579 SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15580 {
15581 #define FLD(f) abuf->fields.sfmt_cfckne.f
15582 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15583 int UNUSED written = 0;
15584 IADDR UNUSED pc = abuf->addr;
15585 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15586
15587 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15588 if (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))))) {
15589 {
15590 UQI opval = 3;
15591 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15592 written |= (1 << 3);
15593 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15594 }
15595 } else {
15596 {
15597 UQI opval = 2;
15598 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15599 written |= (1 << 3);
15600 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15601 }
15602 }
15603 } else {
15604 {
15605 UQI opval = 0;
15606 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15607 written |= (1 << 3);
15608 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15609 }
15610 }
15611
15612 abuf->written = written;
15613 return vpc;
15614 #undef FLD
15615 }
15616
15617 /* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15618
15619 static SEM_PC
15620 SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15621 {
15622 #define FLD(f) abuf->fields.sfmt_cfckne.f
15623 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15624 int UNUSED written = 0;
15625 IADDR UNUSED pc = abuf->addr;
15626 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15627
15628 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15629 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15630 {
15631 UQI opval = 3;
15632 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15633 written |= (1 << 3);
15634 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15635 }
15636 } else {
15637 {
15638 UQI opval = 2;
15639 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15640 written |= (1 << 3);
15641 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15642 }
15643 }
15644 } else {
15645 {
15646 UQI opval = 0;
15647 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15648 written |= (1 << 3);
15649 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15650 }
15651 }
15652
15653 abuf->written = written;
15654 return vpc;
15655 #undef FLD
15656 }
15657
15658 /* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15659
15660 static SEM_PC
15661 SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15662 {
15663 #define FLD(f) abuf->fields.sfmt_cfckne.f
15664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15665 int UNUSED written = 0;
15666 IADDR UNUSED pc = abuf->addr;
15667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15668
15669 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15670 if (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)))) {
15671 {
15672 UQI opval = 3;
15673 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15674 written |= (1 << 3);
15675 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15676 }
15677 } else {
15678 {
15679 UQI opval = 2;
15680 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15681 written |= (1 << 3);
15682 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15683 }
15684 }
15685 } else {
15686 {
15687 UQI opval = 0;
15688 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15689 written |= (1 << 3);
15690 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15691 }
15692 }
15693
15694 abuf->written = written;
15695 return vpc;
15696 #undef FLD
15697 }
15698
15699 /* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15700
15701 static SEM_PC
15702 SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15703 {
15704 #define FLD(f) abuf->fields.sfmt_cfckne.f
15705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15706 int UNUSED written = 0;
15707 IADDR UNUSED pc = abuf->addr;
15708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15709
15710 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15711 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15712 {
15713 UQI opval = 3;
15714 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15715 written |= (1 << 3);
15716 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15717 }
15718 } else {
15719 {
15720 UQI opval = 2;
15721 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15722 written |= (1 << 3);
15723 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15724 }
15725 }
15726 } else {
15727 {
15728 UQI opval = 0;
15729 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15730 written |= (1 << 3);
15731 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15732 }
15733 }
15734
15735 abuf->written = written;
15736 return vpc;
15737 #undef FLD
15738 }
15739
15740 /* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15741
15742 static SEM_PC
15743 SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15744 {
15745 #define FLD(f) abuf->fields.sfmt_cfckne.f
15746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15747 int UNUSED written = 0;
15748 IADDR UNUSED pc = abuf->addr;
15749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15750
15751 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15752 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15753 {
15754 UQI opval = 3;
15755 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15756 written |= (1 << 3);
15757 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15758 }
15759 } else {
15760 {
15761 UQI opval = 2;
15762 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15763 written |= (1 << 3);
15764 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15765 }
15766 }
15767 } else {
15768 {
15769 UQI opval = 0;
15770 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15771 written |= (1 << 3);
15772 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15773 }
15774 }
15775
15776 abuf->written = written;
15777 return vpc;
15778 #undef FLD
15779 }
15780
15781 /* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15782
15783 static SEM_PC
15784 SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15785 {
15786 #define FLD(f) abuf->fields.sfmt_cfckne.f
15787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15788 int UNUSED written = 0;
15789 IADDR UNUSED pc = abuf->addr;
15790 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15791
15792 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15793 if (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)))) {
15794 {
15795 UQI opval = 3;
15796 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15797 written |= (1 << 3);
15798 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15799 }
15800 } else {
15801 {
15802 UQI opval = 2;
15803 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15804 written |= (1 << 3);
15805 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15806 }
15807 }
15808 } else {
15809 {
15810 UQI opval = 0;
15811 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15812 written |= (1 << 3);
15813 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15814 }
15815 }
15816
15817 abuf->written = written;
15818 return vpc;
15819 #undef FLD
15820 }
15821
15822 /* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15823
15824 static SEM_PC
15825 SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15826 {
15827 #define FLD(f) abuf->fields.sfmt_cfckne.f
15828 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15829 int UNUSED written = 0;
15830 IADDR UNUSED pc = abuf->addr;
15831 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15832
15833 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15834 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15835 {
15836 UQI opval = 3;
15837 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15838 written |= (1 << 3);
15839 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15840 }
15841 } else {
15842 {
15843 UQI opval = 2;
15844 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15845 written |= (1 << 3);
15846 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15847 }
15848 }
15849 } else {
15850 {
15851 UQI opval = 0;
15852 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15853 written |= (1 << 3);
15854 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15855 }
15856 }
15857
15858 abuf->written = written;
15859 return vpc;
15860 #undef FLD
15861 }
15862
15863 /* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15864
15865 static SEM_PC
15866 SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15867 {
15868 #define FLD(f) abuf->fields.sfmt_cfckne.f
15869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15870 int UNUSED written = 0;
15871 IADDR UNUSED pc = abuf->addr;
15872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15873
15874 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15875 if (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))))) {
15876 {
15877 UQI opval = 3;
15878 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15879 written |= (1 << 3);
15880 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15881 }
15882 } else {
15883 {
15884 UQI opval = 2;
15885 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15886 written |= (1 << 3);
15887 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15888 }
15889 }
15890 } else {
15891 {
15892 UQI opval = 0;
15893 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15894 written |= (1 << 3);
15895 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15896 }
15897 }
15898
15899 abuf->written = written;
15900 return vpc;
15901 #undef FLD
15902 }
15903
15904 /* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15905
15906 static SEM_PC
15907 SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15908 {
15909 #define FLD(f) abuf->fields.sfmt_cfckne.f
15910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15911 int UNUSED written = 0;
15912 IADDR UNUSED pc = abuf->addr;
15913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15914
15915 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15916 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15917 {
15918 UQI opval = 3;
15919 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15920 written |= (1 << 3);
15921 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15922 }
15923 } else {
15924 {
15925 UQI opval = 2;
15926 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15927 written |= (1 << 3);
15928 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15929 }
15930 }
15931 } else {
15932 {
15933 UQI opval = 0;
15934 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15935 written |= (1 << 3);
15936 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15937 }
15938 }
15939
15940 abuf->written = written;
15941 return vpc;
15942 #undef FLD
15943 }
15944
15945 /* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15946
15947 static SEM_PC
15948 SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15949 {
15950 #define FLD(f) abuf->fields.sfmt_cfckne.f
15951 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15952 int UNUSED written = 0;
15953 IADDR UNUSED pc = abuf->addr;
15954 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15955
15956 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15957 if (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)))) {
15958 {
15959 UQI opval = 3;
15960 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15961 written |= (1 << 3);
15962 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15963 }
15964 } else {
15965 {
15966 UQI opval = 2;
15967 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15968 written |= (1 << 3);
15969 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15970 }
15971 }
15972 } else {
15973 {
15974 UQI opval = 0;
15975 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15976 written |= (1 << 3);
15977 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15978 }
15979 }
15980
15981 abuf->written = written;
15982 return vpc;
15983 #undef FLD
15984 }
15985
15986 /* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15987
15988 static SEM_PC
15989 SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15990 {
15991 #define FLD(f) abuf->fields.sfmt_cfckne.f
15992 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15993 int UNUSED written = 0;
15994 IADDR UNUSED pc = abuf->addr;
15995 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15996
15997 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15998 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15999 {
16000 UQI opval = 3;
16001 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16002 written |= (1 << 3);
16003 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16004 }
16005 } else {
16006 {
16007 UQI opval = 2;
16008 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16009 written |= (1 << 3);
16010 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16011 }
16012 }
16013 } else {
16014 {
16015 UQI opval = 0;
16016 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16017 written |= (1 << 3);
16018 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16019 }
16020 }
16021
16022 abuf->written = written;
16023 return vpc;
16024 #undef FLD
16025 }
16026
16027 /* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
16028
16029 static SEM_PC
16030 SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16031 {
16032 #define FLD(f) abuf->fields.sfmt_cfckne.f
16033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16034 int UNUSED written = 0;
16035 IADDR UNUSED pc = abuf->addr;
16036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16037
16038 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16039 if (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))))) {
16040 {
16041 UQI opval = 3;
16042 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16043 written |= (1 << 3);
16044 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16045 }
16046 } else {
16047 {
16048 UQI opval = 2;
16049 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16050 written |= (1 << 3);
16051 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16052 }
16053 }
16054 } else {
16055 {
16056 UQI opval = 0;
16057 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16058 written |= (1 << 3);
16059 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16060 }
16061 }
16062
16063 abuf->written = written;
16064 return vpc;
16065 #undef FLD
16066 }
16067
16068 /* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
16069
16070 static SEM_PC
16071 SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16072 {
16073 #define FLD(f) abuf->fields.sfmt_cfckne.f
16074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16075 int UNUSED written = 0;
16076 IADDR UNUSED pc = abuf->addr;
16077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16078
16079 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16080 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
16081 {
16082 UQI opval = 3;
16083 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16084 written |= (1 << 3);
16085 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16086 }
16087 } else {
16088 {
16089 UQI opval = 2;
16090 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16091 written |= (1 << 3);
16092 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16093 }
16094 }
16095 } else {
16096 {
16097 UQI opval = 0;
16098 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16099 written |= (1 << 3);
16100 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16101 }
16102 }
16103
16104 abuf->written = written;
16105 return vpc;
16106 #undef FLD
16107 }
16108
16109 /* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16110
16111 static SEM_PC
16112 SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16113 {
16114 #define FLD(f) abuf->fields.sfmt_cfckne.f
16115 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16116 int UNUSED written = 0;
16117 IADDR UNUSED pc = abuf->addr;
16118 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16119
16120 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16121 if (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))))) {
16122 {
16123 UQI opval = 3;
16124 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16125 written |= (1 << 3);
16126 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16127 }
16128 } else {
16129 {
16130 UQI opval = 2;
16131 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16132 written |= (1 << 3);
16133 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16134 }
16135 }
16136 } else {
16137 {
16138 UQI opval = 0;
16139 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16140 written |= (1 << 3);
16141 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16142 }
16143 }
16144
16145 abuf->written = written;
16146 return vpc;
16147 #undef FLD
16148 }
16149
16150 /* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16151
16152 static SEM_PC
16153 SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16154 {
16155 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16157 int UNUSED written = 0;
16158 IADDR UNUSED pc = abuf->addr;
16159 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16160
16161 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16162 {
16163 if (EQSI (FLD (f_LI), 1)) {
16164 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16165 }
16166 {
16167 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16168 sim_queue_pc_write (current_cpu, opval);
16169 written |= (1 << 6);
16170 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16171 }
16172 frvbf_model_branch (current_cpu, pc, 2);
16173 }
16174 }
16175
16176 abuf->written = written;
16177 return vpc;
16178 #undef FLD
16179 }
16180
16181 /* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16182
16183 static SEM_PC
16184 SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16185 {
16186 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16188 int UNUSED written = 0;
16189 IADDR UNUSED pc = abuf->addr;
16190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16191
16192 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16193 {
16194 if (EQSI (FLD (f_LI), 1)) {
16195 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16196 }
16197 {
16198 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16199 sim_queue_pc_write (current_cpu, opval);
16200 written |= (1 << 6);
16201 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16202 }
16203 frvbf_model_branch (current_cpu, pc, 2);
16204 }
16205 }
16206
16207 abuf->written = written;
16208 return vpc;
16209 #undef FLD
16210 }
16211
16212 /* ici: ici$pack @($GRi,$GRj) */
16213
16214 static SEM_PC
16215 SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16216 {
16217 #define FLD(f) abuf->fields.sfmt_icpl.f
16218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16219 int UNUSED written = 0;
16220 IADDR UNUSED pc = abuf->addr;
16221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16222
16223 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16224
16225 return vpc;
16226 #undef FLD
16227 }
16228
16229 /* dci: dci$pack @($GRi,$GRj) */
16230
16231 static SEM_PC
16232 SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16233 {
16234 #define FLD(f) abuf->fields.sfmt_icpl.f
16235 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16236 int UNUSED written = 0;
16237 IADDR UNUSED pc = abuf->addr;
16238 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16239
16240 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16241
16242 return vpc;
16243 #undef FLD
16244 }
16245
16246 /* icei: icei$pack @($GRi,$GRj),$ae */
16247
16248 static SEM_PC
16249 SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16250 {
16251 #define FLD(f) abuf->fields.sfmt_icei.f
16252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16253 int UNUSED written = 0;
16254 IADDR UNUSED pc = abuf->addr;
16255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16256
16257 if (EQSI (FLD (f_ae), 0)) {
16258 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16259 } else {
16260 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16261 }
16262
16263 return vpc;
16264 #undef FLD
16265 }
16266
16267 /* dcei: dcei$pack @($GRi,$GRj),$ae */
16268
16269 static SEM_PC
16270 SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16271 {
16272 #define FLD(f) abuf->fields.sfmt_icei.f
16273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16274 int UNUSED written = 0;
16275 IADDR UNUSED pc = abuf->addr;
16276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16277
16278 if (EQSI (FLD (f_ae), 0)) {
16279 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16280 } else {
16281 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16282 }
16283
16284 return vpc;
16285 #undef FLD
16286 }
16287
16288 /* dcf: dcf$pack @($GRi,$GRj) */
16289
16290 static SEM_PC
16291 SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16292 {
16293 #define FLD(f) abuf->fields.sfmt_icpl.f
16294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16295 int UNUSED written = 0;
16296 IADDR UNUSED pc = abuf->addr;
16297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16298
16299 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16300
16301 return vpc;
16302 #undef FLD
16303 }
16304
16305 /* dcef: dcef$pack @($GRi,$GRj),$ae */
16306
16307 static SEM_PC
16308 SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16309 {
16310 #define FLD(f) abuf->fields.sfmt_icei.f
16311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16312 int UNUSED written = 0;
16313 IADDR UNUSED pc = abuf->addr;
16314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16315
16316 if (EQSI (FLD (f_ae), 0)) {
16317 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16318 } else {
16319 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16320 }
16321
16322 return vpc;
16323 #undef FLD
16324 }
16325
16326 /* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16327
16328 static SEM_PC
16329 SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16330 {
16331 #define FLD(f) abuf->fields.fmt_empty.f
16332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16333 int UNUSED written = 0;
16334 IADDR UNUSED pc = abuf->addr;
16335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16336
16337 ((void) 0); /*nop*/
16338
16339 return vpc;
16340 #undef FLD
16341 }
16342
16343 /* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16344
16345 static SEM_PC
16346 SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16347 {
16348 #define FLD(f) abuf->fields.fmt_empty.f
16349 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16350 int UNUSED written = 0;
16351 IADDR UNUSED pc = abuf->addr;
16352 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16353
16354 ((void) 0); /*nop*/
16355
16356 return vpc;
16357 #undef FLD
16358 }
16359
16360 /* itlbi: itlbi$pack @($GRi,$GRj) */
16361
16362 static SEM_PC
16363 SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16364 {
16365 #define FLD(f) abuf->fields.fmt_empty.f
16366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16367 int UNUSED written = 0;
16368 IADDR UNUSED pc = abuf->addr;
16369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16370
16371 ((void) 0); /*nop*/
16372
16373 return vpc;
16374 #undef FLD
16375 }
16376
16377 /* dtlbi: dtlbi$pack @($GRi,$GRj) */
16378
16379 static SEM_PC
16380 SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16381 {
16382 #define FLD(f) abuf->fields.fmt_empty.f
16383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16384 int UNUSED written = 0;
16385 IADDR UNUSED pc = abuf->addr;
16386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16387
16388 ((void) 0); /*nop*/
16389
16390 return vpc;
16391 #undef FLD
16392 }
16393
16394 /* icpl: icpl$pack $GRi,$GRj,$lock */
16395
16396 static SEM_PC
16397 SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16398 {
16399 #define FLD(f) abuf->fields.sfmt_icpl.f
16400 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16401 int UNUSED written = 0;
16402 IADDR UNUSED pc = abuf->addr;
16403 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16404
16405 frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16406
16407 return vpc;
16408 #undef FLD
16409 }
16410
16411 /* dcpl: dcpl$pack $GRi,$GRj,$lock */
16412
16413 static SEM_PC
16414 SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16415 {
16416 #define FLD(f) abuf->fields.sfmt_icpl.f
16417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16418 int UNUSED written = 0;
16419 IADDR UNUSED pc = abuf->addr;
16420 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16421
16422 frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16423
16424 return vpc;
16425 #undef FLD
16426 }
16427
16428 /* icul: icul$pack $GRi */
16429
16430 static SEM_PC
16431 SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16432 {
16433 #define FLD(f) abuf->fields.sfmt_jmpil.f
16434 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16435 int UNUSED written = 0;
16436 IADDR UNUSED pc = abuf->addr;
16437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16438
16439 frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16440
16441 return vpc;
16442 #undef FLD
16443 }
16444
16445 /* dcul: dcul$pack $GRi */
16446
16447 static SEM_PC
16448 SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16449 {
16450 #define FLD(f) abuf->fields.sfmt_jmpil.f
16451 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16452 int UNUSED written = 0;
16453 IADDR UNUSED pc = abuf->addr;
16454 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16455
16456 frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16457
16458 return vpc;
16459 #undef FLD
16460 }
16461
16462 /* bar: bar$pack */
16463
16464 static SEM_PC
16465 SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16466 {
16467 #define FLD(f) abuf->fields.fmt_empty.f
16468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16469 int UNUSED written = 0;
16470 IADDR UNUSED pc = abuf->addr;
16471 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16472
16473 ((void) 0); /*nop*/
16474
16475 return vpc;
16476 #undef FLD
16477 }
16478
16479 /* membar: membar$pack */
16480
16481 static SEM_PC
16482 SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16483 {
16484 #define FLD(f) abuf->fields.fmt_empty.f
16485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16486 int UNUSED written = 0;
16487 IADDR UNUSED pc = abuf->addr;
16488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16489
16490 ((void) 0); /*nop*/
16491
16492 return vpc;
16493 #undef FLD
16494 }
16495
16496 /* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16497
16498 static SEM_PC
16499 SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16500 {
16501 #define FLD(f) abuf->fields.fmt_empty.f
16502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16503 int UNUSED written = 0;
16504 IADDR UNUSED pc = abuf->addr;
16505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16506
16507 ((void) 0); /*nop*/
16508
16509 return vpc;
16510 #undef FLD
16511 }
16512
16513 /* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16514
16515 static SEM_PC
16516 SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16517 {
16518 #define FLD(f) abuf->fields.fmt_empty.f
16519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16520 int UNUSED written = 0;
16521 IADDR UNUSED pc = abuf->addr;
16522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16523
16524 ((void) 0); /*nop*/
16525
16526 return vpc;
16527 #undef FLD
16528 }
16529
16530 /* clrgr: clrgr$pack $GRk */
16531
16532 static SEM_PC
16533 SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16534 {
16535 #define FLD(f) abuf->fields.sfmt_setlos.f
16536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16537 int UNUSED written = 0;
16538 IADDR UNUSED pc = abuf->addr;
16539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16540
16541 frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
16542
16543 return vpc;
16544 #undef FLD
16545 }
16546
16547 /* clrfr: clrfr$pack $FRk */
16548
16549 static SEM_PC
16550 SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16551 {
16552 #define FLD(f) abuf->fields.sfmt_mhsethis.f
16553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16554 int UNUSED written = 0;
16555 IADDR UNUSED pc = abuf->addr;
16556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16557
16558 frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
16559
16560 return vpc;
16561 #undef FLD
16562 }
16563
16564 /* clrga: clrga$pack */
16565
16566 static SEM_PC
16567 SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16568 {
16569 #define FLD(f) abuf->fields.fmt_empty.f
16570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16571 int UNUSED written = 0;
16572 IADDR UNUSED pc = abuf->addr;
16573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16574
16575 frvbf_clear_ne_flags (current_cpu, -1, 0);
16576
16577 return vpc;
16578 #undef FLD
16579 }
16580
16581 /* clrfa: clrfa$pack */
16582
16583 static SEM_PC
16584 SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16585 {
16586 #define FLD(f) abuf->fields.fmt_empty.f
16587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16588 int UNUSED written = 0;
16589 IADDR UNUSED pc = abuf->addr;
16590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16591
16592 frvbf_clear_ne_flags (current_cpu, -1, 1);
16593
16594 return vpc;
16595 #undef FLD
16596 }
16597
16598 /* commitgr: commitgr$pack $GRk */
16599
16600 static SEM_PC
16601 SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16602 {
16603 #define FLD(f) abuf->fields.sfmt_setlos.f
16604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16605 int UNUSED written = 0;
16606 IADDR UNUSED pc = abuf->addr;
16607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16608
16609 frvbf_commit (current_cpu, FLD (f_GRk), 0);
16610
16611 return vpc;
16612 #undef FLD
16613 }
16614
16615 /* commitfr: commitfr$pack $FRk */
16616
16617 static SEM_PC
16618 SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16619 {
16620 #define FLD(f) abuf->fields.sfmt_mhsethis.f
16621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16622 int UNUSED written = 0;
16623 IADDR UNUSED pc = abuf->addr;
16624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16625
16626 frvbf_commit (current_cpu, FLD (f_FRk), 1);
16627
16628 return vpc;
16629 #undef FLD
16630 }
16631
16632 /* commitga: commitga$pack */
16633
16634 static SEM_PC
16635 SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16636 {
16637 #define FLD(f) abuf->fields.fmt_empty.f
16638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16639 int UNUSED written = 0;
16640 IADDR UNUSED pc = abuf->addr;
16641 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16642
16643 frvbf_commit (current_cpu, -1, 0);
16644
16645 return vpc;
16646 #undef FLD
16647 }
16648
16649 /* commitfa: commitfa$pack */
16650
16651 static SEM_PC
16652 SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16653 {
16654 #define FLD(f) abuf->fields.fmt_empty.f
16655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16656 int UNUSED written = 0;
16657 IADDR UNUSED pc = abuf->addr;
16658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16659
16660 frvbf_commit (current_cpu, -1, 1);
16661
16662 return vpc;
16663 #undef FLD
16664 }
16665
16666 /* fitos: fitos$pack $FRintj,$FRk */
16667
16668 static SEM_PC
16669 SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16670 {
16671 #define FLD(f) abuf->fields.sfmt_fditos.f
16672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16673 int UNUSED written = 0;
16674 IADDR UNUSED pc = abuf->addr;
16675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16676
16677 {
16678 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16679 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16680 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16681 }
16682
16683 return vpc;
16684 #undef FLD
16685 }
16686
16687 /* fstoi: fstoi$pack $FRj,$FRintk */
16688
16689 static SEM_PC
16690 SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16691 {
16692 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16694 int UNUSED written = 0;
16695 IADDR UNUSED pc = abuf->addr;
16696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16697
16698 {
16699 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16700 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16701 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16702 }
16703
16704 return vpc;
16705 #undef FLD
16706 }
16707
16708 /* fitod: fitod$pack $FRintj,$FRdoublek */
16709
16710 static SEM_PC
16711 SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16712 {
16713 #define FLD(f) abuf->fields.sfmt_fitod.f
16714 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16715 int UNUSED written = 0;
16716 IADDR UNUSED pc = abuf->addr;
16717 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16718
16719 {
16720 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsidf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16721 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16722 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16723 }
16724
16725 return vpc;
16726 #undef FLD
16727 }
16728
16729 /* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16730
16731 static SEM_PC
16732 SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16733 {
16734 #define FLD(f) abuf->fields.sfmt_fdtoi.f
16735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16736 int UNUSED written = 0;
16737 IADDR UNUSED pc = abuf->addr;
16738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16739
16740 {
16741 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixdfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
16742 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16743 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16744 }
16745
16746 return vpc;
16747 #undef FLD
16748 }
16749
16750 /* fditos: fditos$pack $FRintj,$FRk */
16751
16752 static SEM_PC
16753 SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16754 {
16755 #define FLD(f) abuf->fields.sfmt_fditos.f
16756 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16757 int UNUSED written = 0;
16758 IADDR UNUSED pc = abuf->addr;
16759 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16760
16761 {
16762 {
16763 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16764 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16765 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16766 }
16767 {
16768 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
16769 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16770 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16771 }
16772 }
16773
16774 return vpc;
16775 #undef FLD
16776 }
16777
16778 /* fdstoi: fdstoi$pack $FRj,$FRintk */
16779
16780 static SEM_PC
16781 SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16782 {
16783 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16785 int UNUSED written = 0;
16786 IADDR UNUSED pc = abuf->addr;
16787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16788
16789 {
16790 {
16791 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16792 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16793 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16794 }
16795 {
16796 USI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
16797 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16798 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16799 }
16800 }
16801
16802 return vpc;
16803 #undef FLD
16804 }
16805
16806 /* nfditos: nfditos$pack $FRintj,$FRk */
16807
16808 static SEM_PC
16809 SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16810 {
16811 #define FLD(f) abuf->fields.sfmt_fditos.f
16812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16813 int UNUSED written = 0;
16814 IADDR UNUSED pc = abuf->addr;
16815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16816
16817 {
16818 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16819 {
16820 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16821 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16822 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16823 }
16824 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16825 {
16826 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
16827 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16828 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16829 }
16830 }
16831
16832 return vpc;
16833 #undef FLD
16834 }
16835
16836 /* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16837
16838 static SEM_PC
16839 SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16840 {
16841 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16842 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16843 int UNUSED written = 0;
16844 IADDR UNUSED pc = abuf->addr;
16845 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16846
16847 {
16848 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16849 {
16850 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16851 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16852 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16853 }
16854 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16855 {
16856 USI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
16857 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16858 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16859 }
16860 }
16861
16862 return vpc;
16863 #undef FLD
16864 }
16865
16866 /* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16867
16868 static SEM_PC
16869 SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16870 {
16871 #define FLD(f) abuf->fields.sfmt_cfitos.f
16872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16873 int UNUSED written = 0;
16874 IADDR UNUSED pc = abuf->addr;
16875 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16876
16877 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16878 {
16879 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16880 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16881 written |= (1 << 3);
16882 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16883 }
16884 }
16885
16886 abuf->written = written;
16887 return vpc;
16888 #undef FLD
16889 }
16890
16891 /* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16892
16893 static SEM_PC
16894 SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16895 {
16896 #define FLD(f) abuf->fields.sfmt_cfstoi.f
16897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16898 int UNUSED written = 0;
16899 IADDR UNUSED pc = abuf->addr;
16900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16901
16902 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16903 {
16904 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16905 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16906 written |= (1 << 3);
16907 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16908 }
16909 }
16910
16911 abuf->written = written;
16912 return vpc;
16913 #undef FLD
16914 }
16915
16916 /* nfitos: nfitos$pack $FRintj,$FRk */
16917
16918 static SEM_PC
16919 SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16920 {
16921 #define FLD(f) abuf->fields.sfmt_fditos.f
16922 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16923 int UNUSED written = 0;
16924 IADDR UNUSED pc = abuf->addr;
16925 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16926
16927 {
16928 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16929 {
16930 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16931 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16932 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16933 }
16934 }
16935
16936 return vpc;
16937 #undef FLD
16938 }
16939
16940 /* nfstoi: nfstoi$pack $FRj,$FRintk */
16941
16942 static SEM_PC
16943 SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16944 {
16945 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16947 int UNUSED written = 0;
16948 IADDR UNUSED pc = abuf->addr;
16949 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16950
16951 {
16952 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16953 {
16954 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16955 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16956 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16957 }
16958 }
16959
16960 return vpc;
16961 #undef FLD
16962 }
16963
16964 /* fmovs: fmovs$pack $FRj,$FRk */
16965
16966 static SEM_PC
16967 SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16968 {
16969 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16971 int UNUSED written = 0;
16972 IADDR UNUSED pc = abuf->addr;
16973 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16974
16975 {
16976 SF opval = GET_H_FR (FLD (f_FRj));
16977 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16978 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16979 }
16980
16981 return vpc;
16982 #undef FLD
16983 }
16984
16985 /* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16986
16987 static SEM_PC
16988 SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16989 {
16990 #define FLD(f) abuf->fields.sfmt_fmaddd.f
16991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16992 int UNUSED written = 0;
16993 IADDR UNUSED pc = abuf->addr;
16994 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16995
16996 {
16997 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16998 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16999 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17000 }
17001
17002 return vpc;
17003 #undef FLD
17004 }
17005
17006 /* fdmovs: fdmovs$pack $FRj,$FRk */
17007
17008 static SEM_PC
17009 SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17010 {
17011 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17013 int UNUSED written = 0;
17014 IADDR UNUSED pc = abuf->addr;
17015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17016
17017 {
17018 {
17019 SF opval = GET_H_FR (FLD (f_FRj));
17020 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17021 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17022 }
17023 {
17024 SF opval = GET_H_FR (((FLD (f_FRj)) + (1)));
17025 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17026 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17027 }
17028 }
17029
17030 return vpc;
17031 #undef FLD
17032 }
17033
17034 /* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
17035
17036 static SEM_PC
17037 SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17038 {
17039 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17041 int UNUSED written = 0;
17042 IADDR UNUSED pc = abuf->addr;
17043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17044
17045 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17046 {
17047 SF opval = GET_H_FR (FLD (f_FRj));
17048 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17049 written |= (1 << 3);
17050 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17051 }
17052 }
17053
17054 abuf->written = written;
17055 return vpc;
17056 #undef FLD
17057 }
17058
17059 /* fnegs: fnegs$pack $FRj,$FRk */
17060
17061 static SEM_PC
17062 SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17063 {
17064 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17065 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17066 int UNUSED written = 0;
17067 IADDR UNUSED pc = abuf->addr;
17068 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17069
17070 {
17071 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17072 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17073 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17074 }
17075
17076 return vpc;
17077 #undef FLD
17078 }
17079
17080 /* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17081
17082 static SEM_PC
17083 SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17084 {
17085 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17086 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17087 int UNUSED written = 0;
17088 IADDR UNUSED pc = abuf->addr;
17089 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17090
17091 {
17092 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17093 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17094 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17095 }
17096
17097 return vpc;
17098 #undef FLD
17099 }
17100
17101 /* fdnegs: fdnegs$pack $FRj,$FRk */
17102
17103 static SEM_PC
17104 SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17105 {
17106 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17108 int UNUSED written = 0;
17109 IADDR UNUSED pc = abuf->addr;
17110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17111
17112 {
17113 {
17114 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17115 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17116 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17117 }
17118 {
17119 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17120 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17121 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17122 }
17123 }
17124
17125 return vpc;
17126 #undef FLD
17127 }
17128
17129 /* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17130
17131 static SEM_PC
17132 SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17133 {
17134 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17136 int UNUSED written = 0;
17137 IADDR UNUSED pc = abuf->addr;
17138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17139
17140 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17141 {
17142 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17143 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17144 written |= (1 << 3);
17145 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17146 }
17147 }
17148
17149 abuf->written = written;
17150 return vpc;
17151 #undef FLD
17152 }
17153
17154 /* fabss: fabss$pack $FRj,$FRk */
17155
17156 static SEM_PC
17157 SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17158 {
17159 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17161 int UNUSED written = 0;
17162 IADDR UNUSED pc = abuf->addr;
17163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17164
17165 {
17166 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17167 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17168 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17169 }
17170
17171 return vpc;
17172 #undef FLD
17173 }
17174
17175 /* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17176
17177 static SEM_PC
17178 SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17179 {
17180 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17182 int UNUSED written = 0;
17183 IADDR UNUSED pc = abuf->addr;
17184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17185
17186 {
17187 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->absdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17188 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17189 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17190 }
17191
17192 return vpc;
17193 #undef FLD
17194 }
17195
17196 /* fdabss: fdabss$pack $FRj,$FRk */
17197
17198 static SEM_PC
17199 SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17200 {
17201 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17203 int UNUSED written = 0;
17204 IADDR UNUSED pc = abuf->addr;
17205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17206
17207 {
17208 {
17209 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17210 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17211 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17212 }
17213 {
17214 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17215 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17216 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17217 }
17218 }
17219
17220 return vpc;
17221 #undef FLD
17222 }
17223
17224 /* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17225
17226 static SEM_PC
17227 SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17228 {
17229 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17231 int UNUSED written = 0;
17232 IADDR UNUSED pc = abuf->addr;
17233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17234
17235 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17236 {
17237 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17238 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17239 written |= (1 << 3);
17240 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17241 }
17242 }
17243
17244 abuf->written = written;
17245 return vpc;
17246 #undef FLD
17247 }
17248
17249 /* fsqrts: fsqrts$pack $FRj,$FRk */
17250
17251 static SEM_PC
17252 SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17253 {
17254 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17256 int UNUSED written = 0;
17257 IADDR UNUSED pc = abuf->addr;
17258 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17259
17260 {
17261 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17262 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17263 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17264 }
17265
17266 return vpc;
17267 #undef FLD
17268 }
17269
17270 /* fdsqrts: fdsqrts$pack $FRj,$FRk */
17271
17272 static SEM_PC
17273 SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17274 {
17275 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17277 int UNUSED written = 0;
17278 IADDR UNUSED pc = abuf->addr;
17279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17280
17281 {
17282 {
17283 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17284 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17285 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17286 }
17287 {
17288 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17289 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17290 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17291 }
17292 }
17293
17294 return vpc;
17295 #undef FLD
17296 }
17297
17298 /* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17299
17300 static SEM_PC
17301 SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17302 {
17303 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17305 int UNUSED written = 0;
17306 IADDR UNUSED pc = abuf->addr;
17307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17308
17309 {
17310 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17311 {
17312 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17313 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17314 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17315 }
17316 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17317 {
17318 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17319 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17320 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17321 }
17322 }
17323
17324 return vpc;
17325 #undef FLD
17326 }
17327
17328 /* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17329
17330 static SEM_PC
17331 SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17332 {
17333 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17335 int UNUSED written = 0;
17336 IADDR UNUSED pc = abuf->addr;
17337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17338
17339 {
17340 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17341 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17342 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17343 }
17344
17345 return vpc;
17346 #undef FLD
17347 }
17348
17349 /* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17350
17351 static SEM_PC
17352 SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17353 {
17354 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17356 int UNUSED written = 0;
17357 IADDR UNUSED pc = abuf->addr;
17358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17359
17360 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17361 {
17362 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17363 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17364 written |= (1 << 3);
17365 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17366 }
17367 }
17368
17369 abuf->written = written;
17370 return vpc;
17371 #undef FLD
17372 }
17373
17374 /* nfsqrts: nfsqrts$pack $FRj,$FRk */
17375
17376 static SEM_PC
17377 SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17378 {
17379 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17381 int UNUSED written = 0;
17382 IADDR UNUSED pc = abuf->addr;
17383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17384
17385 {
17386 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17387 {
17388 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17389 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17390 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17391 }
17392 }
17393
17394 return vpc;
17395 #undef FLD
17396 }
17397
17398 /* fadds: fadds$pack $FRi,$FRj,$FRk */
17399
17400 static SEM_PC
17401 SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17402 {
17403 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17405 int UNUSED written = 0;
17406 IADDR UNUSED pc = abuf->addr;
17407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17408
17409 {
17410 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)));
17411 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17412 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17413 }
17414
17415 return vpc;
17416 #undef FLD
17417 }
17418
17419 /* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17420
17421 static SEM_PC
17422 SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17423 {
17424 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17426 int UNUSED written = 0;
17427 IADDR UNUSED pc = abuf->addr;
17428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17429
17430 {
17431 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)));
17432 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17433 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17434 }
17435
17436 return vpc;
17437 #undef FLD
17438 }
17439
17440 /* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17441
17442 static SEM_PC
17443 SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17444 {
17445 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17447 int UNUSED written = 0;
17448 IADDR UNUSED pc = abuf->addr;
17449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17450
17451 {
17452 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)));
17453 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17454 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17455 }
17456
17457 return vpc;
17458 #undef FLD
17459 }
17460
17461 /* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17462
17463 static SEM_PC
17464 SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17465 {
17466 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17468 int UNUSED written = 0;
17469 IADDR UNUSED pc = abuf->addr;
17470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17471
17472 {
17473 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)));
17474 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17475 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17476 }
17477
17478 return vpc;
17479 #undef FLD
17480 }
17481
17482 /* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17483
17484 static SEM_PC
17485 SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17486 {
17487 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17489 int UNUSED written = 0;
17490 IADDR UNUSED pc = abuf->addr;
17491 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17492
17493 {
17494 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)));
17495 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17496 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17497 }
17498
17499 return vpc;
17500 #undef FLD
17501 }
17502
17503 /* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17504
17505 static SEM_PC
17506 SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17507 {
17508 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17510 int UNUSED written = 0;
17511 IADDR UNUSED pc = abuf->addr;
17512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17513
17514 {
17515 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)));
17516 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17517 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17518 }
17519
17520 return vpc;
17521 #undef FLD
17522 }
17523
17524 /* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17525
17526 static SEM_PC
17527 SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17528 {
17529 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17531 int UNUSED written = 0;
17532 IADDR UNUSED pc = abuf->addr;
17533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17534
17535 {
17536 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)));
17537 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17538 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17539 }
17540
17541 return vpc;
17542 #undef FLD
17543 }
17544
17545 /* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17546
17547 static SEM_PC
17548 SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17549 {
17550 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17552 int UNUSED written = 0;
17553 IADDR UNUSED pc = abuf->addr;
17554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17555
17556 {
17557 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)));
17558 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17559 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17560 }
17561
17562 return vpc;
17563 #undef FLD
17564 }
17565
17566 /* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17567
17568 static SEM_PC
17569 SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17570 {
17571 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17573 int UNUSED written = 0;
17574 IADDR UNUSED pc = abuf->addr;
17575 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17576
17577 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17578 {
17579 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)));
17580 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17581 written |= (1 << 4);
17582 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17583 }
17584 }
17585
17586 abuf->written = written;
17587 return vpc;
17588 #undef FLD
17589 }
17590
17591 /* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17592
17593 static SEM_PC
17594 SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17595 {
17596 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17598 int UNUSED written = 0;
17599 IADDR UNUSED pc = abuf->addr;
17600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17601
17602 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17603 {
17604 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)));
17605 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17606 written |= (1 << 4);
17607 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17608 }
17609 }
17610
17611 abuf->written = written;
17612 return vpc;
17613 #undef FLD
17614 }
17615
17616 /* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17617
17618 static SEM_PC
17619 SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17620 {
17621 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17623 int UNUSED written = 0;
17624 IADDR UNUSED pc = abuf->addr;
17625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17626
17627 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17628 {
17629 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)));
17630 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17631 written |= (1 << 4);
17632 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17633 }
17634 }
17635
17636 abuf->written = written;
17637 return vpc;
17638 #undef FLD
17639 }
17640
17641 /* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17642
17643 static SEM_PC
17644 SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17645 {
17646 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17647 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17648 int UNUSED written = 0;
17649 IADDR UNUSED pc = abuf->addr;
17650 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17651
17652 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17653 {
17654 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)));
17655 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17656 written |= (1 << 4);
17657 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17658 }
17659 }
17660
17661 abuf->written = written;
17662 return vpc;
17663 #undef FLD
17664 }
17665
17666 /* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17667
17668 static SEM_PC
17669 SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17670 {
17671 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17673 int UNUSED written = 0;
17674 IADDR UNUSED pc = abuf->addr;
17675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17676
17677 {
17678 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17679 {
17680 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)));
17681 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17682 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17683 }
17684 }
17685
17686 return vpc;
17687 #undef FLD
17688 }
17689
17690 /* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17691
17692 static SEM_PC
17693 SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17694 {
17695 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17696 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17697 int UNUSED written = 0;
17698 IADDR UNUSED pc = abuf->addr;
17699 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17700
17701 {
17702 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17703 {
17704 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)));
17705 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17706 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17707 }
17708 }
17709
17710 return vpc;
17711 #undef FLD
17712 }
17713
17714 /* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17715
17716 static SEM_PC
17717 SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17718 {
17719 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17720 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17721 int UNUSED written = 0;
17722 IADDR UNUSED pc = abuf->addr;
17723 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17724
17725 {
17726 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17727 {
17728 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)));
17729 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17730 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17731 }
17732 }
17733
17734 return vpc;
17735 #undef FLD
17736 }
17737
17738 /* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17739
17740 static SEM_PC
17741 SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17742 {
17743 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17745 int UNUSED written = 0;
17746 IADDR UNUSED pc = abuf->addr;
17747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17748
17749 {
17750 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17751 {
17752 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)));
17753 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17754 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17755 }
17756 }
17757
17758 return vpc;
17759 #undef FLD
17760 }
17761
17762 /* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17763
17764 static SEM_PC
17765 SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17766 {
17767 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17768 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17769 int UNUSED written = 0;
17770 IADDR UNUSED pc = abuf->addr;
17771 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17772
17773 if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17774 {
17775 UQI opval = 2;
17776 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17777 written |= (1 << 2);
17778 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17779 }
17780 } else {
17781 if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17782 {
17783 UQI opval = 8;
17784 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17785 written |= (1 << 2);
17786 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17787 }
17788 } else {
17789 if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17790 {
17791 UQI opval = 4;
17792 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17793 written |= (1 << 2);
17794 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17795 }
17796 } else {
17797 {
17798 UQI opval = 1;
17799 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17800 written |= (1 << 2);
17801 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17802 }
17803 }
17804 }
17805 }
17806
17807 abuf->written = written;
17808 return vpc;
17809 #undef FLD
17810 }
17811
17812 /* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17813
17814 static SEM_PC
17815 SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17816 {
17817 #define FLD(f) abuf->fields.sfmt_fcmpd.f
17818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17819 int UNUSED written = 0;
17820 IADDR UNUSED pc = abuf->addr;
17821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17822
17823 if ((* 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)))) {
17824 {
17825 UQI opval = 2;
17826 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17827 written |= (1 << 2);
17828 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17829 }
17830 } else {
17831 if ((* 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)))) {
17832 {
17833 UQI opval = 8;
17834 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17835 written |= (1 << 2);
17836 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17837 }
17838 } else {
17839 if ((* 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)))) {
17840 {
17841 UQI opval = 4;
17842 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17843 written |= (1 << 2);
17844 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17845 }
17846 } else {
17847 {
17848 UQI opval = 1;
17849 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17850 written |= (1 << 2);
17851 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17852 }
17853 }
17854 }
17855 }
17856
17857 abuf->written = written;
17858 return vpc;
17859 #undef FLD
17860 }
17861
17862 /* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17863
17864 static SEM_PC
17865 SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17866 {
17867 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17869 int UNUSED written = 0;
17870 IADDR UNUSED pc = abuf->addr;
17871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17872
17873 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17874 if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17875 {
17876 UQI opval = 2;
17877 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17878 written |= (1 << 4);
17879 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17880 }
17881 } else {
17882 if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17883 {
17884 UQI opval = 8;
17885 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17886 written |= (1 << 4);
17887 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17888 }
17889 } else {
17890 if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17891 {
17892 UQI opval = 4;
17893 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17894 written |= (1 << 4);
17895 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17896 }
17897 } else {
17898 {
17899 UQI opval = 1;
17900 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17901 written |= (1 << 4);
17902 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17903 }
17904 }
17905 }
17906 }
17907 }
17908
17909 abuf->written = written;
17910 return vpc;
17911 #undef FLD
17912 }
17913
17914 /* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17915
17916 static SEM_PC
17917 SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17918 {
17919 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
17920 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17921 int UNUSED written = 0;
17922 IADDR UNUSED pc = abuf->addr;
17923 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17924
17925 {
17926 if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17927 {
17928 UQI opval = 2;
17929 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17930 written |= (1 << 7);
17931 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17932 }
17933 } else {
17934 if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17935 {
17936 UQI opval = 8;
17937 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17938 written |= (1 << 7);
17939 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17940 }
17941 } else {
17942 if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17943 {
17944 UQI opval = 4;
17945 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17946 written |= (1 << 7);
17947 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17948 }
17949 } else {
17950 {
17951 UQI opval = 1;
17952 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17953 written |= (1 << 7);
17954 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17955 }
17956 }
17957 }
17958 }
17959 if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
17960 {
17961 UQI opval = 2;
17962 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17963 written |= (1 << 8);
17964 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17965 }
17966 } else {
17967 if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
17968 {
17969 UQI opval = 8;
17970 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17971 written |= (1 << 8);
17972 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17973 }
17974 } else {
17975 if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
17976 {
17977 UQI opval = 4;
17978 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17979 written |= (1 << 8);
17980 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17981 }
17982 } else {
17983 {
17984 UQI opval = 1;
17985 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17986 written |= (1 << 8);
17987 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17988 }
17989 }
17990 }
17991 }
17992 }
17993
17994 abuf->written = written;
17995 return vpc;
17996 #undef FLD
17997 }
17998
17999 /* fmadds: fmadds$pack $FRi,$FRj,$FRk */
18000
18001 static SEM_PC
18002 SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18003 {
18004 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18006 int UNUSED written = 0;
18007 IADDR UNUSED pc = abuf->addr;
18008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18009
18010 {
18011 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)));
18012 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18013 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18014 }
18015
18016 return vpc;
18017 #undef FLD
18018 }
18019
18020 /* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
18021
18022 static SEM_PC
18023 SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18024 {
18025 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18026 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18027 int UNUSED written = 0;
18028 IADDR UNUSED pc = abuf->addr;
18029 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18030
18031 {
18032 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)));
18033 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18034 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18035 }
18036
18037 return vpc;
18038 #undef FLD
18039 }
18040
18041 /* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18042
18043 static SEM_PC
18044 SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18045 {
18046 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18047 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18048 int UNUSED written = 0;
18049 IADDR UNUSED pc = abuf->addr;
18050 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18051
18052 {
18053 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)));
18054 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18055 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18056 }
18057
18058 return vpc;
18059 #undef FLD
18060 }
18061
18062 /* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18063
18064 static SEM_PC
18065 SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18066 {
18067 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18068 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18069 int UNUSED written = 0;
18070 IADDR UNUSED pc = abuf->addr;
18071 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18072
18073 {
18074 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)));
18075 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18076 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18077 }
18078
18079 return vpc;
18080 #undef FLD
18081 }
18082
18083 /* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18084
18085 static SEM_PC
18086 SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18087 {
18088 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18089 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18090 int UNUSED written = 0;
18091 IADDR UNUSED pc = abuf->addr;
18092 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18093
18094 {
18095 {
18096 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)));
18097 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18098 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18099 }
18100 {
18101 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1)))), GET_H_FR (((FLD (f_FRk)) + (1))));
18102 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18103 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18104 }
18105 }
18106
18107 return vpc;
18108 #undef FLD
18109 }
18110
18111 /* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18112
18113 static SEM_PC
18114 SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18115 {
18116 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18117 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18118 int UNUSED written = 0;
18119 IADDR UNUSED pc = abuf->addr;
18120 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18121
18122 {
18123 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18124 {
18125 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)));
18126 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18127 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18128 }
18129 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18130 {
18131 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1)))), GET_H_FR (((FLD (f_FRk)) + (1))));
18132 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18133 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18134 }
18135 }
18136
18137 return vpc;
18138 #undef FLD
18139 }
18140
18141 /* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18142
18143 static SEM_PC
18144 SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18145 {
18146 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18148 int UNUSED written = 0;
18149 IADDR UNUSED pc = abuf->addr;
18150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18151
18152 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18153 {
18154 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)));
18155 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18156 written |= (1 << 5);
18157 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18158 }
18159 }
18160
18161 abuf->written = written;
18162 return vpc;
18163 #undef FLD
18164 }
18165
18166 /* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18167
18168 static SEM_PC
18169 SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18170 {
18171 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18173 int UNUSED written = 0;
18174 IADDR UNUSED pc = abuf->addr;
18175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18176
18177 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18178 {
18179 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)));
18180 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18181 written |= (1 << 5);
18182 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18183 }
18184 }
18185
18186 abuf->written = written;
18187 return vpc;
18188 #undef FLD
18189 }
18190
18191 /* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18192
18193 static SEM_PC
18194 SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18195 {
18196 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18198 int UNUSED written = 0;
18199 IADDR UNUSED pc = abuf->addr;
18200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18201
18202 {
18203 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18204 {
18205 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)));
18206 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18207 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18208 }
18209 }
18210
18211 return vpc;
18212 #undef FLD
18213 }
18214
18215 /* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18216
18217 static SEM_PC
18218 SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18219 {
18220 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18221 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18222 int UNUSED written = 0;
18223 IADDR UNUSED pc = abuf->addr;
18224 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18225
18226 {
18227 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18228 {
18229 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)));
18230 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18231 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18232 }
18233 }
18234
18235 return vpc;
18236 #undef FLD
18237 }
18238
18239 /* fmas: fmas$pack $FRi,$FRj,$FRk */
18240
18241 static SEM_PC
18242 SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18243 {
18244 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18245 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18246 int UNUSED written = 0;
18247 IADDR UNUSED pc = abuf->addr;
18248 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18249
18250 {
18251 {
18252 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)));
18253 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18254 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18255 }
18256 {
18257 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18258 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18259 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18260 }
18261 }
18262
18263 return vpc;
18264 #undef FLD
18265 }
18266
18267 /* fmss: fmss$pack $FRi,$FRj,$FRk */
18268
18269 static SEM_PC
18270 SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18271 {
18272 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18274 int UNUSED written = 0;
18275 IADDR UNUSED pc = abuf->addr;
18276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18277
18278 {
18279 {
18280 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)));
18281 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18282 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18283 }
18284 {
18285 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18286 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18287 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18288 }
18289 }
18290
18291 return vpc;
18292 #undef FLD
18293 }
18294
18295 /* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18296
18297 static SEM_PC
18298 SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18299 {
18300 #define FLD(f) abuf->fields.sfmt_fdmas.f
18301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18302 int UNUSED written = 0;
18303 IADDR UNUSED pc = abuf->addr;
18304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18305
18306 {
18307 {
18308 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)));
18309 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18310 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18311 }
18312 {
18313 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18314 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18315 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18316 }
18317 {
18318 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18319 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18320 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18321 }
18322 {
18323 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18324 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18325 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18326 }
18327 }
18328
18329 return vpc;
18330 #undef FLD
18331 }
18332
18333 /* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18334
18335 static SEM_PC
18336 SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18337 {
18338 #define FLD(f) abuf->fields.sfmt_fdmas.f
18339 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18340 int UNUSED written = 0;
18341 IADDR UNUSED pc = abuf->addr;
18342 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18343
18344 {
18345 {
18346 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)));
18347 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18348 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18349 }
18350 {
18351 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18352 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18353 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18354 }
18355 {
18356 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18357 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18358 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18359 }
18360 {
18361 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18362 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18363 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18364 }
18365 }
18366
18367 return vpc;
18368 #undef FLD
18369 }
18370
18371 /* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18372
18373 static SEM_PC
18374 SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18375 {
18376 #define FLD(f) abuf->fields.sfmt_fdmas.f
18377 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18378 int UNUSED written = 0;
18379 IADDR UNUSED pc = abuf->addr;
18380 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18381
18382 {
18383 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18384 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18385 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18386 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18387 {
18388 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)));
18389 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18390 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18391 }
18392 {
18393 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18394 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18395 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18396 }
18397 {
18398 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18399 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18400 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18401 }
18402 {
18403 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18404 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18405 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18406 }
18407 }
18408
18409 return vpc;
18410 #undef FLD
18411 }
18412
18413 /* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18414
18415 static SEM_PC
18416 SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18417 {
18418 #define FLD(f) abuf->fields.sfmt_fdmas.f
18419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18420 int UNUSED written = 0;
18421 IADDR UNUSED pc = abuf->addr;
18422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18423
18424 {
18425 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18426 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18427 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18428 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18429 {
18430 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)));
18431 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18432 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18433 }
18434 {
18435 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18436 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18437 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18438 }
18439 {
18440 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18441 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18442 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18443 }
18444 {
18445 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18446 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18447 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18448 }
18449 }
18450
18451 return vpc;
18452 #undef FLD
18453 }
18454
18455 /* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18456
18457 static SEM_PC
18458 SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18459 {
18460 #define FLD(f) abuf->fields.sfmt_cfmas.f
18461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18462 int UNUSED written = 0;
18463 IADDR UNUSED pc = abuf->addr;
18464 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18465
18466 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18467 {
18468 {
18469 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18470 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18471 written |= (1 << 9);
18472 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18473 }
18474 {
18475 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18476 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18477 written |= (1 << 10);
18478 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18479 }
18480 }
18481 }
18482
18483 abuf->written = written;
18484 return vpc;
18485 #undef FLD
18486 }
18487
18488 /* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18489
18490 static SEM_PC
18491 SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18492 {
18493 #define FLD(f) abuf->fields.sfmt_cfmas.f
18494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18495 int UNUSED written = 0;
18496 IADDR UNUSED pc = abuf->addr;
18497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18498
18499 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18500 {
18501 {
18502 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)));
18503 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18504 written |= (1 << 9);
18505 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18506 }
18507 {
18508 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18509 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18510 written |= (1 << 10);
18511 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18512 }
18513 }
18514 }
18515
18516 abuf->written = written;
18517 return vpc;
18518 #undef FLD
18519 }
18520
18521 /* fmad: fmad$pack $FRi,$FRj,$FRk */
18522
18523 static SEM_PC
18524 SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18525 {
18526 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18527 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18528 int UNUSED written = 0;
18529 IADDR UNUSED pc = abuf->addr;
18530 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18531
18532 {
18533 {
18534 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->muldf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi))), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)))));
18535 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18536 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18537 }
18538 {
18539 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->adddf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1)))), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))))));
18540 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18541 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18542 }
18543 }
18544
18545 return vpc;
18546 #undef FLD
18547 }
18548
18549 /* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18550
18551 static SEM_PC
18552 SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18553 {
18554 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18556 int UNUSED written = 0;
18557 IADDR UNUSED pc = abuf->addr;
18558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18559
18560 {
18561 {
18562 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->muldf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi))), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)))));
18563 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18564 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18565 }
18566 {
18567 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->subdf) (CGEN_CPU_FPU (current_cpu), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1)))), (* CGEN_CPU_FPU (current_cpu)->ops->fextsfdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))))));
18568 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18569 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18570 }
18571 }
18572
18573 return vpc;
18574 #undef FLD
18575 }
18576
18577 /* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18578
18579 static SEM_PC
18580 SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18581 {
18582 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18584 int UNUSED written = 0;
18585 IADDR UNUSED pc = abuf->addr;
18586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18587
18588 {
18589 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18590 {
18591 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)));
18592 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18593 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18594 }
18595 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18596 {
18597 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18598 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18599 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18600 }
18601 }
18602
18603 return vpc;
18604 #undef FLD
18605 }
18606
18607 /* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18608
18609 static SEM_PC
18610 SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18611 {
18612 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18614 int UNUSED written = 0;
18615 IADDR UNUSED pc = abuf->addr;
18616 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18617
18618 {
18619 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18620 {
18621 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)));
18622 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18623 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18624 }
18625 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18626 {
18627 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18628 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18629 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18630 }
18631 }
18632
18633 return vpc;
18634 #undef FLD
18635 }
18636
18637 /* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18638
18639 static SEM_PC
18640 SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18641 {
18642 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18644 int UNUSED written = 0;
18645 IADDR UNUSED pc = abuf->addr;
18646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18647
18648 {
18649 {
18650 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)));
18651 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18652 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18653 }
18654 {
18655 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18656 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18657 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18658 }
18659 }
18660
18661 return vpc;
18662 #undef FLD
18663 }
18664
18665 /* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18666
18667 static SEM_PC
18668 SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18669 {
18670 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18671 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18672 int UNUSED written = 0;
18673 IADDR UNUSED pc = abuf->addr;
18674 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18675
18676 {
18677 {
18678 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)));
18679 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18680 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18681 }
18682 {
18683 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18684 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18685 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18686 }
18687 }
18688
18689 return vpc;
18690 #undef FLD
18691 }
18692
18693 /* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18694
18695 static SEM_PC
18696 SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18697 {
18698 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18700 int UNUSED written = 0;
18701 IADDR UNUSED pc = abuf->addr;
18702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18703
18704 {
18705 {
18706 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)));
18707 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18708 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18709 }
18710 {
18711 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18712 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18713 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18714 }
18715 }
18716
18717 return vpc;
18718 #undef FLD
18719 }
18720
18721 /* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18722
18723 static SEM_PC
18724 SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18725 {
18726 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18728 int UNUSED written = 0;
18729 IADDR UNUSED pc = abuf->addr;
18730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18731
18732 {
18733 {
18734 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)));
18735 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18736 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18737 }
18738 {
18739 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->divsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18740 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18741 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18742 }
18743 }
18744
18745 return vpc;
18746 #undef FLD
18747 }
18748
18749 /* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18750
18751 static SEM_PC
18752 SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18753 {
18754 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18756 int UNUSED written = 0;
18757 IADDR UNUSED pc = abuf->addr;
18758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18759
18760 {
18761 {
18762 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)));
18763 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18764 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18765 }
18766 {
18767 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18768 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18769 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18770 }
18771 }
18772
18773 return vpc;
18774 #undef FLD
18775 }
18776
18777 /* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18778
18779 static SEM_PC
18780 SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18781 {
18782 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18783 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18784 int UNUSED written = 0;
18785 IADDR UNUSED pc = abuf->addr;
18786 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18787
18788 {
18789 {
18790 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (((FLD (f_FRj)) + (1))));
18791 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18792 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18793 }
18794 {
18795 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (FLD (f_FRj)));
18796 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18797 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18798 }
18799 }
18800
18801 return vpc;
18802 #undef FLD
18803 }
18804
18805 /* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18806
18807 static SEM_PC
18808 SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18809 {
18810 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18811 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18812 int UNUSED written = 0;
18813 IADDR UNUSED pc = abuf->addr;
18814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18815
18816 {
18817 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18818 {
18819 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (((FLD (f_FRj)) + (1))));
18820 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18821 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18822 }
18823 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18824 {
18825 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (FLD (f_FRj)));
18826 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18827 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18828 }
18829 }
18830
18831 return vpc;
18832 #undef FLD
18833 }
18834
18835 /* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18836
18837 static SEM_PC
18838 SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18839 {
18840 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18841 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18842 int UNUSED written = 0;
18843 IADDR UNUSED pc = abuf->addr;
18844 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18845
18846 {
18847 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18848 {
18849 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)));
18850 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18851 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18852 }
18853 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18854 {
18855 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->addsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18856 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18857 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18858 }
18859 }
18860
18861 return vpc;
18862 #undef FLD
18863 }
18864
18865 /* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18866
18867 static SEM_PC
18868 SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18869 {
18870 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18872 int UNUSED written = 0;
18873 IADDR UNUSED pc = abuf->addr;
18874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18875
18876 {
18877 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18878 {
18879 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)));
18880 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18881 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18882 }
18883 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18884 {
18885 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18886 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18887 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18888 }
18889 }
18890
18891 return vpc;
18892 #undef FLD
18893 }
18894
18895 /* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18896
18897 static SEM_PC
18898 SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18899 {
18900 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18901 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18902 int UNUSED written = 0;
18903 IADDR UNUSED pc = abuf->addr;
18904 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18905
18906 {
18907 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18908 {
18909 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)));
18910 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18911 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18912 }
18913 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18914 {
18915 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18916 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18917 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18918 }
18919 }
18920
18921 return vpc;
18922 #undef FLD
18923 }
18924
18925 /* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18926
18927 static SEM_PC
18928 SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18929 {
18930 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18932 int UNUSED written = 0;
18933 IADDR UNUSED pc = abuf->addr;
18934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18935
18936 {
18937 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18938 {
18939 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)));
18940 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18941 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18942 }
18943 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18944 {
18945 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->divsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18946 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18947 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18948 }
18949 }
18950
18951 return vpc;
18952 #undef FLD
18953 }
18954
18955 /* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18956
18957 static SEM_PC
18958 SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18959 {
18960 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18962 int UNUSED written = 0;
18963 IADDR UNUSED pc = abuf->addr;
18964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18965
18966 {
18967 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18968 {
18969 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)));
18970 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18971 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18972 }
18973 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18974 {
18975 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->subsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18976 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18977 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18978 }
18979 }
18980
18981 return vpc;
18982 #undef FLD
18983 }
18984
18985 /* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18986
18987 static SEM_PC
18988 SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18989 {
18990 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
18991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18992 int UNUSED written = 0;
18993 IADDR UNUSED pc = abuf->addr;
18994 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18995
18996 {
18997 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18998 if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
18999 {
19000 UQI opval = 2;
19001 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
19002 written |= (1 << 8);
19003 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19004 }
19005 } else {
19006 if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
19007 {
19008 UQI opval = 8;
19009 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
19010 written |= (1 << 8);
19011 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19012 }
19013 } else {
19014 if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
19015 {
19016 UQI opval = 4;
19017 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
19018 written |= (1 << 8);
19019 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19020 }
19021 } else {
19022 {
19023 UQI opval = 1;
19024 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
19025 written |= (1 << 8);
19026 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19027 }
19028 }
19029 }
19030 }
19031 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
19032 if ((* CGEN_CPU_FPU (current_cpu)->ops->gtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
19033 {
19034 UQI opval = 2;
19035 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19036 written |= (1 << 9);
19037 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19038 }
19039 } else {
19040 if ((* CGEN_CPU_FPU (current_cpu)->ops->eqsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
19041 {
19042 UQI opval = 8;
19043 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19044 written |= (1 << 9);
19045 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19046 }
19047 } else {
19048 if ((* CGEN_CPU_FPU (current_cpu)->ops->ltsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))))) {
19049 {
19050 UQI opval = 4;
19051 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19052 written |= (1 << 9);
19053 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19054 }
19055 } else {
19056 {
19057 UQI opval = 1;
19058 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19059 written |= (1 << 9);
19060 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19061 }
19062 }
19063 }
19064 }
19065 }
19066
19067 abuf->written = written;
19068 return vpc;
19069 #undef FLD
19070 }
19071
19072 /* mhsetlos: mhsetlos$pack $u12,$FRklo */
19073
19074 static SEM_PC
19075 SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19076 {
19077 #define FLD(f) abuf->fields.sfmt_mhsetlos.f
19078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19079 int UNUSED written = 0;
19080 IADDR UNUSED pc = abuf->addr;
19081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19082
19083 {
19084 UHI opval = FLD (f_u12);
19085 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19086 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19087 }
19088
19089 return vpc;
19090 #undef FLD
19091 }
19092
19093 /* mhsethis: mhsethis$pack $u12,$FRkhi */
19094
19095 static SEM_PC
19096 SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19097 {
19098 #define FLD(f) abuf->fields.sfmt_mhsethis.f
19099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19100 int UNUSED written = 0;
19101 IADDR UNUSED pc = abuf->addr;
19102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19103
19104 {
19105 UHI opval = FLD (f_u12);
19106 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19107 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19108 }
19109
19110 return vpc;
19111 #undef FLD
19112 }
19113
19114 /* mhdsets: mhdsets$pack $u12,$FRintk */
19115
19116 static SEM_PC
19117 SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19118 {
19119 #define FLD(f) abuf->fields.sfmt_mhdsets.f
19120 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19121 int UNUSED written = 0;
19122 IADDR UNUSED pc = abuf->addr;
19123 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19124
19125 {
19126 {
19127 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19128 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19129 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19130 }
19131 {
19132 UHI opval = FLD (f_u12);
19133 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19134 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19135 }
19136 {
19137 UHI opval = FLD (f_u12);
19138 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19139 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19140 }
19141 }
19142
19143 return vpc;
19144 #undef FLD
19145 }
19146
19147 /* mhsetloh: mhsetloh$pack $s5,$FRklo */
19148
19149 static SEM_PC
19150 SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19151 {
19152 #define FLD(f) abuf->fields.sfmt_mhsetloh.f
19153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19154 int UNUSED written = 0;
19155 IADDR UNUSED pc = abuf->addr;
19156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19157
19158 {
19159 HI tmp_tmp;
19160 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19161 tmp_tmp = ANDHI (tmp_tmp, 2047);
19162 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19163 {
19164 UHI opval = tmp_tmp;
19165 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19166 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19167 }
19168 }
19169
19170 return vpc;
19171 #undef FLD
19172 }
19173
19174 /* mhsethih: mhsethih$pack $s5,$FRkhi */
19175
19176 static SEM_PC
19177 SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19178 {
19179 #define FLD(f) abuf->fields.sfmt_mhsethih.f
19180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19181 int UNUSED written = 0;
19182 IADDR UNUSED pc = abuf->addr;
19183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19184
19185 {
19186 HI tmp_tmp;
19187 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19188 tmp_tmp = ANDHI (tmp_tmp, 2047);
19189 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19190 {
19191 UHI opval = tmp_tmp;
19192 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19193 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19194 }
19195 }
19196
19197 return vpc;
19198 #undef FLD
19199 }
19200
19201 /* mhdseth: mhdseth$pack $s5,$FRintk */
19202
19203 static SEM_PC
19204 SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19205 {
19206 #define FLD(f) abuf->fields.sfmt_mhdseth.f
19207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19208 int UNUSED written = 0;
19209 IADDR UNUSED pc = abuf->addr;
19210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19211
19212 {
19213 {
19214 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19215 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19216 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19217 }
19218 {
19219 HI tmp_tmp;
19220 tmp_tmp = GET_H_FR_HI (((FLD (f_FRk)) + (0)));
19221 tmp_tmp = ANDHI (tmp_tmp, 2047);
19222 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19223 {
19224 UHI opval = tmp_tmp;
19225 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19226 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19227 }
19228 }
19229 {
19230 HI tmp_tmp;
19231 tmp_tmp = GET_H_FR_LO (((FLD (f_FRk)) + (0)));
19232 tmp_tmp = ANDHI (tmp_tmp, 2047);
19233 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19234 {
19235 UHI opval = tmp_tmp;
19236 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19237 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19238 }
19239 }
19240 }
19241
19242 return vpc;
19243 #undef FLD
19244 }
19245
19246 /* mand: mand$pack $FRinti,$FRintj,$FRintk */
19247
19248 static SEM_PC
19249 SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19250 {
19251 #define FLD(f) abuf->fields.sfmt_mwcut.f
19252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19253 int UNUSED written = 0;
19254 IADDR UNUSED pc = abuf->addr;
19255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19256
19257 {
19258 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19259 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19260 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19261 }
19262
19263 return vpc;
19264 #undef FLD
19265 }
19266
19267 /* mor: mor$pack $FRinti,$FRintj,$FRintk */
19268
19269 static SEM_PC
19270 SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19271 {
19272 #define FLD(f) abuf->fields.sfmt_mwcut.f
19273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19274 int UNUSED written = 0;
19275 IADDR UNUSED pc = abuf->addr;
19276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19277
19278 {
19279 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19280 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19281 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19282 }
19283
19284 return vpc;
19285 #undef FLD
19286 }
19287
19288 /* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19289
19290 static SEM_PC
19291 SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19292 {
19293 #define FLD(f) abuf->fields.sfmt_mwcut.f
19294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19295 int UNUSED written = 0;
19296 IADDR UNUSED pc = abuf->addr;
19297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19298
19299 {
19300 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19301 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19302 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19303 }
19304
19305 return vpc;
19306 #undef FLD
19307 }
19308
19309 /* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19310
19311 static SEM_PC
19312 SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19313 {
19314 #define FLD(f) abuf->fields.sfmt_cmand.f
19315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19316 int UNUSED written = 0;
19317 IADDR UNUSED pc = abuf->addr;
19318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19319
19320 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19321 {
19322 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19323 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19324 written |= (1 << 4);
19325 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19326 }
19327 }
19328
19329 abuf->written = written;
19330 return vpc;
19331 #undef FLD
19332 }
19333
19334 /* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19335
19336 static SEM_PC
19337 SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19338 {
19339 #define FLD(f) abuf->fields.sfmt_cmand.f
19340 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19341 int UNUSED written = 0;
19342 IADDR UNUSED pc = abuf->addr;
19343 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19344
19345 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19346 {
19347 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19348 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19349 written |= (1 << 4);
19350 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19351 }
19352 }
19353
19354 abuf->written = written;
19355 return vpc;
19356 #undef FLD
19357 }
19358
19359 /* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19360
19361 static SEM_PC
19362 SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19363 {
19364 #define FLD(f) abuf->fields.sfmt_cmand.f
19365 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19366 int UNUSED written = 0;
19367 IADDR UNUSED pc = abuf->addr;
19368 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19369
19370 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19371 {
19372 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19373 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19374 written |= (1 << 4);
19375 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19376 }
19377 }
19378
19379 abuf->written = written;
19380 return vpc;
19381 #undef FLD
19382 }
19383
19384 /* mnot: mnot$pack $FRintj,$FRintk */
19385
19386 static SEM_PC
19387 SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19388 {
19389 #define FLD(f) abuf->fields.sfmt_mcut.f
19390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19391 int UNUSED written = 0;
19392 IADDR UNUSED pc = abuf->addr;
19393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19394
19395 {
19396 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19397 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19398 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19399 }
19400
19401 return vpc;
19402 #undef FLD
19403 }
19404
19405 /* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19406
19407 static SEM_PC
19408 SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19409 {
19410 #define FLD(f) abuf->fields.sfmt_cmand.f
19411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19412 int UNUSED written = 0;
19413 IADDR UNUSED pc = abuf->addr;
19414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19415
19416 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19417 {
19418 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19419 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19420 written |= (1 << 3);
19421 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19422 }
19423 }
19424
19425 abuf->written = written;
19426 return vpc;
19427 #undef FLD
19428 }
19429
19430 /* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19431
19432 static SEM_PC
19433 SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19434 {
19435 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19437 int UNUSED written = 0;
19438 IADDR UNUSED pc = abuf->addr;
19439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19440
19441 {
19442 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19443 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19444 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19445 }
19446
19447 return vpc;
19448 #undef FLD
19449 }
19450
19451 /* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19452
19453 static SEM_PC
19454 SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19455 {
19456 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19458 int UNUSED written = 0;
19459 IADDR UNUSED pc = abuf->addr;
19460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19461
19462 {
19463 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19464 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19465 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19466 }
19467
19468 return vpc;
19469 #undef FLD
19470 }
19471
19472 /* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19473
19474 static SEM_PC
19475 SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19476 {
19477 #define FLD(f) abuf->fields.sfmt_mwcut.f
19478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19479 int UNUSED written = 0;
19480 IADDR UNUSED pc = abuf->addr;
19481 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19482
19483 {
19484 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), GET_H_FR_INT (FLD (f_FRj)));
19485 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19486 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19487 }
19488
19489 return vpc;
19490 #undef FLD
19491 }
19492
19493 /* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19494
19495 static SEM_PC
19496 SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19497 {
19498 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19500 int UNUSED written = 0;
19501 IADDR UNUSED pc = abuf->addr;
19502 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19503
19504 {
19505 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), FLD (f_u6));
19506 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19507 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19508 }
19509
19510 return vpc;
19511 #undef FLD
19512 }
19513
19514 /* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19515
19516 static SEM_PC
19517 SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19518 {
19519 #define FLD(f) abuf->fields.sfmt_mcut.f
19520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19521 int UNUSED written = 0;
19522 IADDR UNUSED pc = abuf->addr;
19523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19524
19525 {
19526 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19527 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19528 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19529 }
19530
19531 return vpc;
19532 #undef FLD
19533 }
19534
19535 /* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19536
19537 static SEM_PC
19538 SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19539 {
19540 #define FLD(f) abuf->fields.sfmt_mcuti.f
19541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19542 int UNUSED written = 0;
19543 IADDR UNUSED pc = abuf->addr;
19544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19545
19546 {
19547 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19548 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19549 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19550 }
19551
19552 return vpc;
19553 #undef FLD
19554 }
19555
19556 /* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19557
19558 static SEM_PC
19559 SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19560 {
19561 #define FLD(f) abuf->fields.sfmt_mcut.f
19562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19563 int UNUSED written = 0;
19564 IADDR UNUSED pc = abuf->addr;
19565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19566
19567 {
19568 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19569 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19570 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19571 }
19572
19573 return vpc;
19574 #undef FLD
19575 }
19576
19577 /* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19578
19579 static SEM_PC
19580 SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19581 {
19582 #define FLD(f) abuf->fields.sfmt_mcuti.f
19583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19584 int UNUSED written = 0;
19585 IADDR UNUSED pc = abuf->addr;
19586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19587
19588 {
19589 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19590 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19591 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19592 }
19593
19594 return vpc;
19595 #undef FLD
19596 }
19597
19598 /* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19599
19600 static SEM_PC
19601 SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19602 {
19603 #define FLD(f) abuf->fields.sfmt_mdcutssi.f
19604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19605 int UNUSED written = 0;
19606 IADDR UNUSED pc = abuf->addr;
19607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19608
19609 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19610 frvbf_media_acc_not_aligned (current_cpu);
19611 } else {
19612 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19613 frvbf_media_register_not_aligned (current_cpu);
19614 } else {
19615 {
19616 {
19617 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19618 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19619 written |= (1 << 5);
19620 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19621 }
19622 {
19623 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))), FLD (f_s6));
19624 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19625 written |= (1 << 6);
19626 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19627 }
19628 }
19629 }
19630 }
19631
19632 abuf->written = written;
19633 return vpc;
19634 #undef FLD
19635 }
19636
19637 /* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19638
19639 static SEM_PC
19640 SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19641 {
19642 #define FLD(f) abuf->fields.sfmt_mwcut.f
19643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19644 int UNUSED written = 0;
19645 IADDR UNUSED pc = abuf->addr;
19646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19647
19648 {
19649 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19650 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19651 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19652 }
19653
19654 return vpc;
19655 #undef FLD
19656 }
19657
19658 /* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19659
19660 static SEM_PC
19661 SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19662 {
19663 #define FLD(f) abuf->fields.sfmt_msllhi.f
19664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19665 int UNUSED written = 0;
19666 IADDR UNUSED pc = abuf->addr;
19667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19668
19669 {
19670 {
19671 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19672 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19673 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19674 }
19675 {
19676 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19677 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19678 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19679 }
19680 {
19681 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19682 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19683 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19684 }
19685 {
19686 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19687 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19688 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19689 }
19690 }
19691
19692 return vpc;
19693 #undef FLD
19694 }
19695
19696 /* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19697
19698 static SEM_PC
19699 SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19700 {
19701 #define FLD(f) abuf->fields.sfmt_msllhi.f
19702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19703 int UNUSED written = 0;
19704 IADDR UNUSED pc = abuf->addr;
19705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19706
19707 {
19708 {
19709 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19710 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19711 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19712 }
19713 {
19714 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19715 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19716 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19717 }
19718 {
19719 UHI opval = SRLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19720 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19721 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19722 }
19723 {
19724 UHI opval = SRLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19725 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19726 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19727 }
19728 }
19729
19730 return vpc;
19731 #undef FLD
19732 }
19733
19734 /* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19735
19736 static SEM_PC
19737 SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19738 {
19739 #define FLD(f) abuf->fields.sfmt_msllhi.f
19740 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19741 int UNUSED written = 0;
19742 IADDR UNUSED pc = abuf->addr;
19743 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19744
19745 {
19746 {
19747 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19748 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19749 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19750 }
19751 {
19752 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19753 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19754 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19755 }
19756 {
19757 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19758 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19759 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19760 }
19761 {
19762 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19763 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19764 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19765 }
19766 }
19767
19768 return vpc;
19769 #undef FLD
19770 }
19771
19772 /* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19773
19774 static SEM_PC
19775 SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19776 {
19777 #define FLD(f) abuf->fields.sfmt_mdrotli.f
19778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19779 int UNUSED written = 0;
19780 IADDR UNUSED pc = abuf->addr;
19781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19782
19783 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19784 frvbf_media_register_not_aligned (current_cpu);
19785 } else {
19786 {
19787 {
19788 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19789 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19790 written |= (1 << 5);
19791 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19792 }
19793 {
19794 USI opval = ROLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_s6), 31));
19795 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19796 written |= (1 << 6);
19797 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19798 }
19799 }
19800 }
19801
19802 abuf->written = written;
19803 return vpc;
19804 #undef FLD
19805 }
19806
19807 /* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19808
19809 static SEM_PC
19810 SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19811 {
19812 #define FLD(f) abuf->fields.sfmt_mcplhi.f
19813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19814 int UNUSED written = 0;
19815 IADDR UNUSED pc = abuf->addr;
19816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19817
19818 {
19819 HI tmp_arg1;
19820 HI tmp_arg2;
19821 HI tmp_shift;
19822 {
19823 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19824 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19825 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19826 }
19827 {
19828 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19829 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19830 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19831 }
19832 tmp_shift = ANDSI (FLD (f_u6), 15);
19833 tmp_arg1 = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), tmp_shift);
19834 if (NEHI (tmp_shift, 0)) {
19835 {
19836 tmp_arg2 = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
19837 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19838 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19839 }
19840 }
19841 {
19842 UHI opval = tmp_arg1;
19843 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19844 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19845 }
19846 }
19847
19848 return vpc;
19849 #undef FLD
19850 }
19851
19852 /* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19853
19854 static SEM_PC
19855 SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19856 {
19857 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19858 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19859 int UNUSED written = 0;
19860 IADDR UNUSED pc = abuf->addr;
19861 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19862
19863 {
19864 SI tmp_tmp;
19865 SI tmp_shift;
19866 tmp_shift = ANDSI (FLD (f_u6), 31);
19867 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19868 if (NESI (tmp_shift, 0)) {
19869 {
19870 SI tmp_tmp1;
19871 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
19872 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19873 }
19874 }
19875 {
19876 SI opval = tmp_tmp;
19877 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19878 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19879 }
19880 }
19881
19882 return vpc;
19883 #undef FLD
19884 }
19885
19886 /* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19887
19888 static SEM_PC
19889 SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19890 {
19891 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
19892 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19893 int UNUSED written = 0;
19894 IADDR UNUSED pc = abuf->addr;
19895 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19896
19897 {
19898 HI tmp_argihi;
19899 HI tmp_argilo;
19900 HI tmp_argjhi;
19901 HI tmp_argjlo;
19902 {
19903 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19904 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19905 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19906 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19907 }
19908 if (GTHI (tmp_argihi, tmp_argjhi)) {
19909 {
19910 UHI opval = tmp_argjhi;
19911 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19912 written |= (1 << 9);
19913 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19914 }
19915 } else {
19916 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19917 {
19918 UHI opval = INVHI (tmp_argjhi);
19919 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19920 written |= (1 << 9);
19921 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19922 }
19923 } else {
19924 {
19925 UHI opval = tmp_argihi;
19926 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19927 written |= (1 << 9);
19928 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19929 }
19930 }
19931 }
19932 if (GTHI (tmp_argilo, tmp_argjlo)) {
19933 {
19934 UHI opval = tmp_argjlo;
19935 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19936 written |= (1 << 10);
19937 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19938 }
19939 } else {
19940 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19941 {
19942 UHI opval = INVHI (tmp_argjlo);
19943 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19944 written |= (1 << 10);
19945 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19946 }
19947 } else {
19948 {
19949 UHI opval = tmp_argilo;
19950 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19951 written |= (1 << 10);
19952 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19953 }
19954 }
19955 }
19956 }
19957
19958 abuf->written = written;
19959 return vpc;
19960 #undef FLD
19961 }
19962
19963 /* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19964
19965 static SEM_PC
19966 SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19967 {
19968 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19969 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19970 int UNUSED written = 0;
19971 IADDR UNUSED pc = abuf->addr;
19972 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19973
19974 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19975 frvbf_media_register_not_aligned (current_cpu);
19976 } else {
19977 {
19978 HI tmp_argihi;
19979 HI tmp_argilo;
19980 HI tmp_argjhi;
19981 HI tmp_argjlo;
19982 {
19983 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19984 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19985 written |= (1 << 14);
19986 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19987 }
19988 {
19989 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19990 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19991 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19992 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19993 }
19994 if (GTHI (tmp_argihi, tmp_argjhi)) {
19995 {
19996 UHI opval = tmp_argjhi;
19997 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19998 written |= (1 << 15);
19999 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20000 }
20001 } else {
20002 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20003 {
20004 UHI opval = INVHI (tmp_argjhi);
20005 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20006 written |= (1 << 15);
20007 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20008 }
20009 } else {
20010 {
20011 UHI opval = tmp_argihi;
20012 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20013 written |= (1 << 15);
20014 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20015 }
20016 }
20017 }
20018 if (GTHI (tmp_argilo, tmp_argjlo)) {
20019 {
20020 UHI opval = tmp_argjlo;
20021 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20022 written |= (1 << 17);
20023 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20024 }
20025 } else {
20026 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20027 {
20028 UHI opval = INVHI (tmp_argjlo);
20029 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20030 written |= (1 << 17);
20031 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20032 }
20033 } else {
20034 {
20035 UHI opval = tmp_argilo;
20036 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20037 written |= (1 << 17);
20038 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20039 }
20040 }
20041 }
20042 {
20043 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20044 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20045 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20046 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20047 }
20048 if (GTHI (tmp_argihi, tmp_argjhi)) {
20049 {
20050 UHI opval = tmp_argjhi;
20051 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20052 written |= (1 << 16);
20053 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20054 }
20055 } else {
20056 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20057 {
20058 UHI opval = INVHI (tmp_argjhi);
20059 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20060 written |= (1 << 16);
20061 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20062 }
20063 } else {
20064 {
20065 UHI opval = tmp_argihi;
20066 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20067 written |= (1 << 16);
20068 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20069 }
20070 }
20071 }
20072 if (GTHI (tmp_argilo, tmp_argjlo)) {
20073 {
20074 UHI opval = tmp_argjlo;
20075 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20076 written |= (1 << 18);
20077 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20078 }
20079 } else {
20080 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20081 {
20082 UHI opval = INVHI (tmp_argjlo);
20083 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20084 written |= (1 << 18);
20085 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20086 }
20087 } else {
20088 {
20089 UHI opval = tmp_argilo;
20090 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20091 written |= (1 << 18);
20092 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20093 }
20094 }
20095 }
20096 }
20097 }
20098
20099 abuf->written = written;
20100 return vpc;
20101 #undef FLD
20102 }
20103
20104 /* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20105
20106 static SEM_PC
20107 SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20108 {
20109 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20110 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20111 int UNUSED written = 0;
20112 IADDR UNUSED pc = abuf->addr;
20113 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20114
20115 {
20116 UHI tmp_argihi;
20117 UHI tmp_argilo;
20118 UHI tmp_argjhi;
20119 UHI tmp_argjlo;
20120 {
20121 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20122 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20123 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20124 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20125 }
20126 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20127 {
20128 UHI opval = tmp_argjhi;
20129 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20130 written |= (1 << 9);
20131 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20132 }
20133 } else {
20134 {
20135 UHI opval = tmp_argihi;
20136 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20137 written |= (1 << 9);
20138 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20139 }
20140 }
20141 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20142 {
20143 UHI opval = tmp_argjlo;
20144 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20145 written |= (1 << 10);
20146 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20147 }
20148 } else {
20149 {
20150 UHI opval = tmp_argilo;
20151 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20152 written |= (1 << 10);
20153 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20154 }
20155 }
20156 }
20157
20158 abuf->written = written;
20159 return vpc;
20160 #undef FLD
20161 }
20162
20163 /* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20164
20165 static SEM_PC
20166 SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20167 {
20168 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20170 int UNUSED written = 0;
20171 IADDR UNUSED pc = abuf->addr;
20172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20173
20174 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20175 frvbf_media_cr_not_aligned (current_cpu);
20176 } else {
20177 {
20178 HI tmp_argihi;
20179 HI tmp_argilo;
20180 HI tmp_argjhi;
20181 HI tmp_argjlo;
20182 {
20183 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20184 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20185 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20186 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20187 }
20188 if (GTHI (tmp_argihi, tmp_argjhi)) {
20189 {
20190 UQI opval = 2;
20191 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20192 written |= (1 << 9);
20193 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20194 }
20195 } else {
20196 if (EQHI (tmp_argihi, tmp_argjhi)) {
20197 {
20198 UQI opval = 8;
20199 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20200 written |= (1 << 9);
20201 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20202 }
20203 } else {
20204 if (LTHI (tmp_argihi, tmp_argjhi)) {
20205 {
20206 UQI opval = 4;
20207 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20208 written |= (1 << 9);
20209 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20210 }
20211 } else {
20212 {
20213 UQI opval = 1;
20214 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20215 written |= (1 << 9);
20216 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20217 }
20218 }
20219 }
20220 }
20221 if (GTHI (tmp_argilo, tmp_argjlo)) {
20222 {
20223 UQI opval = 2;
20224 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20225 written |= (1 << 10);
20226 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20227 }
20228 } else {
20229 if (EQHI (tmp_argilo, tmp_argjlo)) {
20230 {
20231 UQI opval = 8;
20232 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20233 written |= (1 << 10);
20234 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20235 }
20236 } else {
20237 if (LTHI (tmp_argilo, tmp_argjlo)) {
20238 {
20239 UQI opval = 4;
20240 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20241 written |= (1 << 10);
20242 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20243 }
20244 } else {
20245 {
20246 UQI opval = 1;
20247 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20248 written |= (1 << 10);
20249 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20250 }
20251 }
20252 }
20253 }
20254 }
20255 }
20256
20257 abuf->written = written;
20258 return vpc;
20259 #undef FLD
20260 }
20261
20262 /* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20263
20264 static SEM_PC
20265 SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20266 {
20267 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20269 int UNUSED written = 0;
20270 IADDR UNUSED pc = abuf->addr;
20271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20272
20273 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20274 frvbf_media_cr_not_aligned (current_cpu);
20275 } else {
20276 {
20277 UHI tmp_argihi;
20278 UHI tmp_argilo;
20279 UHI tmp_argjhi;
20280 UHI tmp_argjlo;
20281 {
20282 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20283 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20284 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20285 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20286 }
20287 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20288 {
20289 UQI opval = 2;
20290 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20291 written |= (1 << 9);
20292 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20293 }
20294 } else {
20295 if (EQHI (tmp_argihi, tmp_argjhi)) {
20296 {
20297 UQI opval = 8;
20298 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20299 written |= (1 << 9);
20300 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20301 }
20302 } else {
20303 if (LTUHI (tmp_argihi, tmp_argjhi)) {
20304 {
20305 UQI opval = 4;
20306 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20307 written |= (1 << 9);
20308 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20309 }
20310 } else {
20311 {
20312 UQI opval = 1;
20313 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20314 written |= (1 << 9);
20315 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20316 }
20317 }
20318 }
20319 }
20320 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20321 {
20322 UQI opval = 2;
20323 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20324 written |= (1 << 10);
20325 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20326 }
20327 } else {
20328 if (EQHI (tmp_argilo, tmp_argjlo)) {
20329 {
20330 UQI opval = 8;
20331 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20332 written |= (1 << 10);
20333 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20334 }
20335 } else {
20336 if (LTUHI (tmp_argilo, tmp_argjlo)) {
20337 {
20338 UQI opval = 4;
20339 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20340 written |= (1 << 10);
20341 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20342 }
20343 } else {
20344 {
20345 UQI opval = 1;
20346 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20347 written |= (1 << 10);
20348 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20349 }
20350 }
20351 }
20352 }
20353 }
20354 }
20355
20356 abuf->written = written;
20357 return vpc;
20358 #undef FLD
20359 }
20360
20361 /* mabshs: mabshs$pack $FRintj,$FRintk */
20362
20363 static SEM_PC
20364 SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20365 {
20366 #define FLD(f) abuf->fields.sfmt_mabshs.f
20367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20368 int UNUSED written = 0;
20369 IADDR UNUSED pc = abuf->addr;
20370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20371
20372 {
20373 HI tmp_arghi;
20374 HI tmp_arglo;
20375 {
20376 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20377 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20378 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20379 }
20380 {
20381 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20382 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20383 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20384 }
20385 tmp_arghi = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
20386 tmp_arglo = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
20387 if (GTDI (ABSHI (tmp_arghi), 32767)) {
20388 {
20389 {
20390 UHI opval = 32767;
20391 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20392 written |= (1 << 8);
20393 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20394 }
20395 frvbf_media_overflow (current_cpu, 8);
20396 }
20397 } else {
20398 if (LTDI (ABSHI (tmp_arghi), -32768)) {
20399 {
20400 {
20401 UHI opval = -32768;
20402 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20403 written |= (1 << 8);
20404 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20405 }
20406 frvbf_media_overflow (current_cpu, 8);
20407 }
20408 } else {
20409 {
20410 UHI opval = ABSHI (tmp_arghi);
20411 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20412 written |= (1 << 8);
20413 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20414 }
20415 }
20416 }
20417 if (GTDI (ABSHI (tmp_arglo), 32767)) {
20418 {
20419 {
20420 UHI opval = 32767;
20421 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20422 written |= (1 << 9);
20423 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20424 }
20425 frvbf_media_overflow (current_cpu, 4);
20426 }
20427 } else {
20428 if (LTDI (ABSHI (tmp_arglo), -32768)) {
20429 {
20430 {
20431 UHI opval = -32768;
20432 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20433 written |= (1 << 9);
20434 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20435 }
20436 frvbf_media_overflow (current_cpu, 4);
20437 }
20438 } else {
20439 {
20440 UHI opval = ABSHI (tmp_arglo);
20441 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20442 written |= (1 << 9);
20443 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20444 }
20445 }
20446 }
20447 }
20448
20449 abuf->written = written;
20450 return vpc;
20451 #undef FLD
20452 }
20453
20454 /* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20455
20456 static SEM_PC
20457 SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20458 {
20459 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20460 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20461 int UNUSED written = 0;
20462 IADDR UNUSED pc = abuf->addr;
20463 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20464
20465 {
20466 HI tmp_argihi;
20467 HI tmp_argilo;
20468 HI tmp_argjhi;
20469 HI tmp_argjlo;
20470 {
20471 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20472 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20473 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20474 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20475 }
20476 {
20477 DI tmp_tmp;
20478 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20479 if (GTDI (tmp_tmp, 32767)) {
20480 {
20481 {
20482 UHI opval = 32767;
20483 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20484 written |= (1 << 9);
20485 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20486 }
20487 frvbf_media_overflow (current_cpu, 8);
20488 }
20489 } else {
20490 if (LTDI (tmp_tmp, -32768)) {
20491 {
20492 {
20493 UHI opval = -32768;
20494 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20495 written |= (1 << 9);
20496 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20497 }
20498 frvbf_media_overflow (current_cpu, 8);
20499 }
20500 } else {
20501 {
20502 UHI opval = tmp_tmp;
20503 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20504 written |= (1 << 9);
20505 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20506 }
20507 }
20508 }
20509 }
20510 {
20511 DI tmp_tmp;
20512 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20513 if (GTDI (tmp_tmp, 32767)) {
20514 {
20515 {
20516 UHI opval = 32767;
20517 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20518 written |= (1 << 10);
20519 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20520 }
20521 frvbf_media_overflow (current_cpu, 4);
20522 }
20523 } else {
20524 if (LTDI (tmp_tmp, -32768)) {
20525 {
20526 {
20527 UHI opval = -32768;
20528 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20529 written |= (1 << 10);
20530 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20531 }
20532 frvbf_media_overflow (current_cpu, 4);
20533 }
20534 } else {
20535 {
20536 UHI opval = tmp_tmp;
20537 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20538 written |= (1 << 10);
20539 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20540 }
20541 }
20542 }
20543 }
20544 }
20545
20546 abuf->written = written;
20547 return vpc;
20548 #undef FLD
20549 }
20550
20551 /* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20552
20553 static SEM_PC
20554 SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20555 {
20556 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20558 int UNUSED written = 0;
20559 IADDR UNUSED pc = abuf->addr;
20560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20561
20562 {
20563 UHI tmp_argihi;
20564 UHI tmp_argilo;
20565 UHI tmp_argjhi;
20566 UHI tmp_argjlo;
20567 {
20568 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20569 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20570 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20571 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20572 }
20573 {
20574 DI tmp_tmp;
20575 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20576 if (GTDI (tmp_tmp, 65535)) {
20577 {
20578 {
20579 UHI opval = 65535;
20580 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20581 written |= (1 << 9);
20582 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20583 }
20584 frvbf_media_overflow (current_cpu, 8);
20585 }
20586 } else {
20587 if (LTDI (tmp_tmp, 0)) {
20588 {
20589 {
20590 UHI opval = 0;
20591 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20592 written |= (1 << 9);
20593 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20594 }
20595 frvbf_media_overflow (current_cpu, 8);
20596 }
20597 } else {
20598 {
20599 UHI opval = tmp_tmp;
20600 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20601 written |= (1 << 9);
20602 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20603 }
20604 }
20605 }
20606 }
20607 {
20608 DI tmp_tmp;
20609 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20610 if (GTDI (tmp_tmp, 65535)) {
20611 {
20612 {
20613 UHI opval = 65535;
20614 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20615 written |= (1 << 10);
20616 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20617 }
20618 frvbf_media_overflow (current_cpu, 4);
20619 }
20620 } else {
20621 if (LTDI (tmp_tmp, 0)) {
20622 {
20623 {
20624 UHI opval = 0;
20625 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20626 written |= (1 << 10);
20627 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20628 }
20629 frvbf_media_overflow (current_cpu, 4);
20630 }
20631 } else {
20632 {
20633 UHI opval = tmp_tmp;
20634 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20635 written |= (1 << 10);
20636 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20637 }
20638 }
20639 }
20640 }
20641 }
20642
20643 abuf->written = written;
20644 return vpc;
20645 #undef FLD
20646 }
20647
20648 /* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20649
20650 static SEM_PC
20651 SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20652 {
20653 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20655 int UNUSED written = 0;
20656 IADDR UNUSED pc = abuf->addr;
20657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20658
20659 {
20660 HI tmp_argihi;
20661 HI tmp_argilo;
20662 HI tmp_argjhi;
20663 HI tmp_argjlo;
20664 {
20665 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20666 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20667 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20668 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20669 }
20670 {
20671 DI tmp_tmp;
20672 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20673 if (GTDI (tmp_tmp, 32767)) {
20674 {
20675 {
20676 UHI opval = 32767;
20677 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20678 written |= (1 << 9);
20679 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20680 }
20681 frvbf_media_overflow (current_cpu, 8);
20682 }
20683 } else {
20684 if (LTDI (tmp_tmp, -32768)) {
20685 {
20686 {
20687 UHI opval = -32768;
20688 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20689 written |= (1 << 9);
20690 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20691 }
20692 frvbf_media_overflow (current_cpu, 8);
20693 }
20694 } else {
20695 {
20696 UHI opval = tmp_tmp;
20697 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20698 written |= (1 << 9);
20699 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20700 }
20701 }
20702 }
20703 }
20704 {
20705 DI tmp_tmp;
20706 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20707 if (GTDI (tmp_tmp, 32767)) {
20708 {
20709 {
20710 UHI opval = 32767;
20711 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20712 written |= (1 << 10);
20713 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20714 }
20715 frvbf_media_overflow (current_cpu, 4);
20716 }
20717 } else {
20718 if (LTDI (tmp_tmp, -32768)) {
20719 {
20720 {
20721 UHI opval = -32768;
20722 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20723 written |= (1 << 10);
20724 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20725 }
20726 frvbf_media_overflow (current_cpu, 4);
20727 }
20728 } else {
20729 {
20730 UHI opval = tmp_tmp;
20731 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20732 written |= (1 << 10);
20733 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20734 }
20735 }
20736 }
20737 }
20738 }
20739
20740 abuf->written = written;
20741 return vpc;
20742 #undef FLD
20743 }
20744
20745 /* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20746
20747 static SEM_PC
20748 SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20749 {
20750 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20752 int UNUSED written = 0;
20753 IADDR UNUSED pc = abuf->addr;
20754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20755
20756 {
20757 UHI tmp_argihi;
20758 UHI tmp_argilo;
20759 UHI tmp_argjhi;
20760 UHI tmp_argjlo;
20761 {
20762 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20763 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20764 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20765 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20766 }
20767 {
20768 DI tmp_tmp;
20769 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20770 if (GTDI (tmp_tmp, 65535)) {
20771 {
20772 {
20773 UHI opval = 65535;
20774 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20775 written |= (1 << 9);
20776 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20777 }
20778 frvbf_media_overflow (current_cpu, 8);
20779 }
20780 } else {
20781 if (LTDI (tmp_tmp, 0)) {
20782 {
20783 {
20784 UHI opval = 0;
20785 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20786 written |= (1 << 9);
20787 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20788 }
20789 frvbf_media_overflow (current_cpu, 8);
20790 }
20791 } else {
20792 {
20793 UHI opval = tmp_tmp;
20794 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20795 written |= (1 << 9);
20796 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20797 }
20798 }
20799 }
20800 }
20801 {
20802 DI tmp_tmp;
20803 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20804 if (GTDI (tmp_tmp, 65535)) {
20805 {
20806 {
20807 UHI opval = 65535;
20808 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20809 written |= (1 << 10);
20810 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20811 }
20812 frvbf_media_overflow (current_cpu, 4);
20813 }
20814 } else {
20815 if (LTDI (tmp_tmp, 0)) {
20816 {
20817 {
20818 UHI opval = 0;
20819 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20820 written |= (1 << 10);
20821 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20822 }
20823 frvbf_media_overflow (current_cpu, 4);
20824 }
20825 } else {
20826 {
20827 UHI opval = tmp_tmp;
20828 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20829 written |= (1 << 10);
20830 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20831 }
20832 }
20833 }
20834 }
20835 }
20836
20837 abuf->written = written;
20838 return vpc;
20839 #undef FLD
20840 }
20841
20842 /* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20843
20844 static SEM_PC
20845 SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20846 {
20847 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20849 int UNUSED written = 0;
20850 IADDR UNUSED pc = abuf->addr;
20851 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20852
20853 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20854 {
20855 HI tmp_argihi;
20856 HI tmp_argilo;
20857 HI tmp_argjhi;
20858 HI tmp_argjlo;
20859 {
20860 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20861 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20862 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20863 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20864 }
20865 {
20866 DI tmp_tmp;
20867 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20868 if (GTDI (tmp_tmp, 32767)) {
20869 {
20870 {
20871 UHI opval = 32767;
20872 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20873 written |= (1 << 11);
20874 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20875 }
20876 frvbf_media_overflow (current_cpu, 8);
20877 }
20878 } else {
20879 if (LTDI (tmp_tmp, -32768)) {
20880 {
20881 {
20882 UHI opval = -32768;
20883 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20884 written |= (1 << 11);
20885 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20886 }
20887 frvbf_media_overflow (current_cpu, 8);
20888 }
20889 } else {
20890 {
20891 UHI opval = tmp_tmp;
20892 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20893 written |= (1 << 11);
20894 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20895 }
20896 }
20897 }
20898 }
20899 {
20900 DI tmp_tmp;
20901 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20902 if (GTDI (tmp_tmp, 32767)) {
20903 {
20904 {
20905 UHI opval = 32767;
20906 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20907 written |= (1 << 12);
20908 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20909 }
20910 frvbf_media_overflow (current_cpu, 4);
20911 }
20912 } else {
20913 if (LTDI (tmp_tmp, -32768)) {
20914 {
20915 {
20916 UHI opval = -32768;
20917 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20918 written |= (1 << 12);
20919 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20920 }
20921 frvbf_media_overflow (current_cpu, 4);
20922 }
20923 } else {
20924 {
20925 UHI opval = tmp_tmp;
20926 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20927 written |= (1 << 12);
20928 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20929 }
20930 }
20931 }
20932 }
20933 }
20934 }
20935
20936 abuf->written = written;
20937 return vpc;
20938 #undef FLD
20939 }
20940
20941 /* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20942
20943 static SEM_PC
20944 SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20945 {
20946 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20947 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20948 int UNUSED written = 0;
20949 IADDR UNUSED pc = abuf->addr;
20950 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20951
20952 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20953 {
20954 UHI tmp_argihi;
20955 UHI tmp_argilo;
20956 UHI tmp_argjhi;
20957 UHI tmp_argjlo;
20958 {
20959 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20960 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20961 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20962 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20963 }
20964 {
20965 DI tmp_tmp;
20966 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20967 if (GTDI (tmp_tmp, 65535)) {
20968 {
20969 {
20970 UHI opval = 65535;
20971 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20972 written |= (1 << 11);
20973 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20974 }
20975 frvbf_media_overflow (current_cpu, 8);
20976 }
20977 } else {
20978 if (LTDI (tmp_tmp, 0)) {
20979 {
20980 {
20981 UHI opval = 0;
20982 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20983 written |= (1 << 11);
20984 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20985 }
20986 frvbf_media_overflow (current_cpu, 8);
20987 }
20988 } else {
20989 {
20990 UHI opval = tmp_tmp;
20991 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20992 written |= (1 << 11);
20993 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20994 }
20995 }
20996 }
20997 }
20998 {
20999 DI tmp_tmp;
21000 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21001 if (GTDI (tmp_tmp, 65535)) {
21002 {
21003 {
21004 UHI opval = 65535;
21005 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21006 written |= (1 << 12);
21007 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21008 }
21009 frvbf_media_overflow (current_cpu, 4);
21010 }
21011 } else {
21012 if (LTDI (tmp_tmp, 0)) {
21013 {
21014 {
21015 UHI opval = 0;
21016 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21017 written |= (1 << 12);
21018 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21019 }
21020 frvbf_media_overflow (current_cpu, 4);
21021 }
21022 } else {
21023 {
21024 UHI opval = tmp_tmp;
21025 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21026 written |= (1 << 12);
21027 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21028 }
21029 }
21030 }
21031 }
21032 }
21033 }
21034
21035 abuf->written = written;
21036 return vpc;
21037 #undef FLD
21038 }
21039
21040 /* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21041
21042 static SEM_PC
21043 SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21044 {
21045 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21046 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21047 int UNUSED written = 0;
21048 IADDR UNUSED pc = abuf->addr;
21049 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21050
21051 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21052 {
21053 HI tmp_argihi;
21054 HI tmp_argilo;
21055 HI tmp_argjhi;
21056 HI tmp_argjlo;
21057 {
21058 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21059 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21060 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21061 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21062 }
21063 {
21064 DI tmp_tmp;
21065 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21066 if (GTDI (tmp_tmp, 32767)) {
21067 {
21068 {
21069 UHI opval = 32767;
21070 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21071 written |= (1 << 11);
21072 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21073 }
21074 frvbf_media_overflow (current_cpu, 8);
21075 }
21076 } else {
21077 if (LTDI (tmp_tmp, -32768)) {
21078 {
21079 {
21080 UHI opval = -32768;
21081 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21082 written |= (1 << 11);
21083 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21084 }
21085 frvbf_media_overflow (current_cpu, 8);
21086 }
21087 } else {
21088 {
21089 UHI opval = tmp_tmp;
21090 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21091 written |= (1 << 11);
21092 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21093 }
21094 }
21095 }
21096 }
21097 {
21098 DI tmp_tmp;
21099 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21100 if (GTDI (tmp_tmp, 32767)) {
21101 {
21102 {
21103 UHI opval = 32767;
21104 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21105 written |= (1 << 12);
21106 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21107 }
21108 frvbf_media_overflow (current_cpu, 4);
21109 }
21110 } else {
21111 if (LTDI (tmp_tmp, -32768)) {
21112 {
21113 {
21114 UHI opval = -32768;
21115 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21116 written |= (1 << 12);
21117 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21118 }
21119 frvbf_media_overflow (current_cpu, 4);
21120 }
21121 } else {
21122 {
21123 UHI opval = tmp_tmp;
21124 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21125 written |= (1 << 12);
21126 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21127 }
21128 }
21129 }
21130 }
21131 }
21132 }
21133
21134 abuf->written = written;
21135 return vpc;
21136 #undef FLD
21137 }
21138
21139 /* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21140
21141 static SEM_PC
21142 SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21143 {
21144 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21146 int UNUSED written = 0;
21147 IADDR UNUSED pc = abuf->addr;
21148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21149
21150 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21151 {
21152 UHI tmp_argihi;
21153 UHI tmp_argilo;
21154 UHI tmp_argjhi;
21155 UHI tmp_argjlo;
21156 {
21157 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21158 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21159 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21160 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21161 }
21162 {
21163 DI tmp_tmp;
21164 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21165 if (GTDI (tmp_tmp, 65535)) {
21166 {
21167 {
21168 UHI opval = 65535;
21169 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21170 written |= (1 << 11);
21171 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21172 }
21173 frvbf_media_overflow (current_cpu, 8);
21174 }
21175 } else {
21176 if (LTDI (tmp_tmp, 0)) {
21177 {
21178 {
21179 UHI opval = 0;
21180 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21181 written |= (1 << 11);
21182 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21183 }
21184 frvbf_media_overflow (current_cpu, 8);
21185 }
21186 } else {
21187 {
21188 UHI opval = tmp_tmp;
21189 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21190 written |= (1 << 11);
21191 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21192 }
21193 }
21194 }
21195 }
21196 {
21197 DI tmp_tmp;
21198 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21199 if (GTDI (tmp_tmp, 65535)) {
21200 {
21201 {
21202 UHI opval = 65535;
21203 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21204 written |= (1 << 12);
21205 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21206 }
21207 frvbf_media_overflow (current_cpu, 4);
21208 }
21209 } else {
21210 if (LTDI (tmp_tmp, 0)) {
21211 {
21212 {
21213 UHI opval = 0;
21214 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21215 written |= (1 << 12);
21216 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21217 }
21218 frvbf_media_overflow (current_cpu, 4);
21219 }
21220 } else {
21221 {
21222 UHI opval = tmp_tmp;
21223 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21224 written |= (1 << 12);
21225 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21226 }
21227 }
21228 }
21229 }
21230 }
21231 }
21232
21233 abuf->written = written;
21234 return vpc;
21235 #undef FLD
21236 }
21237
21238 /* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21239
21240 static SEM_PC
21241 SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21242 {
21243 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21245 int UNUSED written = 0;
21246 IADDR UNUSED pc = abuf->addr;
21247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21248
21249 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21250 frvbf_media_register_not_aligned (current_cpu);
21251 } else {
21252 {
21253 HI tmp_argihi;
21254 HI tmp_argilo;
21255 HI tmp_argjhi;
21256 HI tmp_argjlo;
21257 {
21258 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21259 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21260 written |= (1 << 14);
21261 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21262 }
21263 {
21264 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21265 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21266 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21267 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21268 }
21269 {
21270 DI tmp_tmp;
21271 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21272 if (GTDI (tmp_tmp, 32767)) {
21273 {
21274 {
21275 UHI opval = 32767;
21276 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21277 written |= (1 << 15);
21278 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21279 }
21280 frvbf_media_overflow (current_cpu, 8);
21281 }
21282 } else {
21283 if (LTDI (tmp_tmp, -32768)) {
21284 {
21285 {
21286 UHI opval = -32768;
21287 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21288 written |= (1 << 15);
21289 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21290 }
21291 frvbf_media_overflow (current_cpu, 8);
21292 }
21293 } else {
21294 {
21295 UHI opval = tmp_tmp;
21296 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21297 written |= (1 << 15);
21298 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21299 }
21300 }
21301 }
21302 }
21303 {
21304 DI tmp_tmp;
21305 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21306 if (GTDI (tmp_tmp, 32767)) {
21307 {
21308 {
21309 UHI opval = 32767;
21310 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21311 written |= (1 << 17);
21312 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21313 }
21314 frvbf_media_overflow (current_cpu, 4);
21315 }
21316 } else {
21317 if (LTDI (tmp_tmp, -32768)) {
21318 {
21319 {
21320 UHI opval = -32768;
21321 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21322 written |= (1 << 17);
21323 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21324 }
21325 frvbf_media_overflow (current_cpu, 4);
21326 }
21327 } else {
21328 {
21329 UHI opval = tmp_tmp;
21330 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21331 written |= (1 << 17);
21332 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21333 }
21334 }
21335 }
21336 }
21337 {
21338 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21339 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21340 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21341 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21342 }
21343 {
21344 DI tmp_tmp;
21345 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21346 if (GTDI (tmp_tmp, 32767)) {
21347 {
21348 {
21349 UHI opval = 32767;
21350 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21351 written |= (1 << 16);
21352 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21353 }
21354 frvbf_media_overflow (current_cpu, 2);
21355 }
21356 } else {
21357 if (LTDI (tmp_tmp, -32768)) {
21358 {
21359 {
21360 UHI opval = -32768;
21361 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21362 written |= (1 << 16);
21363 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21364 }
21365 frvbf_media_overflow (current_cpu, 2);
21366 }
21367 } else {
21368 {
21369 UHI opval = tmp_tmp;
21370 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21371 written |= (1 << 16);
21372 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21373 }
21374 }
21375 }
21376 }
21377 {
21378 DI tmp_tmp;
21379 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21380 if (GTDI (tmp_tmp, 32767)) {
21381 {
21382 {
21383 UHI opval = 32767;
21384 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21385 written |= (1 << 18);
21386 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21387 }
21388 frvbf_media_overflow (current_cpu, 1);
21389 }
21390 } else {
21391 if (LTDI (tmp_tmp, -32768)) {
21392 {
21393 {
21394 UHI opval = -32768;
21395 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21396 written |= (1 << 18);
21397 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21398 }
21399 frvbf_media_overflow (current_cpu, 1);
21400 }
21401 } else {
21402 {
21403 UHI opval = tmp_tmp;
21404 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21405 written |= (1 << 18);
21406 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21407 }
21408 }
21409 }
21410 }
21411 }
21412 }
21413
21414 abuf->written = written;
21415 return vpc;
21416 #undef FLD
21417 }
21418
21419 /* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21420
21421 static SEM_PC
21422 SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21423 {
21424 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21426 int UNUSED written = 0;
21427 IADDR UNUSED pc = abuf->addr;
21428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21429
21430 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21431 frvbf_media_register_not_aligned (current_cpu);
21432 } else {
21433 {
21434 UHI tmp_argihi;
21435 UHI tmp_argilo;
21436 UHI tmp_argjhi;
21437 UHI tmp_argjlo;
21438 {
21439 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21440 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21441 written |= (1 << 14);
21442 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21443 }
21444 {
21445 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21446 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21447 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21448 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21449 }
21450 {
21451 DI tmp_tmp;
21452 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21453 if (GTDI (tmp_tmp, 65535)) {
21454 {
21455 {
21456 UHI opval = 65535;
21457 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21458 written |= (1 << 15);
21459 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21460 }
21461 frvbf_media_overflow (current_cpu, 8);
21462 }
21463 } else {
21464 if (LTDI (tmp_tmp, 0)) {
21465 {
21466 {
21467 UHI opval = 0;
21468 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21469 written |= (1 << 15);
21470 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21471 }
21472 frvbf_media_overflow (current_cpu, 8);
21473 }
21474 } else {
21475 {
21476 UHI opval = tmp_tmp;
21477 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21478 written |= (1 << 15);
21479 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21480 }
21481 }
21482 }
21483 }
21484 {
21485 DI tmp_tmp;
21486 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21487 if (GTDI (tmp_tmp, 65535)) {
21488 {
21489 {
21490 UHI opval = 65535;
21491 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21492 written |= (1 << 17);
21493 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21494 }
21495 frvbf_media_overflow (current_cpu, 4);
21496 }
21497 } else {
21498 if (LTDI (tmp_tmp, 0)) {
21499 {
21500 {
21501 UHI opval = 0;
21502 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21503 written |= (1 << 17);
21504 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21505 }
21506 frvbf_media_overflow (current_cpu, 4);
21507 }
21508 } else {
21509 {
21510 UHI opval = tmp_tmp;
21511 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21512 written |= (1 << 17);
21513 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21514 }
21515 }
21516 }
21517 }
21518 {
21519 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21520 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21521 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21522 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21523 }
21524 {
21525 DI tmp_tmp;
21526 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21527 if (GTDI (tmp_tmp, 65535)) {
21528 {
21529 {
21530 UHI opval = 65535;
21531 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21532 written |= (1 << 16);
21533 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21534 }
21535 frvbf_media_overflow (current_cpu, 2);
21536 }
21537 } else {
21538 if (LTDI (tmp_tmp, 0)) {
21539 {
21540 {
21541 UHI opval = 0;
21542 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21543 written |= (1 << 16);
21544 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21545 }
21546 frvbf_media_overflow (current_cpu, 2);
21547 }
21548 } else {
21549 {
21550 UHI opval = tmp_tmp;
21551 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21552 written |= (1 << 16);
21553 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21554 }
21555 }
21556 }
21557 }
21558 {
21559 DI tmp_tmp;
21560 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21561 if (GTDI (tmp_tmp, 65535)) {
21562 {
21563 {
21564 UHI opval = 65535;
21565 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21566 written |= (1 << 18);
21567 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21568 }
21569 frvbf_media_overflow (current_cpu, 1);
21570 }
21571 } else {
21572 if (LTDI (tmp_tmp, 0)) {
21573 {
21574 {
21575 UHI opval = 0;
21576 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21577 written |= (1 << 18);
21578 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21579 }
21580 frvbf_media_overflow (current_cpu, 1);
21581 }
21582 } else {
21583 {
21584 UHI opval = tmp_tmp;
21585 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21586 written |= (1 << 18);
21587 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21588 }
21589 }
21590 }
21591 }
21592 }
21593 }
21594
21595 abuf->written = written;
21596 return vpc;
21597 #undef FLD
21598 }
21599
21600 /* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21601
21602 static SEM_PC
21603 SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21604 {
21605 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21607 int UNUSED written = 0;
21608 IADDR UNUSED pc = abuf->addr;
21609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21610
21611 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21612 frvbf_media_register_not_aligned (current_cpu);
21613 } else {
21614 {
21615 HI tmp_argihi;
21616 HI tmp_argilo;
21617 HI tmp_argjhi;
21618 HI tmp_argjlo;
21619 {
21620 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21621 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21622 written |= (1 << 14);
21623 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21624 }
21625 {
21626 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21627 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21628 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21629 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21630 }
21631 {
21632 DI tmp_tmp;
21633 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21634 if (GTDI (tmp_tmp, 32767)) {
21635 {
21636 {
21637 UHI opval = 32767;
21638 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21639 written |= (1 << 15);
21640 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21641 }
21642 frvbf_media_overflow (current_cpu, 8);
21643 }
21644 } else {
21645 if (LTDI (tmp_tmp, -32768)) {
21646 {
21647 {
21648 UHI opval = -32768;
21649 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21650 written |= (1 << 15);
21651 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21652 }
21653 frvbf_media_overflow (current_cpu, 8);
21654 }
21655 } else {
21656 {
21657 UHI opval = tmp_tmp;
21658 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21659 written |= (1 << 15);
21660 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21661 }
21662 }
21663 }
21664 }
21665 {
21666 DI tmp_tmp;
21667 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21668 if (GTDI (tmp_tmp, 32767)) {
21669 {
21670 {
21671 UHI opval = 32767;
21672 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21673 written |= (1 << 17);
21674 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21675 }
21676 frvbf_media_overflow (current_cpu, 4);
21677 }
21678 } else {
21679 if (LTDI (tmp_tmp, -32768)) {
21680 {
21681 {
21682 UHI opval = -32768;
21683 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21684 written |= (1 << 17);
21685 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21686 }
21687 frvbf_media_overflow (current_cpu, 4);
21688 }
21689 } else {
21690 {
21691 UHI opval = tmp_tmp;
21692 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21693 written |= (1 << 17);
21694 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21695 }
21696 }
21697 }
21698 }
21699 {
21700 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21701 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21702 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21703 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21704 }
21705 {
21706 DI tmp_tmp;
21707 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21708 if (GTDI (tmp_tmp, 32767)) {
21709 {
21710 {
21711 UHI opval = 32767;
21712 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21713 written |= (1 << 16);
21714 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21715 }
21716 frvbf_media_overflow (current_cpu, 2);
21717 }
21718 } else {
21719 if (LTDI (tmp_tmp, -32768)) {
21720 {
21721 {
21722 UHI opval = -32768;
21723 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21724 written |= (1 << 16);
21725 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21726 }
21727 frvbf_media_overflow (current_cpu, 2);
21728 }
21729 } else {
21730 {
21731 UHI opval = tmp_tmp;
21732 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21733 written |= (1 << 16);
21734 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21735 }
21736 }
21737 }
21738 }
21739 {
21740 DI tmp_tmp;
21741 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21742 if (GTDI (tmp_tmp, 32767)) {
21743 {
21744 {
21745 UHI opval = 32767;
21746 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21747 written |= (1 << 18);
21748 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21749 }
21750 frvbf_media_overflow (current_cpu, 1);
21751 }
21752 } else {
21753 if (LTDI (tmp_tmp, -32768)) {
21754 {
21755 {
21756 UHI opval = -32768;
21757 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21758 written |= (1 << 18);
21759 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21760 }
21761 frvbf_media_overflow (current_cpu, 1);
21762 }
21763 } else {
21764 {
21765 UHI opval = tmp_tmp;
21766 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21767 written |= (1 << 18);
21768 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21769 }
21770 }
21771 }
21772 }
21773 }
21774 }
21775
21776 abuf->written = written;
21777 return vpc;
21778 #undef FLD
21779 }
21780
21781 /* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21782
21783 static SEM_PC
21784 SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21785 {
21786 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21788 int UNUSED written = 0;
21789 IADDR UNUSED pc = abuf->addr;
21790 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21791
21792 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21793 frvbf_media_register_not_aligned (current_cpu);
21794 } else {
21795 {
21796 UHI tmp_argihi;
21797 UHI tmp_argilo;
21798 UHI tmp_argjhi;
21799 UHI tmp_argjlo;
21800 {
21801 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21802 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21803 written |= (1 << 14);
21804 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21805 }
21806 {
21807 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21808 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21809 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21810 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21811 }
21812 {
21813 DI tmp_tmp;
21814 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21815 if (GTDI (tmp_tmp, 65535)) {
21816 {
21817 {
21818 UHI opval = 65535;
21819 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21820 written |= (1 << 15);
21821 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21822 }
21823 frvbf_media_overflow (current_cpu, 8);
21824 }
21825 } else {
21826 if (LTDI (tmp_tmp, 0)) {
21827 {
21828 {
21829 UHI opval = 0;
21830 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21831 written |= (1 << 15);
21832 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21833 }
21834 frvbf_media_overflow (current_cpu, 8);
21835 }
21836 } else {
21837 {
21838 UHI opval = tmp_tmp;
21839 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21840 written |= (1 << 15);
21841 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21842 }
21843 }
21844 }
21845 }
21846 {
21847 DI tmp_tmp;
21848 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21849 if (GTDI (tmp_tmp, 65535)) {
21850 {
21851 {
21852 UHI opval = 65535;
21853 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21854 written |= (1 << 17);
21855 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21856 }
21857 frvbf_media_overflow (current_cpu, 4);
21858 }
21859 } else {
21860 if (LTDI (tmp_tmp, 0)) {
21861 {
21862 {
21863 UHI opval = 0;
21864 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21865 written |= (1 << 17);
21866 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21867 }
21868 frvbf_media_overflow (current_cpu, 4);
21869 }
21870 } else {
21871 {
21872 UHI opval = tmp_tmp;
21873 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21874 written |= (1 << 17);
21875 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21876 }
21877 }
21878 }
21879 }
21880 {
21881 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21882 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21883 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21884 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21885 }
21886 {
21887 DI tmp_tmp;
21888 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21889 if (GTDI (tmp_tmp, 65535)) {
21890 {
21891 {
21892 UHI opval = 65535;
21893 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21894 written |= (1 << 16);
21895 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21896 }
21897 frvbf_media_overflow (current_cpu, 2);
21898 }
21899 } else {
21900 if (LTDI (tmp_tmp, 0)) {
21901 {
21902 {
21903 UHI opval = 0;
21904 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21905 written |= (1 << 16);
21906 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21907 }
21908 frvbf_media_overflow (current_cpu, 2);
21909 }
21910 } else {
21911 {
21912 UHI opval = tmp_tmp;
21913 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21914 written |= (1 << 16);
21915 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21916 }
21917 }
21918 }
21919 }
21920 {
21921 DI tmp_tmp;
21922 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21923 if (GTDI (tmp_tmp, 65535)) {
21924 {
21925 {
21926 UHI opval = 65535;
21927 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21928 written |= (1 << 18);
21929 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21930 }
21931 frvbf_media_overflow (current_cpu, 1);
21932 }
21933 } else {
21934 if (LTDI (tmp_tmp, 0)) {
21935 {
21936 {
21937 UHI opval = 0;
21938 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21939 written |= (1 << 18);
21940 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21941 }
21942 frvbf_media_overflow (current_cpu, 1);
21943 }
21944 } else {
21945 {
21946 UHI opval = tmp_tmp;
21947 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21948 written |= (1 << 18);
21949 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21950 }
21951 }
21952 }
21953 }
21954 }
21955 }
21956
21957 abuf->written = written;
21958 return vpc;
21959 #undef FLD
21960 }
21961
21962 /* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21963
21964 static SEM_PC
21965 SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21966 {
21967 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21968 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21969 int UNUSED written = 0;
21970 IADDR UNUSED pc = abuf->addr;
21971 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21972
21973 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21974 frvbf_media_register_not_aligned (current_cpu);
21975 } else {
21976 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21977 {
21978 HI tmp_argihi;
21979 HI tmp_argilo;
21980 HI tmp_argjhi;
21981 HI tmp_argjlo;
21982 {
21983 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21984 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21985 written |= (1 << 16);
21986 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21987 }
21988 {
21989 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21990 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21991 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21992 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21993 }
21994 {
21995 DI tmp_tmp;
21996 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21997 if (GTDI (tmp_tmp, 32767)) {
21998 {
21999 {
22000 UHI opval = 32767;
22001 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22002 written |= (1 << 17);
22003 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22004 }
22005 frvbf_media_overflow (current_cpu, 8);
22006 }
22007 } else {
22008 if (LTDI (tmp_tmp, -32768)) {
22009 {
22010 {
22011 UHI opval = -32768;
22012 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22013 written |= (1 << 17);
22014 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22015 }
22016 frvbf_media_overflow (current_cpu, 8);
22017 }
22018 } else {
22019 {
22020 UHI opval = tmp_tmp;
22021 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22022 written |= (1 << 17);
22023 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22024 }
22025 }
22026 }
22027 }
22028 {
22029 DI tmp_tmp;
22030 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22031 if (GTDI (tmp_tmp, 32767)) {
22032 {
22033 {
22034 UHI opval = 32767;
22035 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22036 written |= (1 << 19);
22037 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22038 }
22039 frvbf_media_overflow (current_cpu, 4);
22040 }
22041 } else {
22042 if (LTDI (tmp_tmp, -32768)) {
22043 {
22044 {
22045 UHI opval = -32768;
22046 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22047 written |= (1 << 19);
22048 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22049 }
22050 frvbf_media_overflow (current_cpu, 4);
22051 }
22052 } else {
22053 {
22054 UHI opval = tmp_tmp;
22055 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22056 written |= (1 << 19);
22057 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22058 }
22059 }
22060 }
22061 }
22062 {
22063 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22064 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22065 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22066 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22067 }
22068 {
22069 DI tmp_tmp;
22070 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22071 if (GTDI (tmp_tmp, 32767)) {
22072 {
22073 {
22074 UHI opval = 32767;
22075 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22076 written |= (1 << 18);
22077 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22078 }
22079 frvbf_media_overflow (current_cpu, 2);
22080 }
22081 } else {
22082 if (LTDI (tmp_tmp, -32768)) {
22083 {
22084 {
22085 UHI opval = -32768;
22086 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22087 written |= (1 << 18);
22088 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22089 }
22090 frvbf_media_overflow (current_cpu, 2);
22091 }
22092 } else {
22093 {
22094 UHI opval = tmp_tmp;
22095 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22096 written |= (1 << 18);
22097 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22098 }
22099 }
22100 }
22101 }
22102 {
22103 DI tmp_tmp;
22104 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22105 if (GTDI (tmp_tmp, 32767)) {
22106 {
22107 {
22108 UHI opval = 32767;
22109 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22110 written |= (1 << 20);
22111 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22112 }
22113 frvbf_media_overflow (current_cpu, 1);
22114 }
22115 } else {
22116 if (LTDI (tmp_tmp, -32768)) {
22117 {
22118 {
22119 UHI opval = -32768;
22120 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22121 written |= (1 << 20);
22122 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22123 }
22124 frvbf_media_overflow (current_cpu, 1);
22125 }
22126 } else {
22127 {
22128 UHI opval = tmp_tmp;
22129 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22130 written |= (1 << 20);
22131 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22132 }
22133 }
22134 }
22135 }
22136 }
22137 }
22138 }
22139
22140 abuf->written = written;
22141 return vpc;
22142 #undef FLD
22143 }
22144
22145 /* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22146
22147 static SEM_PC
22148 SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22149 {
22150 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22151 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22152 int UNUSED written = 0;
22153 IADDR UNUSED pc = abuf->addr;
22154 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22155
22156 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22157 frvbf_media_register_not_aligned (current_cpu);
22158 } else {
22159 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22160 {
22161 UHI tmp_argihi;
22162 UHI tmp_argilo;
22163 UHI tmp_argjhi;
22164 UHI tmp_argjlo;
22165 {
22166 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22167 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22168 written |= (1 << 16);
22169 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22170 }
22171 {
22172 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22173 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22174 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22175 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22176 }
22177 {
22178 DI tmp_tmp;
22179 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22180 if (GTDI (tmp_tmp, 65535)) {
22181 {
22182 {
22183 UHI opval = 65535;
22184 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22185 written |= (1 << 17);
22186 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22187 }
22188 frvbf_media_overflow (current_cpu, 8);
22189 }
22190 } else {
22191 if (LTDI (tmp_tmp, 0)) {
22192 {
22193 {
22194 UHI opval = 0;
22195 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22196 written |= (1 << 17);
22197 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22198 }
22199 frvbf_media_overflow (current_cpu, 8);
22200 }
22201 } else {
22202 {
22203 UHI opval = tmp_tmp;
22204 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22205 written |= (1 << 17);
22206 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22207 }
22208 }
22209 }
22210 }
22211 {
22212 DI tmp_tmp;
22213 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22214 if (GTDI (tmp_tmp, 65535)) {
22215 {
22216 {
22217 UHI opval = 65535;
22218 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22219 written |= (1 << 19);
22220 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22221 }
22222 frvbf_media_overflow (current_cpu, 4);
22223 }
22224 } else {
22225 if (LTDI (tmp_tmp, 0)) {
22226 {
22227 {
22228 UHI opval = 0;
22229 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22230 written |= (1 << 19);
22231 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22232 }
22233 frvbf_media_overflow (current_cpu, 4);
22234 }
22235 } else {
22236 {
22237 UHI opval = tmp_tmp;
22238 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22239 written |= (1 << 19);
22240 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22241 }
22242 }
22243 }
22244 }
22245 {
22246 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22247 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22248 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22249 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22250 }
22251 {
22252 DI tmp_tmp;
22253 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22254 if (GTDI (tmp_tmp, 65535)) {
22255 {
22256 {
22257 UHI opval = 65535;
22258 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22259 written |= (1 << 18);
22260 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22261 }
22262 frvbf_media_overflow (current_cpu, 2);
22263 }
22264 } else {
22265 if (LTDI (tmp_tmp, 0)) {
22266 {
22267 {
22268 UHI opval = 0;
22269 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22270 written |= (1 << 18);
22271 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22272 }
22273 frvbf_media_overflow (current_cpu, 2);
22274 }
22275 } else {
22276 {
22277 UHI opval = tmp_tmp;
22278 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22279 written |= (1 << 18);
22280 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22281 }
22282 }
22283 }
22284 }
22285 {
22286 DI tmp_tmp;
22287 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22288 if (GTDI (tmp_tmp, 65535)) {
22289 {
22290 {
22291 UHI opval = 65535;
22292 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22293 written |= (1 << 20);
22294 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22295 }
22296 frvbf_media_overflow (current_cpu, 1);
22297 }
22298 } else {
22299 if (LTDI (tmp_tmp, 0)) {
22300 {
22301 {
22302 UHI opval = 0;
22303 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22304 written |= (1 << 20);
22305 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22306 }
22307 frvbf_media_overflow (current_cpu, 1);
22308 }
22309 } else {
22310 {
22311 UHI opval = tmp_tmp;
22312 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22313 written |= (1 << 20);
22314 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22315 }
22316 }
22317 }
22318 }
22319 }
22320 }
22321 }
22322
22323 abuf->written = written;
22324 return vpc;
22325 #undef FLD
22326 }
22327
22328 /* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22329
22330 static SEM_PC
22331 SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22332 {
22333 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22335 int UNUSED written = 0;
22336 IADDR UNUSED pc = abuf->addr;
22337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22338
22339 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22340 frvbf_media_register_not_aligned (current_cpu);
22341 } else {
22342 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22343 {
22344 HI tmp_argihi;
22345 HI tmp_argilo;
22346 HI tmp_argjhi;
22347 HI tmp_argjlo;
22348 {
22349 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22350 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22351 written |= (1 << 16);
22352 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22353 }
22354 {
22355 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22356 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22357 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22358 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22359 }
22360 {
22361 DI tmp_tmp;
22362 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22363 if (GTDI (tmp_tmp, 32767)) {
22364 {
22365 {
22366 UHI opval = 32767;
22367 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22368 written |= (1 << 17);
22369 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22370 }
22371 frvbf_media_overflow (current_cpu, 8);
22372 }
22373 } else {
22374 if (LTDI (tmp_tmp, -32768)) {
22375 {
22376 {
22377 UHI opval = -32768;
22378 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22379 written |= (1 << 17);
22380 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22381 }
22382 frvbf_media_overflow (current_cpu, 8);
22383 }
22384 } else {
22385 {
22386 UHI opval = tmp_tmp;
22387 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22388 written |= (1 << 17);
22389 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22390 }
22391 }
22392 }
22393 }
22394 {
22395 DI tmp_tmp;
22396 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22397 if (GTDI (tmp_tmp, 32767)) {
22398 {
22399 {
22400 UHI opval = 32767;
22401 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22402 written |= (1 << 19);
22403 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22404 }
22405 frvbf_media_overflow (current_cpu, 4);
22406 }
22407 } else {
22408 if (LTDI (tmp_tmp, -32768)) {
22409 {
22410 {
22411 UHI opval = -32768;
22412 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22413 written |= (1 << 19);
22414 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22415 }
22416 frvbf_media_overflow (current_cpu, 4);
22417 }
22418 } else {
22419 {
22420 UHI opval = tmp_tmp;
22421 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22422 written |= (1 << 19);
22423 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22424 }
22425 }
22426 }
22427 }
22428 {
22429 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22430 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22431 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22432 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22433 }
22434 {
22435 DI tmp_tmp;
22436 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22437 if (GTDI (tmp_tmp, 32767)) {
22438 {
22439 {
22440 UHI opval = 32767;
22441 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22442 written |= (1 << 18);
22443 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22444 }
22445 frvbf_media_overflow (current_cpu, 2);
22446 }
22447 } else {
22448 if (LTDI (tmp_tmp, -32768)) {
22449 {
22450 {
22451 UHI opval = -32768;
22452 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22453 written |= (1 << 18);
22454 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22455 }
22456 frvbf_media_overflow (current_cpu, 2);
22457 }
22458 } else {
22459 {
22460 UHI opval = tmp_tmp;
22461 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22462 written |= (1 << 18);
22463 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22464 }
22465 }
22466 }
22467 }
22468 {
22469 DI tmp_tmp;
22470 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22471 if (GTDI (tmp_tmp, 32767)) {
22472 {
22473 {
22474 UHI opval = 32767;
22475 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22476 written |= (1 << 20);
22477 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22478 }
22479 frvbf_media_overflow (current_cpu, 1);
22480 }
22481 } else {
22482 if (LTDI (tmp_tmp, -32768)) {
22483 {
22484 {
22485 UHI opval = -32768;
22486 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22487 written |= (1 << 20);
22488 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22489 }
22490 frvbf_media_overflow (current_cpu, 1);
22491 }
22492 } else {
22493 {
22494 UHI opval = tmp_tmp;
22495 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22496 written |= (1 << 20);
22497 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22498 }
22499 }
22500 }
22501 }
22502 }
22503 }
22504 }
22505
22506 abuf->written = written;
22507 return vpc;
22508 #undef FLD
22509 }
22510
22511 /* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22512
22513 static SEM_PC
22514 SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22515 {
22516 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22518 int UNUSED written = 0;
22519 IADDR UNUSED pc = abuf->addr;
22520 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22521
22522 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22523 frvbf_media_register_not_aligned (current_cpu);
22524 } else {
22525 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22526 {
22527 UHI tmp_argihi;
22528 UHI tmp_argilo;
22529 UHI tmp_argjhi;
22530 UHI tmp_argjlo;
22531 {
22532 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22533 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22534 written |= (1 << 16);
22535 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22536 }
22537 {
22538 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22539 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22540 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22541 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22542 }
22543 {
22544 DI tmp_tmp;
22545 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22546 if (GTDI (tmp_tmp, 65535)) {
22547 {
22548 {
22549 UHI opval = 65535;
22550 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22551 written |= (1 << 17);
22552 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22553 }
22554 frvbf_media_overflow (current_cpu, 8);
22555 }
22556 } else {
22557 if (LTDI (tmp_tmp, 0)) {
22558 {
22559 {
22560 UHI opval = 0;
22561 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22562 written |= (1 << 17);
22563 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22564 }
22565 frvbf_media_overflow (current_cpu, 8);
22566 }
22567 } else {
22568 {
22569 UHI opval = tmp_tmp;
22570 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22571 written |= (1 << 17);
22572 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22573 }
22574 }
22575 }
22576 }
22577 {
22578 DI tmp_tmp;
22579 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22580 if (GTDI (tmp_tmp, 65535)) {
22581 {
22582 {
22583 UHI opval = 65535;
22584 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22585 written |= (1 << 19);
22586 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22587 }
22588 frvbf_media_overflow (current_cpu, 4);
22589 }
22590 } else {
22591 if (LTDI (tmp_tmp, 0)) {
22592 {
22593 {
22594 UHI opval = 0;
22595 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22596 written |= (1 << 19);
22597 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22598 }
22599 frvbf_media_overflow (current_cpu, 4);
22600 }
22601 } else {
22602 {
22603 UHI opval = tmp_tmp;
22604 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22605 written |= (1 << 19);
22606 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22607 }
22608 }
22609 }
22610 }
22611 {
22612 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22613 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22614 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22615 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22616 }
22617 {
22618 DI tmp_tmp;
22619 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22620 if (GTDI (tmp_tmp, 65535)) {
22621 {
22622 {
22623 UHI opval = 65535;
22624 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22625 written |= (1 << 18);
22626 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22627 }
22628 frvbf_media_overflow (current_cpu, 2);
22629 }
22630 } else {
22631 if (LTDI (tmp_tmp, 0)) {
22632 {
22633 {
22634 UHI opval = 0;
22635 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22636 written |= (1 << 18);
22637 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22638 }
22639 frvbf_media_overflow (current_cpu, 2);
22640 }
22641 } else {
22642 {
22643 UHI opval = tmp_tmp;
22644 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22645 written |= (1 << 18);
22646 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22647 }
22648 }
22649 }
22650 }
22651 {
22652 DI tmp_tmp;
22653 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22654 if (GTDI (tmp_tmp, 65535)) {
22655 {
22656 {
22657 UHI opval = 65535;
22658 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22659 written |= (1 << 20);
22660 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22661 }
22662 frvbf_media_overflow (current_cpu, 1);
22663 }
22664 } else {
22665 if (LTDI (tmp_tmp, 0)) {
22666 {
22667 {
22668 UHI opval = 0;
22669 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22670 written |= (1 << 20);
22671 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22672 }
22673 frvbf_media_overflow (current_cpu, 1);
22674 }
22675 } else {
22676 {
22677 UHI opval = tmp_tmp;
22678 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22679 written |= (1 << 20);
22680 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22681 }
22682 }
22683 }
22684 }
22685 }
22686 }
22687 }
22688
22689 abuf->written = written;
22690 return vpc;
22691 #undef FLD
22692 }
22693
22694 /* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22695
22696 static SEM_PC
22697 SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22698 {
22699 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22700 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22701 int UNUSED written = 0;
22702 IADDR UNUSED pc = abuf->addr;
22703 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22704
22705 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22706 frvbf_media_acc_not_aligned (current_cpu);
22707 } else {
22708 {
22709 DI tmp_tmp;
22710 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22711 if (GTDI (tmp_tmp, 549755813887)) {
22712 {
22713 {
22714 DI opval = 549755813887;
22715 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22716 written |= (1 << 3);
22717 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22718 }
22719 frvbf_media_overflow (current_cpu, 8);
22720 }
22721 } else {
22722 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22723 {
22724 {
22725 DI opval = INVDI (549755813887);
22726 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22727 written |= (1 << 3);
22728 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22729 }
22730 frvbf_media_overflow (current_cpu, 8);
22731 }
22732 } else {
22733 {
22734 DI opval = tmp_tmp;
22735 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22736 written |= (1 << 3);
22737 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22738 }
22739 }
22740 }
22741 }
22742 }
22743
22744 abuf->written = written;
22745 return vpc;
22746 #undef FLD
22747 }
22748
22749 /* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22750
22751 static SEM_PC
22752 SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22753 {
22754 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22756 int UNUSED written = 0;
22757 IADDR UNUSED pc = abuf->addr;
22758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22759
22760 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22761 frvbf_media_acc_not_aligned (current_cpu);
22762 } else {
22763 {
22764 DI tmp_tmp;
22765 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22766 if (GTDI (tmp_tmp, 549755813887)) {
22767 {
22768 {
22769 DI opval = 549755813887;
22770 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22771 written |= (1 << 3);
22772 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22773 }
22774 frvbf_media_overflow (current_cpu, 8);
22775 }
22776 } else {
22777 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22778 {
22779 {
22780 DI opval = INVDI (549755813887);
22781 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22782 written |= (1 << 3);
22783 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22784 }
22785 frvbf_media_overflow (current_cpu, 8);
22786 }
22787 } else {
22788 {
22789 DI opval = tmp_tmp;
22790 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22791 written |= (1 << 3);
22792 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22793 }
22794 }
22795 }
22796 }
22797 }
22798
22799 abuf->written = written;
22800 return vpc;
22801 #undef FLD
22802 }
22803
22804 /* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
22805
22806 static SEM_PC
22807 SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22808 {
22809 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22811 int UNUSED written = 0;
22812 IADDR UNUSED pc = abuf->addr;
22813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22814
22815 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
22816 frvbf_media_acc_not_aligned (current_cpu);
22817 } else {
22818 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
22819 frvbf_media_acc_not_aligned (current_cpu);
22820 } else {
22821 {
22822 {
22823 DI tmp_tmp;
22824 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22825 if (GTDI (tmp_tmp, 549755813887)) {
22826 {
22827 {
22828 DI opval = 549755813887;
22829 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22830 written |= (1 << 6);
22831 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22832 }
22833 frvbf_media_overflow (current_cpu, 8);
22834 }
22835 } else {
22836 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22837 {
22838 {
22839 DI opval = INVDI (549755813887);
22840 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22841 written |= (1 << 6);
22842 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22843 }
22844 frvbf_media_overflow (current_cpu, 8);
22845 }
22846 } else {
22847 {
22848 DI opval = tmp_tmp;
22849 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22850 written |= (1 << 6);
22851 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22852 }
22853 }
22854 }
22855 }
22856 {
22857 DI tmp_tmp;
22858 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
22859 if (GTDI (tmp_tmp, 549755813887)) {
22860 {
22861 {
22862 DI opval = 549755813887;
22863 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
22864 written |= (1 << 7);
22865 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22866 }
22867 frvbf_media_overflow (current_cpu, 4);
22868 }
22869 } else {
22870 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22871 {
22872 {
22873 DI opval = INVDI (549755813887);
22874 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
22875 written |= (1 << 7);
22876 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22877 }
22878 frvbf_media_overflow (current_cpu, 4);
22879 }
22880 } else {
22881 {
22882 DI opval = tmp_tmp;
22883 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
22884 written |= (1 << 7);
22885 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22886 }
22887 }
22888 }
22889 }
22890 }
22891 }
22892 }
22893
22894 abuf->written = written;
22895 return vpc;
22896 #undef FLD
22897 }
22898
22899 /* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
22900
22901 static SEM_PC
22902 SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22903 {
22904 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22906 int UNUSED written = 0;
22907 IADDR UNUSED pc = abuf->addr;
22908 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22909
22910 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
22911 frvbf_media_acc_not_aligned (current_cpu);
22912 } else {
22913 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
22914 frvbf_media_acc_not_aligned (current_cpu);
22915 } else {
22916 {
22917 {
22918 DI tmp_tmp;
22919 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22920 if (GTDI (tmp_tmp, 549755813887)) {
22921 {
22922 {
22923 DI opval = 549755813887;
22924 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22925 written |= (1 << 6);
22926 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22927 }
22928 frvbf_media_overflow (current_cpu, 8);
22929 }
22930 } else {
22931 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22932 {
22933 {
22934 DI opval = INVDI (549755813887);
22935 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22936 written |= (1 << 6);
22937 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22938 }
22939 frvbf_media_overflow (current_cpu, 8);
22940 }
22941 } else {
22942 {
22943 DI opval = tmp_tmp;
22944 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22945 written |= (1 << 6);
22946 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22947 }
22948 }
22949 }
22950 }
22951 {
22952 DI tmp_tmp;
22953 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
22954 if (GTDI (tmp_tmp, 549755813887)) {
22955 {
22956 {
22957 DI opval = 549755813887;
22958 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
22959 written |= (1 << 7);
22960 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22961 }
22962 frvbf_media_overflow (current_cpu, 4);
22963 }
22964 } else {
22965 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22966 {
22967 {
22968 DI opval = INVDI (549755813887);
22969 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
22970 written |= (1 << 7);
22971 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22972 }
22973 frvbf_media_overflow (current_cpu, 4);
22974 }
22975 } else {
22976 {
22977 DI opval = tmp_tmp;
22978 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
22979 written |= (1 << 7);
22980 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22981 }
22982 }
22983 }
22984 }
22985 }
22986 }
22987 }
22988
22989 abuf->written = written;
22990 return vpc;
22991 #undef FLD
22992 }
22993
22994 /* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
22995
22996 static SEM_PC
22997 SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22998 {
22999 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23000 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23001 int UNUSED written = 0;
23002 IADDR UNUSED pc = abuf->addr;
23003 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23004
23005 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23006 frvbf_media_acc_not_aligned (current_cpu);
23007 } else {
23008 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23009 frvbf_media_acc_not_aligned (current_cpu);
23010 } else {
23011 {
23012 {
23013 DI tmp_tmp;
23014 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23015 if (GTDI (tmp_tmp, 549755813887)) {
23016 {
23017 {
23018 DI opval = 549755813887;
23019 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23020 written |= (1 << 4);
23021 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23022 }
23023 frvbf_media_overflow (current_cpu, 8);
23024 }
23025 } else {
23026 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23027 {
23028 {
23029 DI opval = INVDI (549755813887);
23030 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23031 written |= (1 << 4);
23032 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23033 }
23034 frvbf_media_overflow (current_cpu, 8);
23035 }
23036 } else {
23037 {
23038 DI opval = tmp_tmp;
23039 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23040 written |= (1 << 4);
23041 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23042 }
23043 }
23044 }
23045 }
23046 {
23047 DI tmp_tmp;
23048 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23049 if (GTDI (tmp_tmp, 549755813887)) {
23050 {
23051 {
23052 DI opval = 549755813887;
23053 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23054 written |= (1 << 5);
23055 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23056 }
23057 frvbf_media_overflow (current_cpu, 4);
23058 }
23059 } else {
23060 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23061 {
23062 {
23063 DI opval = INVDI (549755813887);
23064 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23065 written |= (1 << 5);
23066 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23067 }
23068 frvbf_media_overflow (current_cpu, 4);
23069 }
23070 } else {
23071 {
23072 DI opval = tmp_tmp;
23073 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23074 written |= (1 << 5);
23075 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23076 }
23077 }
23078 }
23079 }
23080 }
23081 }
23082 }
23083
23084 abuf->written = written;
23085 return vpc;
23086 #undef FLD
23087 }
23088
23089 /* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23090
23091 static SEM_PC
23092 SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23093 {
23094 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23096 int UNUSED written = 0;
23097 IADDR UNUSED pc = abuf->addr;
23098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23099
23100 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23101 frvbf_media_acc_not_aligned (current_cpu);
23102 } else {
23103 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23104 frvbf_media_acc_not_aligned (current_cpu);
23105 } else {
23106 {
23107 {
23108 DI tmp_tmp;
23109 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23110 if (GTDI (tmp_tmp, 549755813887)) {
23111 {
23112 {
23113 DI opval = 549755813887;
23114 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23115 written |= (1 << 6);
23116 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23117 }
23118 frvbf_media_overflow (current_cpu, 8);
23119 }
23120 } else {
23121 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23122 {
23123 {
23124 DI opval = INVDI (549755813887);
23125 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23126 written |= (1 << 6);
23127 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23128 }
23129 frvbf_media_overflow (current_cpu, 8);
23130 }
23131 } else {
23132 {
23133 DI opval = tmp_tmp;
23134 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23135 written |= (1 << 6);
23136 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23137 }
23138 }
23139 }
23140 }
23141 {
23142 DI tmp_tmp;
23143 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23144 if (GTDI (tmp_tmp, 549755813887)) {
23145 {
23146 {
23147 DI opval = 549755813887;
23148 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23149 written |= (1 << 7);
23150 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23151 }
23152 frvbf_media_overflow (current_cpu, 4);
23153 }
23154 } else {
23155 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23156 {
23157 {
23158 DI opval = INVDI (549755813887);
23159 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23160 written |= (1 << 7);
23161 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23162 }
23163 frvbf_media_overflow (current_cpu, 4);
23164 }
23165 } else {
23166 {
23167 DI opval = tmp_tmp;
23168 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23169 written |= (1 << 7);
23170 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23171 }
23172 }
23173 }
23174 }
23175 {
23176 DI tmp_tmp;
23177 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23178 if (GTDI (tmp_tmp, 549755813887)) {
23179 {
23180 {
23181 DI opval = 549755813887;
23182 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23183 written |= (1 << 8);
23184 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23185 }
23186 frvbf_media_overflow (current_cpu, 2);
23187 }
23188 } else {
23189 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23190 {
23191 {
23192 DI opval = INVDI (549755813887);
23193 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23194 written |= (1 << 8);
23195 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23196 }
23197 frvbf_media_overflow (current_cpu, 2);
23198 }
23199 } else {
23200 {
23201 DI opval = tmp_tmp;
23202 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23203 written |= (1 << 8);
23204 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23205 }
23206 }
23207 }
23208 }
23209 {
23210 DI tmp_tmp;
23211 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23212 if (GTDI (tmp_tmp, 549755813887)) {
23213 {
23214 {
23215 DI opval = 549755813887;
23216 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23217 written |= (1 << 9);
23218 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23219 }
23220 frvbf_media_overflow (current_cpu, 1);
23221 }
23222 } else {
23223 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23224 {
23225 {
23226 DI opval = INVDI (549755813887);
23227 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23228 written |= (1 << 9);
23229 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23230 }
23231 frvbf_media_overflow (current_cpu, 1);
23232 }
23233 } else {
23234 {
23235 DI opval = tmp_tmp;
23236 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23237 written |= (1 << 9);
23238 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23239 }
23240 }
23241 }
23242 }
23243 }
23244 }
23245 }
23246
23247 abuf->written = written;
23248 return vpc;
23249 #undef FLD
23250 }
23251
23252 /* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23253
23254 static SEM_PC
23255 SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23256 {
23257 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23258 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23259 int UNUSED written = 0;
23260 IADDR UNUSED pc = abuf->addr;
23261 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23262
23263 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23264 frvbf_media_acc_not_aligned (current_cpu);
23265 } else {
23266 {
23267 HI tmp_argihi;
23268 HI tmp_argilo;
23269 HI tmp_argjhi;
23270 HI tmp_argjlo;
23271 {
23272 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23273 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23274 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23275 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23276 }
23277 {
23278 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23279 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23280 written |= (1 << 9);
23281 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23282 }
23283 {
23284 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23285 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23286 written |= (1 << 10);
23287 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23288 }
23289 }
23290 }
23291
23292 abuf->written = written;
23293 return vpc;
23294 #undef FLD
23295 }
23296
23297 /* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23298
23299 static SEM_PC
23300 SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23301 {
23302 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23304 int UNUSED written = 0;
23305 IADDR UNUSED pc = abuf->addr;
23306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23307
23308 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23309 frvbf_media_acc_not_aligned (current_cpu);
23310 } else {
23311 {
23312 UHI tmp_argihi;
23313 UHI tmp_argilo;
23314 UHI tmp_argjhi;
23315 UHI tmp_argjlo;
23316 {
23317 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23318 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23319 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23320 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23321 }
23322 {
23323 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23324 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23325 written |= (1 << 9);
23326 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23327 }
23328 {
23329 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23330 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23331 written |= (1 << 10);
23332 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23333 }
23334 }
23335 }
23336
23337 abuf->written = written;
23338 return vpc;
23339 #undef FLD
23340 }
23341
23342 /* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23343
23344 static SEM_PC
23345 SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23346 {
23347 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23348 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23349 int UNUSED written = 0;
23350 IADDR UNUSED pc = abuf->addr;
23351 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23352
23353 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23354 frvbf_media_acc_not_aligned (current_cpu);
23355 } else {
23356 {
23357 HI tmp_argihi;
23358 HI tmp_argilo;
23359 HI tmp_argjhi;
23360 HI tmp_argjlo;
23361 {
23362 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23363 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23364 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23365 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23366 }
23367 {
23368 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23369 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23370 written |= (1 << 9);
23371 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23372 }
23373 {
23374 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23375 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23376 written |= (1 << 10);
23377 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23378 }
23379 }
23380 }
23381
23382 abuf->written = written;
23383 return vpc;
23384 #undef FLD
23385 }
23386
23387 /* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23388
23389 static SEM_PC
23390 SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23391 {
23392 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23393 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23394 int UNUSED written = 0;
23395 IADDR UNUSED pc = abuf->addr;
23396 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23397
23398 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23399 frvbf_media_acc_not_aligned (current_cpu);
23400 } else {
23401 {
23402 UHI tmp_argihi;
23403 UHI tmp_argilo;
23404 UHI tmp_argjhi;
23405 UHI tmp_argjlo;
23406 {
23407 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23408 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23409 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23410 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23411 }
23412 {
23413 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23414 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23415 written |= (1 << 9);
23416 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23417 }
23418 {
23419 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23420 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23421 written |= (1 << 10);
23422 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23423 }
23424 }
23425 }
23426
23427 abuf->written = written;
23428 return vpc;
23429 #undef FLD
23430 }
23431
23432 /* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23433
23434 static SEM_PC
23435 SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23436 {
23437 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23439 int UNUSED written = 0;
23440 IADDR UNUSED pc = abuf->addr;
23441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23442
23443 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23444 frvbf_media_acc_not_aligned (current_cpu);
23445 } else {
23446 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23447 {
23448 HI tmp_argihi;
23449 HI tmp_argilo;
23450 HI tmp_argjhi;
23451 HI tmp_argjlo;
23452 {
23453 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23454 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23455 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23456 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23457 }
23458 {
23459 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23460 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23461 written |= (1 << 11);
23462 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23463 }
23464 {
23465 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23466 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23467 written |= (1 << 12);
23468 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23469 }
23470 }
23471 }
23472 }
23473
23474 abuf->written = written;
23475 return vpc;
23476 #undef FLD
23477 }
23478
23479 /* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23480
23481 static SEM_PC
23482 SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23483 {
23484 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23486 int UNUSED written = 0;
23487 IADDR UNUSED pc = abuf->addr;
23488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23489
23490 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23491 frvbf_media_acc_not_aligned (current_cpu);
23492 } else {
23493 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23494 {
23495 UHI tmp_argihi;
23496 UHI tmp_argilo;
23497 UHI tmp_argjhi;
23498 UHI tmp_argjlo;
23499 {
23500 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23501 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23502 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23503 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23504 }
23505 {
23506 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23507 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23508 written |= (1 << 11);
23509 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23510 }
23511 {
23512 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23513 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23514 written |= (1 << 12);
23515 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23516 }
23517 }
23518 }
23519 }
23520
23521 abuf->written = written;
23522 return vpc;
23523 #undef FLD
23524 }
23525
23526 /* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23527
23528 static SEM_PC
23529 SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23530 {
23531 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23533 int UNUSED written = 0;
23534 IADDR UNUSED pc = abuf->addr;
23535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23536
23537 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23538 frvbf_media_acc_not_aligned (current_cpu);
23539 } else {
23540 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23541 frvbf_media_register_not_aligned (current_cpu);
23542 } else {
23543 {
23544 HI tmp_argihi;
23545 HI tmp_argilo;
23546 HI tmp_argjhi;
23547 HI tmp_argjlo;
23548 {
23549 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23550 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23551 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23552 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23553 }
23554 {
23555 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23556 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23557 written |= (1 << 13);
23558 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23559 }
23560 {
23561 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23562 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23563 written |= (1 << 14);
23564 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23565 }
23566 {
23567 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23568 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23569 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23570 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23571 }
23572 {
23573 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23574 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23575 written |= (1 << 15);
23576 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23577 }
23578 {
23579 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23580 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23581 written |= (1 << 16);
23582 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23583 }
23584 }
23585 }
23586 }
23587
23588 abuf->written = written;
23589 return vpc;
23590 #undef FLD
23591 }
23592
23593 /* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23594
23595 static SEM_PC
23596 SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23597 {
23598 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23599 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23600 int UNUSED written = 0;
23601 IADDR UNUSED pc = abuf->addr;
23602 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23603
23604 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23605 frvbf_media_acc_not_aligned (current_cpu);
23606 } else {
23607 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23608 frvbf_media_register_not_aligned (current_cpu);
23609 } else {
23610 {
23611 UHI tmp_argihi;
23612 UHI tmp_argilo;
23613 UHI tmp_argjhi;
23614 UHI tmp_argjlo;
23615 {
23616 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23617 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23618 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23619 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23620 }
23621 {
23622 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23623 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23624 written |= (1 << 13);
23625 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23626 }
23627 {
23628 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23629 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23630 written |= (1 << 14);
23631 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23632 }
23633 {
23634 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23635 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23636 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23637 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23638 }
23639 {
23640 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23641 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23642 written |= (1 << 15);
23643 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23644 }
23645 {
23646 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23647 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23648 written |= (1 << 16);
23649 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23650 }
23651 }
23652 }
23653 }
23654
23655 abuf->written = written;
23656 return vpc;
23657 #undef FLD
23658 }
23659
23660 /* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23661
23662 static SEM_PC
23663 SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23664 {
23665 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23667 int UNUSED written = 0;
23668 IADDR UNUSED pc = abuf->addr;
23669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23670
23671 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23672 frvbf_media_acc_not_aligned (current_cpu);
23673 } else {
23674 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23675 frvbf_media_register_not_aligned (current_cpu);
23676 } else {
23677 {
23678 HI tmp_argihi;
23679 HI tmp_argilo;
23680 HI tmp_argjhi;
23681 HI tmp_argjlo;
23682 {
23683 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23684 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23685 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23686 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23687 }
23688 {
23689 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23690 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23691 written |= (1 << 13);
23692 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23693 }
23694 {
23695 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23696 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23697 written |= (1 << 14);
23698 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23699 }
23700 {
23701 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23702 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23703 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23704 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23705 }
23706 {
23707 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23708 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23709 written |= (1 << 15);
23710 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23711 }
23712 {
23713 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23714 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23715 written |= (1 << 16);
23716 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23717 }
23718 }
23719 }
23720 }
23721
23722 abuf->written = written;
23723 return vpc;
23724 #undef FLD
23725 }
23726
23727 /* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23728
23729 static SEM_PC
23730 SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23731 {
23732 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23733 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23734 int UNUSED written = 0;
23735 IADDR UNUSED pc = abuf->addr;
23736 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23737
23738 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23739 frvbf_media_acc_not_aligned (current_cpu);
23740 } else {
23741 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23742 frvbf_media_register_not_aligned (current_cpu);
23743 } else {
23744 {
23745 UHI tmp_argihi;
23746 UHI tmp_argilo;
23747 UHI tmp_argjhi;
23748 UHI tmp_argjlo;
23749 {
23750 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23751 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23752 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23753 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23754 }
23755 {
23756 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23757 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23758 written |= (1 << 13);
23759 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23760 }
23761 {
23762 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23763 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23764 written |= (1 << 14);
23765 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23766 }
23767 {
23768 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23769 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23770 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23771 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23772 }
23773 {
23774 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23775 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23776 written |= (1 << 15);
23777 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23778 }
23779 {
23780 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23781 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23782 written |= (1 << 16);
23783 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23784 }
23785 }
23786 }
23787 }
23788
23789 abuf->written = written;
23790 return vpc;
23791 #undef FLD
23792 }
23793
23794 /* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
23795
23796 static SEM_PC
23797 SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23798 {
23799 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23800 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23801 int UNUSED written = 0;
23802 IADDR UNUSED pc = abuf->addr;
23803 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23804
23805 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23806 frvbf_media_acc_not_aligned (current_cpu);
23807 } else {
23808 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23809 frvbf_media_register_not_aligned (current_cpu);
23810 } else {
23811 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23812 {
23813 HI tmp_argihi;
23814 HI tmp_argilo;
23815 HI tmp_argjhi;
23816 HI tmp_argjlo;
23817 {
23818 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23819 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23820 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23821 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23822 }
23823 {
23824 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23825 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23826 written |= (1 << 15);
23827 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23828 }
23829 {
23830 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23831 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23832 written |= (1 << 16);
23833 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23834 }
23835 {
23836 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23837 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23838 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23839 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23840 }
23841 {
23842 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23843 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23844 written |= (1 << 17);
23845 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23846 }
23847 {
23848 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23849 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23850 written |= (1 << 18);
23851 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23852 }
23853 }
23854 }
23855 }
23856 }
23857
23858 abuf->written = written;
23859 return vpc;
23860 #undef FLD
23861 }
23862
23863 /* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
23864
23865 static SEM_PC
23866 SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23867 {
23868 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23870 int UNUSED written = 0;
23871 IADDR UNUSED pc = abuf->addr;
23872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23873
23874 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23875 frvbf_media_acc_not_aligned (current_cpu);
23876 } else {
23877 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23878 frvbf_media_register_not_aligned (current_cpu);
23879 } else {
23880 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23881 {
23882 UHI tmp_argihi;
23883 UHI tmp_argilo;
23884 UHI tmp_argjhi;
23885 UHI tmp_argjlo;
23886 {
23887 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23888 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23889 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23890 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23891 }
23892 {
23893 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23894 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23895 written |= (1 << 15);
23896 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23897 }
23898 {
23899 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23900 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23901 written |= (1 << 16);
23902 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23903 }
23904 {
23905 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23906 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23907 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23908 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23909 }
23910 {
23911 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23912 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23913 written |= (1 << 17);
23914 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23915 }
23916 {
23917 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23918 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23919 written |= (1 << 18);
23920 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23921 }
23922 }
23923 }
23924 }
23925 }
23926
23927 abuf->written = written;
23928 return vpc;
23929 #undef FLD
23930 }
23931
23932 /* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
23933
23934 static SEM_PC
23935 SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23936 {
23937 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23938 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23939 int UNUSED written = 0;
23940 IADDR UNUSED pc = abuf->addr;
23941 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23942
23943 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23944 frvbf_media_acc_not_aligned (current_cpu);
23945 } else {
23946 {
23947 HI tmp_argihi;
23948 HI tmp_argilo;
23949 HI tmp_argjhi;
23950 HI tmp_argjlo;
23951 {
23952 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23953 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23954 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23955 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23956 }
23957 {
23958 DI tmp_tmp;
23959 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
23960 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23961 {
23962 {
23963 DI opval = MAKEDI (127, 0xffffffff);
23964 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23965 written |= (1 << 11);
23966 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23967 }
23968 frvbf_media_overflow (current_cpu, 8);
23969 }
23970 } else {
23971 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
23972 {
23973 {
23974 DI opval = MAKEDI (0xffffff80, 0);
23975 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23976 written |= (1 << 11);
23977 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23978 }
23979 frvbf_media_overflow (current_cpu, 8);
23980 }
23981 } else {
23982 {
23983 DI opval = tmp_tmp;
23984 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23985 written |= (1 << 11);
23986 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23987 }
23988 }
23989 }
23990 }
23991 {
23992 DI tmp_tmp;
23993 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
23994 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23995 {
23996 {
23997 DI opval = MAKEDI (127, 0xffffffff);
23998 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23999 written |= (1 << 12);
24000 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24001 }
24002 frvbf_media_overflow (current_cpu, 4);
24003 }
24004 } else {
24005 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24006 {
24007 {
24008 DI opval = MAKEDI (0xffffff80, 0);
24009 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24010 written |= (1 << 12);
24011 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24012 }
24013 frvbf_media_overflow (current_cpu, 4);
24014 }
24015 } else {
24016 {
24017 DI opval = tmp_tmp;
24018 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24019 written |= (1 << 12);
24020 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24021 }
24022 }
24023 }
24024 }
24025 }
24026 }
24027
24028 abuf->written = written;
24029 return vpc;
24030 #undef FLD
24031 }
24032
24033 /* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24034
24035 static SEM_PC
24036 SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24037 {
24038 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24039 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24040 int UNUSED written = 0;
24041 IADDR UNUSED pc = abuf->addr;
24042 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24043
24044 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24045 frvbf_media_acc_not_aligned (current_cpu);
24046 } else {
24047 {
24048 UHI tmp_argihi;
24049 UHI tmp_argilo;
24050 UHI tmp_argjhi;
24051 UHI tmp_argjlo;
24052 {
24053 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24054 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24055 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24056 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24057 }
24058 {
24059 DI tmp_tmp;
24060 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24061 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24062 {
24063 {
24064 UDI opval = MAKEDI (255, 0xffffffff);
24065 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24066 written |= (1 << 11);
24067 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24068 }
24069 frvbf_media_overflow (current_cpu, 8);
24070 }
24071 } else {
24072 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24073 {
24074 {
24075 UDI opval = MAKEDI (0, 0);
24076 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24077 written |= (1 << 11);
24078 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24079 }
24080 frvbf_media_overflow (current_cpu, 8);
24081 }
24082 } else {
24083 {
24084 UDI opval = tmp_tmp;
24085 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24086 written |= (1 << 11);
24087 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24088 }
24089 }
24090 }
24091 }
24092 {
24093 DI tmp_tmp;
24094 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24095 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24096 {
24097 {
24098 UDI opval = MAKEDI (255, 0xffffffff);
24099 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24100 written |= (1 << 12);
24101 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24102 }
24103 frvbf_media_overflow (current_cpu, 4);
24104 }
24105 } else {
24106 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24107 {
24108 {
24109 UDI opval = MAKEDI (0, 0);
24110 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24111 written |= (1 << 12);
24112 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24113 }
24114 frvbf_media_overflow (current_cpu, 4);
24115 }
24116 } else {
24117 {
24118 UDI opval = tmp_tmp;
24119 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24120 written |= (1 << 12);
24121 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24122 }
24123 }
24124 }
24125 }
24126 }
24127 }
24128
24129 abuf->written = written;
24130 return vpc;
24131 #undef FLD
24132 }
24133
24134 /* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24135
24136 static SEM_PC
24137 SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24138 {
24139 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24141 int UNUSED written = 0;
24142 IADDR UNUSED pc = abuf->addr;
24143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24144
24145 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24146 frvbf_media_acc_not_aligned (current_cpu);
24147 } else {
24148 {
24149 HI tmp_argihi;
24150 HI tmp_argilo;
24151 HI tmp_argjhi;
24152 HI tmp_argjlo;
24153 {
24154 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24155 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24156 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24157 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24158 }
24159 {
24160 DI tmp_tmp;
24161 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24162 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24163 {
24164 {
24165 DI opval = MAKEDI (127, 0xffffffff);
24166 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24167 written |= (1 << 11);
24168 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24169 }
24170 frvbf_media_overflow (current_cpu, 8);
24171 }
24172 } else {
24173 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24174 {
24175 {
24176 DI opval = MAKEDI (0xffffff80, 0);
24177 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24178 written |= (1 << 11);
24179 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24180 }
24181 frvbf_media_overflow (current_cpu, 8);
24182 }
24183 } else {
24184 {
24185 DI opval = tmp_tmp;
24186 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24187 written |= (1 << 11);
24188 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24189 }
24190 }
24191 }
24192 }
24193 {
24194 DI tmp_tmp;
24195 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24196 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24197 {
24198 {
24199 DI opval = MAKEDI (127, 0xffffffff);
24200 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24201 written |= (1 << 12);
24202 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24203 }
24204 frvbf_media_overflow (current_cpu, 4);
24205 }
24206 } else {
24207 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24208 {
24209 {
24210 DI opval = MAKEDI (0xffffff80, 0);
24211 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24212 written |= (1 << 12);
24213 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24214 }
24215 frvbf_media_overflow (current_cpu, 4);
24216 }
24217 } else {
24218 {
24219 DI opval = tmp_tmp;
24220 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24221 written |= (1 << 12);
24222 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24223 }
24224 }
24225 }
24226 }
24227 }
24228 }
24229
24230 abuf->written = written;
24231 return vpc;
24232 #undef FLD
24233 }
24234
24235 /* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24236
24237 static SEM_PC
24238 SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24239 {
24240 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24241 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24242 int UNUSED written = 0;
24243 IADDR UNUSED pc = abuf->addr;
24244 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24245
24246 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24247 frvbf_media_acc_not_aligned (current_cpu);
24248 } else {
24249 {
24250 UHI tmp_argihi;
24251 UHI tmp_argilo;
24252 UHI tmp_argjhi;
24253 UHI tmp_argjlo;
24254 {
24255 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24256 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24257 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24258 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24259 }
24260 {
24261 DI tmp_tmp;
24262 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24263 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24264 {
24265 {
24266 UDI opval = MAKEDI (255, 0xffffffff);
24267 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24268 written |= (1 << 11);
24269 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24270 }
24271 frvbf_media_overflow (current_cpu, 8);
24272 }
24273 } else {
24274 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24275 {
24276 {
24277 UDI opval = MAKEDI (0, 0);
24278 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24279 written |= (1 << 11);
24280 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24281 }
24282 frvbf_media_overflow (current_cpu, 8);
24283 }
24284 } else {
24285 {
24286 UDI opval = tmp_tmp;
24287 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24288 written |= (1 << 11);
24289 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24290 }
24291 }
24292 }
24293 }
24294 {
24295 DI tmp_tmp;
24296 tmp_tmp = SUBDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24297 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24298 {
24299 {
24300 UDI opval = MAKEDI (255, 0xffffffff);
24301 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24302 written |= (1 << 12);
24303 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24304 }
24305 frvbf_media_overflow (current_cpu, 4);
24306 }
24307 } else {
24308 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24309 {
24310 {
24311 UDI opval = MAKEDI (0, 0);
24312 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24313 written |= (1 << 12);
24314 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24315 }
24316 frvbf_media_overflow (current_cpu, 4);
24317 }
24318 } else {
24319 {
24320 UDI opval = tmp_tmp;
24321 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24322 written |= (1 << 12);
24323 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24324 }
24325 }
24326 }
24327 }
24328 }
24329 }
24330
24331 abuf->written = written;
24332 return vpc;
24333 #undef FLD
24334 }
24335
24336 /* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24337
24338 static SEM_PC
24339 SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24340 {
24341 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24343 int UNUSED written = 0;
24344 IADDR UNUSED pc = abuf->addr;
24345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24346
24347 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24348 frvbf_media_acc_not_aligned (current_cpu);
24349 } else {
24350 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24351 {
24352 HI tmp_argihi;
24353 HI tmp_argilo;
24354 HI tmp_argjhi;
24355 HI tmp_argjlo;
24356 {
24357 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24358 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24359 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24360 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24361 }
24362 {
24363 DI tmp_tmp;
24364 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24365 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24366 {
24367 {
24368 DI opval = MAKEDI (127, 0xffffffff);
24369 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24370 written |= (1 << 13);
24371 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24372 }
24373 frvbf_media_overflow (current_cpu, 8);
24374 }
24375 } else {
24376 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24377 {
24378 {
24379 DI opval = MAKEDI (0xffffff80, 0);
24380 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24381 written |= (1 << 13);
24382 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24383 }
24384 frvbf_media_overflow (current_cpu, 8);
24385 }
24386 } else {
24387 {
24388 DI opval = tmp_tmp;
24389 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24390 written |= (1 << 13);
24391 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24392 }
24393 }
24394 }
24395 }
24396 {
24397 DI tmp_tmp;
24398 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24399 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24400 {
24401 {
24402 DI opval = MAKEDI (127, 0xffffffff);
24403 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24404 written |= (1 << 14);
24405 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24406 }
24407 frvbf_media_overflow (current_cpu, 4);
24408 }
24409 } else {
24410 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24411 {
24412 {
24413 DI opval = MAKEDI (0xffffff80, 0);
24414 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24415 written |= (1 << 14);
24416 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24417 }
24418 frvbf_media_overflow (current_cpu, 4);
24419 }
24420 } else {
24421 {
24422 DI opval = tmp_tmp;
24423 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24424 written |= (1 << 14);
24425 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24426 }
24427 }
24428 }
24429 }
24430 }
24431 }
24432 }
24433
24434 abuf->written = written;
24435 return vpc;
24436 #undef FLD
24437 }
24438
24439 /* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24440
24441 static SEM_PC
24442 SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24443 {
24444 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24446 int UNUSED written = 0;
24447 IADDR UNUSED pc = abuf->addr;
24448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24449
24450 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24451 frvbf_media_acc_not_aligned (current_cpu);
24452 } else {
24453 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24454 {
24455 UHI tmp_argihi;
24456 UHI tmp_argilo;
24457 UHI tmp_argjhi;
24458 UHI tmp_argjlo;
24459 {
24460 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24461 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24462 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24463 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24464 }
24465 {
24466 DI tmp_tmp;
24467 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24468 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24469 {
24470 {
24471 UDI opval = MAKEDI (255, 0xffffffff);
24472 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24473 written |= (1 << 13);
24474 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24475 }
24476 frvbf_media_overflow (current_cpu, 8);
24477 }
24478 } else {
24479 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24480 {
24481 {
24482 UDI opval = MAKEDI (0, 0);
24483 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24484 written |= (1 << 13);
24485 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24486 }
24487 frvbf_media_overflow (current_cpu, 8);
24488 }
24489 } else {
24490 {
24491 UDI opval = tmp_tmp;
24492 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24493 written |= (1 << 13);
24494 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24495 }
24496 }
24497 }
24498 }
24499 {
24500 DI tmp_tmp;
24501 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24502 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24503 {
24504 {
24505 UDI opval = MAKEDI (255, 0xffffffff);
24506 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24507 written |= (1 << 14);
24508 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24509 }
24510 frvbf_media_overflow (current_cpu, 4);
24511 }
24512 } else {
24513 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24514 {
24515 {
24516 UDI opval = MAKEDI (0, 0);
24517 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24518 written |= (1 << 14);
24519 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24520 }
24521 frvbf_media_overflow (current_cpu, 4);
24522 }
24523 } else {
24524 {
24525 UDI opval = tmp_tmp;
24526 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24527 written |= (1 << 14);
24528 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24529 }
24530 }
24531 }
24532 }
24533 }
24534 }
24535 }
24536
24537 abuf->written = written;
24538 return vpc;
24539 #undef FLD
24540 }
24541
24542 /* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24543
24544 static SEM_PC
24545 SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24546 {
24547 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24549 int UNUSED written = 0;
24550 IADDR UNUSED pc = abuf->addr;
24551 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24552
24553 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24554 frvbf_media_acc_not_aligned (current_cpu);
24555 } else {
24556 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24557 frvbf_media_register_not_aligned (current_cpu);
24558 } else {
24559 {
24560 HI tmp_argihi;
24561 HI tmp_argilo;
24562 HI tmp_argjhi;
24563 HI tmp_argjlo;
24564 {
24565 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24566 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24567 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24568 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24569 }
24570 {
24571 DI tmp_tmp;
24572 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24573 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24574 {
24575 {
24576 DI opval = MAKEDI (127, 0xffffffff);
24577 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24578 written |= (1 << 17);
24579 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24580 }
24581 frvbf_media_overflow (current_cpu, 8);
24582 }
24583 } else {
24584 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24585 {
24586 {
24587 DI opval = MAKEDI (0xffffff80, 0);
24588 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24589 written |= (1 << 17);
24590 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24591 }
24592 frvbf_media_overflow (current_cpu, 8);
24593 }
24594 } else {
24595 {
24596 DI opval = tmp_tmp;
24597 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24598 written |= (1 << 17);
24599 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24600 }
24601 }
24602 }
24603 }
24604 {
24605 DI tmp_tmp;
24606 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24607 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24608 {
24609 {
24610 DI opval = MAKEDI (127, 0xffffffff);
24611 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24612 written |= (1 << 18);
24613 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24614 }
24615 frvbf_media_overflow (current_cpu, 4);
24616 }
24617 } else {
24618 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24619 {
24620 {
24621 DI opval = MAKEDI (0xffffff80, 0);
24622 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24623 written |= (1 << 18);
24624 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24625 }
24626 frvbf_media_overflow (current_cpu, 4);
24627 }
24628 } else {
24629 {
24630 DI opval = tmp_tmp;
24631 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24632 written |= (1 << 18);
24633 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24634 }
24635 }
24636 }
24637 }
24638 {
24639 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24640 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24641 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24642 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24643 }
24644 {
24645 DI tmp_tmp;
24646 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24647 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24648 {
24649 {
24650 DI opval = MAKEDI (127, 0xffffffff);
24651 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24652 written |= (1 << 19);
24653 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24654 }
24655 frvbf_media_overflow (current_cpu, 2);
24656 }
24657 } else {
24658 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24659 {
24660 {
24661 DI opval = MAKEDI (0xffffff80, 0);
24662 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24663 written |= (1 << 19);
24664 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24665 }
24666 frvbf_media_overflow (current_cpu, 2);
24667 }
24668 } else {
24669 {
24670 DI opval = tmp_tmp;
24671 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24672 written |= (1 << 19);
24673 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24674 }
24675 }
24676 }
24677 }
24678 {
24679 DI tmp_tmp;
24680 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24681 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24682 {
24683 {
24684 DI opval = MAKEDI (127, 0xffffffff);
24685 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24686 written |= (1 << 20);
24687 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24688 }
24689 frvbf_media_overflow (current_cpu, 1);
24690 }
24691 } else {
24692 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24693 {
24694 {
24695 DI opval = MAKEDI (0xffffff80, 0);
24696 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24697 written |= (1 << 20);
24698 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24699 }
24700 frvbf_media_overflow (current_cpu, 1);
24701 }
24702 } else {
24703 {
24704 DI opval = tmp_tmp;
24705 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24706 written |= (1 << 20);
24707 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24708 }
24709 }
24710 }
24711 }
24712 }
24713 }
24714 }
24715
24716 abuf->written = written;
24717 return vpc;
24718 #undef FLD
24719 }
24720
24721 /* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
24722
24723 static SEM_PC
24724 SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24725 {
24726 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
24727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24728 int UNUSED written = 0;
24729 IADDR UNUSED pc = abuf->addr;
24730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24731
24732 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
24733 frvbf_media_acc_not_aligned (current_cpu);
24734 } else {
24735 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24736 frvbf_media_register_not_aligned (current_cpu);
24737 } else {
24738 {
24739 UHI tmp_argihi;
24740 UHI tmp_argilo;
24741 UHI tmp_argjhi;
24742 UHI tmp_argjlo;
24743 {
24744 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24745 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24746 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24747 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24748 }
24749 {
24750 DI tmp_tmp;
24751 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24752 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24753 {
24754 {
24755 UDI opval = MAKEDI (255, 0xffffffff);
24756 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24757 written |= (1 << 17);
24758 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24759 }
24760 frvbf_media_overflow (current_cpu, 8);
24761 }
24762 } else {
24763 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24764 {
24765 {
24766 UDI opval = MAKEDI (0, 0);
24767 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24768 written |= (1 << 17);
24769 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24770 }
24771 frvbf_media_overflow (current_cpu, 8);
24772 }
24773 } else {
24774 {
24775 UDI opval = tmp_tmp;
24776 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24777 written |= (1 << 17);
24778 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24779 }
24780 }
24781 }
24782 }
24783 {
24784 DI tmp_tmp;
24785 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24786 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24787 {
24788 {
24789 UDI opval = MAKEDI (255, 0xffffffff);
24790 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24791 written |= (1 << 18);
24792 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24793 }
24794 frvbf_media_overflow (current_cpu, 4);
24795 }
24796 } else {
24797 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24798 {
24799 {
24800 UDI opval = MAKEDI (0, 0);
24801 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24802 written |= (1 << 18);
24803 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24804 }
24805 frvbf_media_overflow (current_cpu, 4);
24806 }
24807 } else {
24808 {
24809 UDI opval = tmp_tmp;
24810 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24811 written |= (1 << 18);
24812 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24813 }
24814 }
24815 }
24816 }
24817 {
24818 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24819 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24820 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24821 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24822 }
24823 {
24824 DI tmp_tmp;
24825 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24826 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24827 {
24828 {
24829 UDI opval = MAKEDI (255, 0xffffffff);
24830 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
24831 written |= (1 << 19);
24832 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24833 }
24834 frvbf_media_overflow (current_cpu, 2);
24835 }
24836 } else {
24837 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24838 {
24839 {
24840 UDI opval = MAKEDI (0, 0);
24841 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
24842 written |= (1 << 19);
24843 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24844 }
24845 frvbf_media_overflow (current_cpu, 2);
24846 }
24847 } else {
24848 {
24849 UDI opval = tmp_tmp;
24850 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
24851 written |= (1 << 19);
24852 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24853 }
24854 }
24855 }
24856 }
24857 {
24858 DI tmp_tmp;
24859 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24860 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24861 {
24862 {
24863 UDI opval = MAKEDI (255, 0xffffffff);
24864 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
24865 written |= (1 << 20);
24866 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24867 }
24868 frvbf_media_overflow (current_cpu, 1);
24869 }
24870 } else {
24871 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24872 {
24873 {
24874 UDI opval = MAKEDI (0, 0);
24875 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
24876 written |= (1 << 20);
24877 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24878 }
24879 frvbf_media_overflow (current_cpu, 1);
24880 }
24881 } else {
24882 {
24883 UDI opval = tmp_tmp;
24884 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
24885 written |= (1 << 20);
24886 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24887 }
24888 }
24889 }
24890 }
24891 }
24892 }
24893 }
24894
24895 abuf->written = written;
24896 return vpc;
24897 #undef FLD
24898 }
24899
24900 /* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24901
24902 static SEM_PC
24903 SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24904 {
24905 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24907 int UNUSED written = 0;
24908 IADDR UNUSED pc = abuf->addr;
24909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24910
24911 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24912 frvbf_media_acc_not_aligned (current_cpu);
24913 } else {
24914 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24915 frvbf_media_register_not_aligned (current_cpu);
24916 } else {
24917 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24918 {
24919 HI tmp_argihi;
24920 HI tmp_argilo;
24921 HI tmp_argjhi;
24922 HI tmp_argjlo;
24923 {
24924 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24925 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24926 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24927 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24928 }
24929 {
24930 DI tmp_tmp;
24931 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24932 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24933 {
24934 {
24935 DI opval = MAKEDI (127, 0xffffffff);
24936 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24937 written |= (1 << 19);
24938 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24939 }
24940 frvbf_media_overflow (current_cpu, 8);
24941 }
24942 } else {
24943 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24944 {
24945 {
24946 DI opval = MAKEDI (0xffffff80, 0);
24947 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24948 written |= (1 << 19);
24949 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24950 }
24951 frvbf_media_overflow (current_cpu, 8);
24952 }
24953 } else {
24954 {
24955 DI opval = tmp_tmp;
24956 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24957 written |= (1 << 19);
24958 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24959 }
24960 }
24961 }
24962 }
24963 {
24964 DI tmp_tmp;
24965 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24966 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24967 {
24968 {
24969 DI opval = MAKEDI (127, 0xffffffff);
24970 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24971 written |= (1 << 20);
24972 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24973 }
24974 frvbf_media_overflow (current_cpu, 4);
24975 }
24976 } else {
24977 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24978 {
24979 {
24980 DI opval = MAKEDI (0xffffff80, 0);
24981 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24982 written |= (1 << 20);
24983 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24984 }
24985 frvbf_media_overflow (current_cpu, 4);
24986 }
24987 } else {
24988 {
24989 DI opval = tmp_tmp;
24990 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24991 written |= (1 << 20);
24992 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24993 }
24994 }
24995 }
24996 }
24997 {
24998 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24999 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25000 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25001 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25002 }
25003 {
25004 DI tmp_tmp;
25005 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25006 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25007 {
25008 {
25009 DI opval = MAKEDI (127, 0xffffffff);
25010 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25011 written |= (1 << 21);
25012 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25013 }
25014 frvbf_media_overflow (current_cpu, 2);
25015 }
25016 } else {
25017 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25018 {
25019 {
25020 DI opval = MAKEDI (0xffffff80, 0);
25021 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25022 written |= (1 << 21);
25023 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25024 }
25025 frvbf_media_overflow (current_cpu, 2);
25026 }
25027 } else {
25028 {
25029 DI opval = tmp_tmp;
25030 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25031 written |= (1 << 21);
25032 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25033 }
25034 }
25035 }
25036 }
25037 {
25038 DI tmp_tmp;
25039 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25040 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25041 {
25042 {
25043 DI opval = MAKEDI (127, 0xffffffff);
25044 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25045 written |= (1 << 22);
25046 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25047 }
25048 frvbf_media_overflow (current_cpu, 1);
25049 }
25050 } else {
25051 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25052 {
25053 {
25054 DI opval = MAKEDI (0xffffff80, 0);
25055 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25056 written |= (1 << 22);
25057 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25058 }
25059 frvbf_media_overflow (current_cpu, 1);
25060 }
25061 } else {
25062 {
25063 DI opval = tmp_tmp;
25064 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25065 written |= (1 << 22);
25066 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25067 }
25068 }
25069 }
25070 }
25071 }
25072 }
25073 }
25074 }
25075
25076 abuf->written = written;
25077 return vpc;
25078 #undef FLD
25079 }
25080
25081 /* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25082
25083 static SEM_PC
25084 SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25085 {
25086 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25087 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25088 int UNUSED written = 0;
25089 IADDR UNUSED pc = abuf->addr;
25090 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25091
25092 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25093 frvbf_media_acc_not_aligned (current_cpu);
25094 } else {
25095 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25096 frvbf_media_register_not_aligned (current_cpu);
25097 } else {
25098 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25099 {
25100 UHI tmp_argihi;
25101 UHI tmp_argilo;
25102 UHI tmp_argjhi;
25103 UHI tmp_argjlo;
25104 {
25105 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25106 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25107 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25108 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25109 }
25110 {
25111 DI tmp_tmp;
25112 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25113 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25114 {
25115 {
25116 UDI opval = MAKEDI (255, 0xffffffff);
25117 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25118 written |= (1 << 19);
25119 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25120 }
25121 frvbf_media_overflow (current_cpu, 8);
25122 }
25123 } else {
25124 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25125 {
25126 {
25127 UDI opval = MAKEDI (0, 0);
25128 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25129 written |= (1 << 19);
25130 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25131 }
25132 frvbf_media_overflow (current_cpu, 8);
25133 }
25134 } else {
25135 {
25136 UDI opval = tmp_tmp;
25137 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25138 written |= (1 << 19);
25139 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25140 }
25141 }
25142 }
25143 }
25144 {
25145 DI tmp_tmp;
25146 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25147 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25148 {
25149 {
25150 UDI opval = MAKEDI (255, 0xffffffff);
25151 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25152 written |= (1 << 20);
25153 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25154 }
25155 frvbf_media_overflow (current_cpu, 4);
25156 }
25157 } else {
25158 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25159 {
25160 {
25161 UDI opval = MAKEDI (0, 0);
25162 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25163 written |= (1 << 20);
25164 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25165 }
25166 frvbf_media_overflow (current_cpu, 4);
25167 }
25168 } else {
25169 {
25170 UDI opval = tmp_tmp;
25171 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25172 written |= (1 << 20);
25173 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25174 }
25175 }
25176 }
25177 }
25178 {
25179 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25180 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25181 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25182 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25183 }
25184 {
25185 DI tmp_tmp;
25186 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25187 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25188 {
25189 {
25190 UDI opval = MAKEDI (255, 0xffffffff);
25191 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25192 written |= (1 << 21);
25193 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25194 }
25195 frvbf_media_overflow (current_cpu, 2);
25196 }
25197 } else {
25198 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25199 {
25200 {
25201 UDI opval = MAKEDI (0, 0);
25202 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25203 written |= (1 << 21);
25204 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25205 }
25206 frvbf_media_overflow (current_cpu, 2);
25207 }
25208 } else {
25209 {
25210 UDI opval = tmp_tmp;
25211 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25212 written |= (1 << 21);
25213 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25214 }
25215 }
25216 }
25217 }
25218 {
25219 DI tmp_tmp;
25220 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25221 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25222 {
25223 {
25224 UDI opval = MAKEDI (255, 0xffffffff);
25225 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25226 written |= (1 << 22);
25227 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25228 }
25229 frvbf_media_overflow (current_cpu, 1);
25230 }
25231 } else {
25232 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25233 {
25234 {
25235 UDI opval = MAKEDI (0, 0);
25236 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25237 written |= (1 << 22);
25238 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25239 }
25240 frvbf_media_overflow (current_cpu, 1);
25241 }
25242 } else {
25243 {
25244 UDI opval = tmp_tmp;
25245 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25246 written |= (1 << 22);
25247 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25248 }
25249 }
25250 }
25251 }
25252 }
25253 }
25254 }
25255 }
25256
25257 abuf->written = written;
25258 return vpc;
25259 #undef FLD
25260 }
25261
25262 /* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25263
25264 static SEM_PC
25265 SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25266 {
25267 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25269 int UNUSED written = 0;
25270 IADDR UNUSED pc = abuf->addr;
25271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25272
25273 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25274 frvbf_media_acc_not_aligned (current_cpu);
25275 } else {
25276 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25277 frvbf_media_register_not_aligned (current_cpu);
25278 } else {
25279 {
25280 HI tmp_argihi;
25281 HI tmp_argilo;
25282 HI tmp_argjhi;
25283 HI tmp_argjlo;
25284 {
25285 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25286 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25287 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25288 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25289 }
25290 {
25291 DI tmp_tmp;
25292 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25293 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25294 {
25295 {
25296 DI opval = MAKEDI (127, 0xffffffff);
25297 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25298 written |= (1 << 19);
25299 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25300 }
25301 frvbf_media_overflow (current_cpu, 2);
25302 }
25303 } else {
25304 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25305 {
25306 {
25307 DI opval = MAKEDI (0xffffff80, 0);
25308 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25309 written |= (1 << 19);
25310 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25311 }
25312 frvbf_media_overflow (current_cpu, 2);
25313 }
25314 } else {
25315 {
25316 DI opval = tmp_tmp;
25317 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25318 written |= (1 << 19);
25319 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25320 }
25321 }
25322 }
25323 }
25324 {
25325 DI tmp_tmp;
25326 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25327 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25328 {
25329 {
25330 DI opval = MAKEDI (127, 0xffffffff);
25331 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25332 written |= (1 << 20);
25333 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25334 }
25335 frvbf_media_overflow (current_cpu, 1);
25336 }
25337 } else {
25338 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25339 {
25340 {
25341 DI opval = MAKEDI (0xffffff80, 0);
25342 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25343 written |= (1 << 20);
25344 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25345 }
25346 frvbf_media_overflow (current_cpu, 1);
25347 }
25348 } else {
25349 {
25350 DI opval = tmp_tmp;
25351 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25352 written |= (1 << 20);
25353 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25354 }
25355 }
25356 }
25357 }
25358 {
25359 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25360 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25361 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25362 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25363 }
25364 {
25365 DI tmp_tmp;
25366 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25367 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25368 {
25369 {
25370 DI opval = MAKEDI (127, 0xffffffff);
25371 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25372 written |= (1 << 17);
25373 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25374 }
25375 frvbf_media_overflow (current_cpu, 8);
25376 }
25377 } else {
25378 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25379 {
25380 {
25381 DI opval = MAKEDI (0xffffff80, 0);
25382 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25383 written |= (1 << 17);
25384 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25385 }
25386 frvbf_media_overflow (current_cpu, 8);
25387 }
25388 } else {
25389 {
25390 DI opval = tmp_tmp;
25391 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25392 written |= (1 << 17);
25393 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25394 }
25395 }
25396 }
25397 }
25398 {
25399 DI tmp_tmp;
25400 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25401 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25402 {
25403 {
25404 DI opval = MAKEDI (127, 0xffffffff);
25405 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25406 written |= (1 << 18);
25407 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25408 }
25409 frvbf_media_overflow (current_cpu, 4);
25410 }
25411 } else {
25412 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25413 {
25414 {
25415 DI opval = MAKEDI (0xffffff80, 0);
25416 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25417 written |= (1 << 18);
25418 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25419 }
25420 frvbf_media_overflow (current_cpu, 4);
25421 }
25422 } else {
25423 {
25424 DI opval = tmp_tmp;
25425 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25426 written |= (1 << 18);
25427 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25428 }
25429 }
25430 }
25431 }
25432 }
25433 }
25434 }
25435
25436 abuf->written = written;
25437 return vpc;
25438 #undef FLD
25439 }
25440
25441 /* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25442
25443 static SEM_PC
25444 SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25445 {
25446 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25448 int UNUSED written = 0;
25449 IADDR UNUSED pc = abuf->addr;
25450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25451
25452 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25453 frvbf_media_acc_not_aligned (current_cpu);
25454 } else {
25455 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25456 frvbf_media_register_not_aligned (current_cpu);
25457 } else {
25458 {
25459 HI tmp_argihi;
25460 HI tmp_argilo;
25461 HI tmp_argjhi;
25462 HI tmp_argjlo;
25463 {
25464 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25465 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25466 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25467 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25468 }
25469 {
25470 DI tmp_tmp;
25471 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25472 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25473 {
25474 {
25475 DI opval = MAKEDI (127, 0xffffffff);
25476 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25477 written |= (1 << 19);
25478 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25479 }
25480 frvbf_media_overflow (current_cpu, 2);
25481 }
25482 } else {
25483 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25484 {
25485 {
25486 DI opval = MAKEDI (0xffffff80, 0);
25487 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25488 written |= (1 << 19);
25489 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25490 }
25491 frvbf_media_overflow (current_cpu, 2);
25492 }
25493 } else {
25494 {
25495 DI opval = tmp_tmp;
25496 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25497 written |= (1 << 19);
25498 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25499 }
25500 }
25501 }
25502 }
25503 {
25504 DI tmp_tmp;
25505 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25506 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25507 {
25508 {
25509 DI opval = MAKEDI (127, 0xffffffff);
25510 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25511 written |= (1 << 20);
25512 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25513 }
25514 frvbf_media_overflow (current_cpu, 1);
25515 }
25516 } else {
25517 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25518 {
25519 {
25520 DI opval = MAKEDI (0xffffff80, 0);
25521 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25522 written |= (1 << 20);
25523 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25524 }
25525 frvbf_media_overflow (current_cpu, 1);
25526 }
25527 } else {
25528 {
25529 DI opval = tmp_tmp;
25530 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25531 written |= (1 << 20);
25532 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25533 }
25534 }
25535 }
25536 }
25537 {
25538 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25539 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25540 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25541 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25542 }
25543 {
25544 DI tmp_tmp;
25545 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25546 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25547 {
25548 {
25549 DI opval = MAKEDI (127, 0xffffffff);
25550 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25551 written |= (1 << 17);
25552 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25553 }
25554 frvbf_media_overflow (current_cpu, 8);
25555 }
25556 } else {
25557 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25558 {
25559 {
25560 DI opval = MAKEDI (0xffffff80, 0);
25561 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25562 written |= (1 << 17);
25563 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25564 }
25565 frvbf_media_overflow (current_cpu, 8);
25566 }
25567 } else {
25568 {
25569 DI opval = tmp_tmp;
25570 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25571 written |= (1 << 17);
25572 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25573 }
25574 }
25575 }
25576 }
25577 {
25578 DI tmp_tmp;
25579 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25580 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25581 {
25582 {
25583 DI opval = MAKEDI (127, 0xffffffff);
25584 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25585 written |= (1 << 18);
25586 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25587 }
25588 frvbf_media_overflow (current_cpu, 4);
25589 }
25590 } else {
25591 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25592 {
25593 {
25594 DI opval = MAKEDI (0xffffff80, 0);
25595 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25596 written |= (1 << 18);
25597 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25598 }
25599 frvbf_media_overflow (current_cpu, 4);
25600 }
25601 } else {
25602 {
25603 DI opval = tmp_tmp;
25604 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25605 written |= (1 << 18);
25606 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25607 }
25608 }
25609 }
25610 }
25611 }
25612 }
25613 }
25614
25615 abuf->written = written;
25616 return vpc;
25617 #undef FLD
25618 }
25619
25620 /* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25621
25622 static SEM_PC
25623 SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25624 {
25625 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25627 int UNUSED written = 0;
25628 IADDR UNUSED pc = abuf->addr;
25629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25630
25631 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25632 frvbf_media_acc_not_aligned (current_cpu);
25633 } else {
25634 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25635 frvbf_media_register_not_aligned (current_cpu);
25636 } else {
25637 {
25638 HI tmp_argihi;
25639 HI tmp_argilo;
25640 HI tmp_argjhi;
25641 HI tmp_argjlo;
25642 {
25643 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25644 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25645 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25646 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25647 }
25648 {
25649 DI tmp_tmp;
25650 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25651 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25652 {
25653 {
25654 DI opval = MAKEDI (127, 0xffffffff);
25655 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25656 written |= (1 << 17);
25657 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25658 }
25659 frvbf_media_overflow (current_cpu, 8);
25660 }
25661 } else {
25662 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25663 {
25664 {
25665 DI opval = MAKEDI (0xffffff80, 0);
25666 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25667 written |= (1 << 17);
25668 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25669 }
25670 frvbf_media_overflow (current_cpu, 8);
25671 }
25672 } else {
25673 {
25674 DI opval = tmp_tmp;
25675 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25676 written |= (1 << 17);
25677 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25678 }
25679 }
25680 }
25681 }
25682 {
25683 DI tmp_tmp;
25684 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25685 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25686 {
25687 {
25688 DI opval = MAKEDI (127, 0xffffffff);
25689 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25690 written |= (1 << 18);
25691 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25692 }
25693 frvbf_media_overflow (current_cpu, 4);
25694 }
25695 } else {
25696 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25697 {
25698 {
25699 DI opval = MAKEDI (0xffffff80, 0);
25700 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25701 written |= (1 << 18);
25702 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25703 }
25704 frvbf_media_overflow (current_cpu, 4);
25705 }
25706 } else {
25707 {
25708 DI opval = tmp_tmp;
25709 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25710 written |= (1 << 18);
25711 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25712 }
25713 }
25714 }
25715 }
25716 {
25717 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25718 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25719 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25720 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25721 }
25722 {
25723 DI tmp_tmp;
25724 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25725 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25726 {
25727 {
25728 DI opval = MAKEDI (127, 0xffffffff);
25729 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25730 written |= (1 << 19);
25731 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25732 }
25733 frvbf_media_overflow (current_cpu, 2);
25734 }
25735 } else {
25736 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25737 {
25738 {
25739 DI opval = MAKEDI (0xffffff80, 0);
25740 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25741 written |= (1 << 19);
25742 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25743 }
25744 frvbf_media_overflow (current_cpu, 2);
25745 }
25746 } else {
25747 {
25748 DI opval = tmp_tmp;
25749 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25750 written |= (1 << 19);
25751 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25752 }
25753 }
25754 }
25755 }
25756 {
25757 DI tmp_tmp;
25758 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25759 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25760 {
25761 {
25762 DI opval = MAKEDI (127, 0xffffffff);
25763 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25764 written |= (1 << 20);
25765 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25766 }
25767 frvbf_media_overflow (current_cpu, 1);
25768 }
25769 } else {
25770 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25771 {
25772 {
25773 DI opval = MAKEDI (0xffffff80, 0);
25774 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25775 written |= (1 << 20);
25776 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25777 }
25778 frvbf_media_overflow (current_cpu, 1);
25779 }
25780 } else {
25781 {
25782 DI opval = tmp_tmp;
25783 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25784 written |= (1 << 20);
25785 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25786 }
25787 }
25788 }
25789 }
25790 }
25791 }
25792 }
25793
25794 abuf->written = written;
25795 return vpc;
25796 #undef FLD
25797 }
25798
25799 /* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
25800
25801 static SEM_PC
25802 SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25803 {
25804 #define FLD(f) abuf->fields.sfmt_cmmachs.f
25805 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25806 int UNUSED written = 0;
25807 IADDR UNUSED pc = abuf->addr;
25808 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25809
25810 {
25811 HI tmp_argihi;
25812 HI tmp_argilo;
25813 HI tmp_argjhi;
25814 HI tmp_argjlo;
25815 {
25816 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25817 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25818 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25819 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25820 }
25821 {
25822 DI tmp_tmp1;
25823 DI tmp_tmp2;
25824 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
25825 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
25826 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
25827 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
25828 {
25829 {
25830 DI opval = MAKEDI (127, 0xffffffff);
25831 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25832 written |= (1 << 8);
25833 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25834 }
25835 frvbf_media_overflow (current_cpu, 8);
25836 }
25837 } else {
25838 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
25839 {
25840 {
25841 DI opval = MAKEDI (0xffffff80, 0);
25842 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25843 written |= (1 << 8);
25844 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25845 }
25846 frvbf_media_overflow (current_cpu, 8);
25847 }
25848 } else {
25849 {
25850 DI opval = tmp_tmp1;
25851 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25852 written |= (1 << 8);
25853 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25854 }
25855 }
25856 }
25857 }
25858 }
25859
25860 abuf->written = written;
25861 return vpc;
25862 #undef FLD
25863 }
25864
25865 /* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
25866
25867 static SEM_PC
25868 SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25869 {
25870 #define FLD(f) abuf->fields.sfmt_cmmachs.f
25871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25872 int UNUSED written = 0;
25873 IADDR UNUSED pc = abuf->addr;
25874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25875
25876 {
25877 UHI tmp_argihi;
25878 UHI tmp_argilo;
25879 UHI tmp_argjhi;
25880 UHI tmp_argjlo;
25881 {
25882 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25883 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25884 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25885 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25886 }
25887 {
25888 DI tmp_tmp1;
25889 DI tmp_tmp2;
25890 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
25891 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
25892 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
25893 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
25894 {
25895 {
25896 DI opval = MAKEDI (255, 0xffffffff);
25897 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25898 written |= (1 << 8);
25899 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25900 }
25901 frvbf_media_overflow (current_cpu, 8);
25902 }
25903 } else {
25904 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
25905 {
25906 {
25907 DI opval = MAKEDI (0, 0);
25908 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25909 written |= (1 << 8);
25910 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25911 }
25912 frvbf_media_overflow (current_cpu, 8);
25913 }
25914 } else {
25915 {
25916 DI opval = tmp_tmp1;
25917 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25918 written |= (1 << 8);
25919 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25920 }
25921 }
25922 }
25923 }
25924 }
25925
25926 abuf->written = written;
25927 return vpc;
25928 #undef FLD
25929 }
25930
25931 /* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
25932
25933 static SEM_PC
25934 SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25935 {
25936 #define FLD(f) abuf->fields.sfmt_cmmachs.f
25937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25938 int UNUSED written = 0;
25939 IADDR UNUSED pc = abuf->addr;
25940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25941
25942 {
25943 HI tmp_argihi;
25944 HI tmp_argilo;
25945 HI tmp_argjhi;
25946 HI tmp_argjlo;
25947 {
25948 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25949 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25950 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25951 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25952 }
25953 {
25954 DI tmp_tmp1;
25955 DI tmp_tmp2;
25956 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
25957 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
25958 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
25959 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
25960 {
25961 {
25962 DI opval = MAKEDI (127, 0xffffffff);
25963 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25964 written |= (1 << 8);
25965 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25966 }
25967 frvbf_media_overflow (current_cpu, 8);
25968 }
25969 } else {
25970 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
25971 {
25972 {
25973 DI opval = MAKEDI (0xffffff80, 0);
25974 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25975 written |= (1 << 8);
25976 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25977 }
25978 frvbf_media_overflow (current_cpu, 8);
25979 }
25980 } else {
25981 {
25982 DI opval = tmp_tmp1;
25983 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25984 written |= (1 << 8);
25985 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25986 }
25987 }
25988 }
25989 }
25990 }
25991
25992 abuf->written = written;
25993 return vpc;
25994 #undef FLD
25995 }
25996
25997 /* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
25998
25999 static SEM_PC
26000 SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26001 {
26002 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26004 int UNUSED written = 0;
26005 IADDR UNUSED pc = abuf->addr;
26006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26007
26008 {
26009 UHI tmp_argihi;
26010 UHI tmp_argilo;
26011 UHI tmp_argjhi;
26012 UHI tmp_argjlo;
26013 {
26014 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26015 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26016 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26017 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26018 }
26019 {
26020 DI tmp_tmp1;
26021 DI tmp_tmp2;
26022 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26023 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26024 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26025 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26026 {
26027 {
26028 DI opval = MAKEDI (255, 0xffffffff);
26029 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26030 written |= (1 << 8);
26031 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26032 }
26033 frvbf_media_overflow (current_cpu, 8);
26034 }
26035 } else {
26036 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26037 {
26038 {
26039 DI opval = MAKEDI (0, 0);
26040 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26041 written |= (1 << 8);
26042 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26043 }
26044 frvbf_media_overflow (current_cpu, 8);
26045 }
26046 } else {
26047 {
26048 DI opval = tmp_tmp1;
26049 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26050 written |= (1 << 8);
26051 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26052 }
26053 }
26054 }
26055 }
26056 }
26057
26058 abuf->written = written;
26059 return vpc;
26060 #undef FLD
26061 }
26062
26063 /* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26064
26065 static SEM_PC
26066 SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26067 {
26068 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26069 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26070 int UNUSED written = 0;
26071 IADDR UNUSED pc = abuf->addr;
26072 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26073
26074 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26075 {
26076 HI tmp_argihi;
26077 HI tmp_argilo;
26078 HI tmp_argjhi;
26079 HI tmp_argjlo;
26080 {
26081 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26082 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26083 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26084 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26085 }
26086 {
26087 DI tmp_tmp1;
26088 DI tmp_tmp2;
26089 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26090 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26091 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26092 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26093 {
26094 {
26095 DI opval = MAKEDI (127, 0xffffffff);
26096 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26097 written |= (1 << 10);
26098 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26099 }
26100 frvbf_media_overflow (current_cpu, 8);
26101 }
26102 } else {
26103 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26104 {
26105 {
26106 DI opval = MAKEDI (0xffffff80, 0);
26107 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26108 written |= (1 << 10);
26109 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26110 }
26111 frvbf_media_overflow (current_cpu, 8);
26112 }
26113 } else {
26114 {
26115 DI opval = tmp_tmp1;
26116 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26117 written |= (1 << 10);
26118 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26119 }
26120 }
26121 }
26122 }
26123 }
26124 }
26125
26126 abuf->written = written;
26127 return vpc;
26128 #undef FLD
26129 }
26130
26131 /* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26132
26133 static SEM_PC
26134 SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26135 {
26136 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26138 int UNUSED written = 0;
26139 IADDR UNUSED pc = abuf->addr;
26140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26141
26142 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26143 {
26144 UHI tmp_argihi;
26145 UHI tmp_argilo;
26146 UHI tmp_argjhi;
26147 UHI tmp_argjlo;
26148 {
26149 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26150 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26151 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26152 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26153 }
26154 {
26155 DI tmp_tmp1;
26156 DI tmp_tmp2;
26157 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26158 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26159 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26160 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26161 {
26162 {
26163 DI opval = MAKEDI (255, 0xffffffff);
26164 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26165 written |= (1 << 10);
26166 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26167 }
26168 frvbf_media_overflow (current_cpu, 8);
26169 }
26170 } else {
26171 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26172 {
26173 {
26174 DI opval = MAKEDI (0, 0);
26175 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26176 written |= (1 << 10);
26177 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26178 }
26179 frvbf_media_overflow (current_cpu, 8);
26180 }
26181 } else {
26182 {
26183 DI opval = tmp_tmp1;
26184 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26185 written |= (1 << 10);
26186 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26187 }
26188 }
26189 }
26190 }
26191 }
26192 }
26193
26194 abuf->written = written;
26195 return vpc;
26196 #undef FLD
26197 }
26198
26199 /* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26200
26201 static SEM_PC
26202 SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26203 {
26204 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26205 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26206 int UNUSED written = 0;
26207 IADDR UNUSED pc = abuf->addr;
26208 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26209
26210 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26211 {
26212 HI tmp_argihi;
26213 HI tmp_argilo;
26214 HI tmp_argjhi;
26215 HI tmp_argjlo;
26216 {
26217 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26218 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26219 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26220 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26221 }
26222 {
26223 DI tmp_tmp1;
26224 DI tmp_tmp2;
26225 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26226 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26227 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26228 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26229 {
26230 {
26231 DI opval = MAKEDI (127, 0xffffffff);
26232 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26233 written |= (1 << 10);
26234 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26235 }
26236 frvbf_media_overflow (current_cpu, 8);
26237 }
26238 } else {
26239 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26240 {
26241 {
26242 DI opval = MAKEDI (0xffffff80, 0);
26243 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26244 written |= (1 << 10);
26245 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26246 }
26247 frvbf_media_overflow (current_cpu, 8);
26248 }
26249 } else {
26250 {
26251 DI opval = tmp_tmp1;
26252 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26253 written |= (1 << 10);
26254 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26255 }
26256 }
26257 }
26258 }
26259 }
26260 }
26261
26262 abuf->written = written;
26263 return vpc;
26264 #undef FLD
26265 }
26266
26267 /* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26268
26269 static SEM_PC
26270 SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26271 {
26272 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26274 int UNUSED written = 0;
26275 IADDR UNUSED pc = abuf->addr;
26276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26277
26278 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26279 {
26280 UHI tmp_argihi;
26281 UHI tmp_argilo;
26282 UHI tmp_argjhi;
26283 UHI tmp_argjlo;
26284 {
26285 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26286 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26287 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26288 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26289 }
26290 {
26291 DI tmp_tmp1;
26292 DI tmp_tmp2;
26293 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26294 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26295 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26296 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26297 {
26298 {
26299 DI opval = MAKEDI (255, 0xffffffff);
26300 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26301 written |= (1 << 10);
26302 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26303 }
26304 frvbf_media_overflow (current_cpu, 8);
26305 }
26306 } else {
26307 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26308 {
26309 {
26310 DI opval = MAKEDI (0, 0);
26311 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26312 written |= (1 << 10);
26313 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26314 }
26315 frvbf_media_overflow (current_cpu, 8);
26316 }
26317 } else {
26318 {
26319 DI opval = tmp_tmp1;
26320 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26321 written |= (1 << 10);
26322 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26323 }
26324 }
26325 }
26326 }
26327 }
26328 }
26329
26330 abuf->written = written;
26331 return vpc;
26332 #undef FLD
26333 }
26334
26335 /* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26336
26337 static SEM_PC
26338 SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26339 {
26340 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26342 int UNUSED written = 0;
26343 IADDR UNUSED pc = abuf->addr;
26344 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26345
26346 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26347 frvbf_media_acc_not_aligned (current_cpu);
26348 } else {
26349 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26350 frvbf_media_register_not_aligned (current_cpu);
26351 } else {
26352 {
26353 HI tmp_argihi;
26354 HI tmp_argilo;
26355 HI tmp_argjhi;
26356 HI tmp_argjlo;
26357 {
26358 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26359 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26360 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26361 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26362 }
26363 {
26364 DI tmp_tmp1;
26365 DI tmp_tmp2;
26366 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26367 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26368 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26369 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26370 {
26371 {
26372 DI opval = MAKEDI (127, 0xffffffff);
26373 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26374 written |= (1 << 13);
26375 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26376 }
26377 frvbf_media_overflow (current_cpu, 8);
26378 }
26379 } else {
26380 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26381 {
26382 {
26383 DI opval = MAKEDI (0xffffff80, 0);
26384 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26385 written |= (1 << 13);
26386 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26387 }
26388 frvbf_media_overflow (current_cpu, 8);
26389 }
26390 } else {
26391 {
26392 DI opval = tmp_tmp1;
26393 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26394 written |= (1 << 13);
26395 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26396 }
26397 }
26398 }
26399 }
26400 {
26401 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26402 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26403 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26404 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26405 }
26406 {
26407 DI tmp_tmp1;
26408 DI tmp_tmp2;
26409 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26410 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26411 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26412 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26413 {
26414 {
26415 DI opval = MAKEDI (127, 0xffffffff);
26416 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26417 written |= (1 << 14);
26418 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26419 }
26420 frvbf_media_overflow (current_cpu, 4);
26421 }
26422 } else {
26423 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26424 {
26425 {
26426 DI opval = MAKEDI (0xffffff80, 0);
26427 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26428 written |= (1 << 14);
26429 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26430 }
26431 frvbf_media_overflow (current_cpu, 4);
26432 }
26433 } else {
26434 {
26435 DI opval = tmp_tmp1;
26436 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26437 written |= (1 << 14);
26438 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26439 }
26440 }
26441 }
26442 }
26443 }
26444 }
26445 }
26446
26447 abuf->written = written;
26448 return vpc;
26449 #undef FLD
26450 }
26451
26452 /* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26453
26454 static SEM_PC
26455 SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26456 {
26457 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26459 int UNUSED written = 0;
26460 IADDR UNUSED pc = abuf->addr;
26461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26462
26463 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26464 frvbf_media_acc_not_aligned (current_cpu);
26465 } else {
26466 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26467 frvbf_media_register_not_aligned (current_cpu);
26468 } else {
26469 {
26470 UHI tmp_argihi;
26471 UHI tmp_argilo;
26472 UHI tmp_argjhi;
26473 UHI tmp_argjlo;
26474 {
26475 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26476 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26477 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26478 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26479 }
26480 {
26481 DI tmp_tmp1;
26482 DI tmp_tmp2;
26483 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26484 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26485 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26486 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26487 {
26488 {
26489 DI opval = MAKEDI (255, 0xffffffff);
26490 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26491 written |= (1 << 13);
26492 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26493 }
26494 frvbf_media_overflow (current_cpu, 8);
26495 }
26496 } else {
26497 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26498 {
26499 {
26500 DI opval = MAKEDI (0, 0);
26501 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26502 written |= (1 << 13);
26503 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26504 }
26505 frvbf_media_overflow (current_cpu, 8);
26506 }
26507 } else {
26508 {
26509 DI opval = tmp_tmp1;
26510 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26511 written |= (1 << 13);
26512 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26513 }
26514 }
26515 }
26516 }
26517 {
26518 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26519 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26520 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26521 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26522 }
26523 {
26524 DI tmp_tmp1;
26525 DI tmp_tmp2;
26526 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26527 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26528 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26529 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26530 {
26531 {
26532 DI opval = MAKEDI (255, 0xffffffff);
26533 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26534 written |= (1 << 14);
26535 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26536 }
26537 frvbf_media_overflow (current_cpu, 4);
26538 }
26539 } else {
26540 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26541 {
26542 {
26543 DI opval = MAKEDI (0, 0);
26544 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26545 written |= (1 << 14);
26546 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26547 }
26548 frvbf_media_overflow (current_cpu, 4);
26549 }
26550 } else {
26551 {
26552 DI opval = tmp_tmp1;
26553 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26554 written |= (1 << 14);
26555 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26556 }
26557 }
26558 }
26559 }
26560 }
26561 }
26562 }
26563
26564 abuf->written = written;
26565 return vpc;
26566 #undef FLD
26567 }
26568
26569 /* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26570
26571 static SEM_PC
26572 SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26573 {
26574 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26576 int UNUSED written = 0;
26577 IADDR UNUSED pc = abuf->addr;
26578 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26579
26580 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26581 frvbf_media_acc_not_aligned (current_cpu);
26582 } else {
26583 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26584 frvbf_media_register_not_aligned (current_cpu);
26585 } else {
26586 {
26587 HI tmp_argihi;
26588 HI tmp_argilo;
26589 HI tmp_argjhi;
26590 HI tmp_argjlo;
26591 {
26592 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26593 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26594 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26595 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26596 }
26597 {
26598 DI tmp_tmp1;
26599 DI tmp_tmp2;
26600 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26601 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26602 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26603 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26604 {
26605 {
26606 DI opval = MAKEDI (127, 0xffffffff);
26607 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26608 written |= (1 << 13);
26609 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26610 }
26611 frvbf_media_overflow (current_cpu, 8);
26612 }
26613 } else {
26614 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26615 {
26616 {
26617 DI opval = MAKEDI (0xffffff80, 0);
26618 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26619 written |= (1 << 13);
26620 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26621 }
26622 frvbf_media_overflow (current_cpu, 8);
26623 }
26624 } else {
26625 {
26626 DI opval = tmp_tmp1;
26627 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26628 written |= (1 << 13);
26629 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26630 }
26631 }
26632 }
26633 }
26634 {
26635 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26636 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26637 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26638 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26639 }
26640 {
26641 DI tmp_tmp1;
26642 DI tmp_tmp2;
26643 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26644 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26645 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26646 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26647 {
26648 {
26649 DI opval = MAKEDI (127, 0xffffffff);
26650 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26651 written |= (1 << 14);
26652 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26653 }
26654 frvbf_media_overflow (current_cpu, 4);
26655 }
26656 } else {
26657 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26658 {
26659 {
26660 DI opval = MAKEDI (0xffffff80, 0);
26661 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26662 written |= (1 << 14);
26663 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26664 }
26665 frvbf_media_overflow (current_cpu, 4);
26666 }
26667 } else {
26668 {
26669 DI opval = tmp_tmp1;
26670 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26671 written |= (1 << 14);
26672 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26673 }
26674 }
26675 }
26676 }
26677 }
26678 }
26679 }
26680
26681 abuf->written = written;
26682 return vpc;
26683 #undef FLD
26684 }
26685
26686 /* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
26687
26688 static SEM_PC
26689 SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26690 {
26691 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26692 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26693 int UNUSED written = 0;
26694 IADDR UNUSED pc = abuf->addr;
26695 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26696
26697 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26698 frvbf_media_acc_not_aligned (current_cpu);
26699 } else {
26700 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26701 frvbf_media_register_not_aligned (current_cpu);
26702 } else {
26703 {
26704 UHI tmp_argihi;
26705 UHI tmp_argilo;
26706 UHI tmp_argjhi;
26707 UHI tmp_argjlo;
26708 {
26709 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26710 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26711 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26712 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26713 }
26714 {
26715 DI tmp_tmp1;
26716 DI tmp_tmp2;
26717 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26718 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26719 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26720 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26721 {
26722 {
26723 DI opval = MAKEDI (255, 0xffffffff);
26724 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26725 written |= (1 << 13);
26726 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26727 }
26728 frvbf_media_overflow (current_cpu, 8);
26729 }
26730 } else {
26731 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26732 {
26733 {
26734 DI opval = MAKEDI (0, 0);
26735 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26736 written |= (1 << 13);
26737 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26738 }
26739 frvbf_media_overflow (current_cpu, 8);
26740 }
26741 } else {
26742 {
26743 DI opval = tmp_tmp1;
26744 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26745 written |= (1 << 13);
26746 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26747 }
26748 }
26749 }
26750 }
26751 {
26752 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26753 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26754 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26755 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26756 }
26757 {
26758 DI tmp_tmp1;
26759 DI tmp_tmp2;
26760 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26761 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26762 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26763 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26764 {
26765 {
26766 DI opval = MAKEDI (255, 0xffffffff);
26767 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26768 written |= (1 << 14);
26769 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26770 }
26771 frvbf_media_overflow (current_cpu, 4);
26772 }
26773 } else {
26774 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26775 {
26776 {
26777 DI opval = MAKEDI (0, 0);
26778 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26779 written |= (1 << 14);
26780 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26781 }
26782 frvbf_media_overflow (current_cpu, 4);
26783 }
26784 } else {
26785 {
26786 DI opval = tmp_tmp1;
26787 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26788 written |= (1 << 14);
26789 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26790 }
26791 }
26792 }
26793 }
26794 }
26795 }
26796 }
26797
26798 abuf->written = written;
26799 return vpc;
26800 #undef FLD
26801 }
26802
26803 /* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
26804
26805 static SEM_PC
26806 SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26807 {
26808 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
26809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26810 int UNUSED written = 0;
26811 IADDR UNUSED pc = abuf->addr;
26812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26813
26814 {
26815 UHI tmp_tmp;
26816 if (ANDSI (FLD (f_u6), 1)) {
26817 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
26818 } else {
26819 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
26820 }
26821 {
26822 UHI opval = tmp_tmp;
26823 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
26824 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
26825 }
26826 {
26827 UHI opval = tmp_tmp;
26828 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
26829 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
26830 }
26831 }
26832
26833 return vpc;
26834 #undef FLD
26835 }
26836
26837 /* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
26838
26839 static SEM_PC
26840 SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26841 {
26842 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
26843 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26844 int UNUSED written = 0;
26845 IADDR UNUSED pc = abuf->addr;
26846 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26847
26848 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26849 {
26850 UHI tmp_tmp;
26851 if (ANDSI (FLD (f_u6), 1)) {
26852 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
26853 } else {
26854 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
26855 }
26856 {
26857 UHI opval = tmp_tmp;
26858 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
26859 written |= (1 << 7);
26860 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
26861 }
26862 {
26863 UHI opval = tmp_tmp;
26864 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
26865 written |= (1 << 8);
26866 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
26867 }
26868 }
26869 }
26870
26871 abuf->written = written;
26872 return vpc;
26873 #undef FLD
26874 }
26875
26876 /* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
26877
26878 static SEM_PC
26879 SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26880 {
26881 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
26882 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26883 int UNUSED written = 0;
26884 IADDR UNUSED pc = abuf->addr;
26885 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26886
26887 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
26888 frvbf_media_register_not_aligned (current_cpu);
26889 } else {
26890 {
26891 UHI tmp_tmp;
26892 {
26893 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
26894 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
26895 written |= (1 << 6);
26896 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
26897 }
26898 if (ANDSI (FLD (f_u6), 1)) {
26899 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
26900 } else {
26901 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
26902 }
26903 {
26904 UHI opval = tmp_tmp;
26905 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
26906 written |= (1 << 7);
26907 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
26908 }
26909 {
26910 UHI opval = tmp_tmp;
26911 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
26912 written |= (1 << 9);
26913 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
26914 }
26915 {
26916 UHI opval = tmp_tmp;
26917 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
26918 written |= (1 << 8);
26919 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
26920 }
26921 {
26922 UHI opval = tmp_tmp;
26923 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
26924 written |= (1 << 10);
26925 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
26926 }
26927 }
26928 }
26929
26930 abuf->written = written;
26931 return vpc;
26932 #undef FLD
26933 }
26934
26935 /* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
26936
26937 static SEM_PC
26938 SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26939 {
26940 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
26941 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26942 int UNUSED written = 0;
26943 IADDR UNUSED pc = abuf->addr;
26944 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26945
26946 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
26947 frvbf_media_register_not_aligned (current_cpu);
26948 } else {
26949 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26950 {
26951 UHI tmp_tmp;
26952 {
26953 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
26954 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
26955 written |= (1 << 8);
26956 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
26957 }
26958 if (ANDSI (FLD (f_u6), 1)) {
26959 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
26960 } else {
26961 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
26962 }
26963 {
26964 UHI opval = tmp_tmp;
26965 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
26966 written |= (1 << 9);
26967 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
26968 }
26969 {
26970 UHI opval = tmp_tmp;
26971 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
26972 written |= (1 << 11);
26973 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
26974 }
26975 {
26976 UHI opval = tmp_tmp;
26977 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
26978 written |= (1 << 10);
26979 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
26980 }
26981 {
26982 UHI opval = tmp_tmp;
26983 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
26984 written |= (1 << 12);
26985 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
26986 }
26987 }
26988 }
26989 }
26990
26991 abuf->written = written;
26992 return vpc;
26993 #undef FLD
26994 }
26995
26996 /* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
26997
26998 static SEM_PC
26999 SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27000 {
27001 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
27002 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27003 int UNUSED written = 0;
27004 IADDR UNUSED pc = abuf->addr;
27005 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27006
27007 {
27008 {
27009 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27010 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27011 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27012 }
27013 {
27014 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27015 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27016 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27017 }
27018 }
27019
27020 return vpc;
27021 #undef FLD
27022 }
27023
27024 /* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27025
27026 static SEM_PC
27027 SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27028 {
27029 #define FLD(f) abuf->fields.sfmt_mdpackh.f
27030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27031 int UNUSED written = 0;
27032 IADDR UNUSED pc = abuf->addr;
27033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27034
27035 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27036 frvbf_media_register_not_aligned (current_cpu);
27037 } else {
27038 {
27039 {
27040 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27041 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27042 written |= (1 << 10);
27043 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27044 }
27045 {
27046 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27047 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27048 written |= (1 << 11);
27049 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27050 }
27051 {
27052 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27053 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27054 written |= (1 << 12);
27055 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27056 }
27057 {
27058 {
27059 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27060 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27061 written |= (1 << 13);
27062 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27063 }
27064 {
27065 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27066 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27067 written |= (1 << 15);
27068 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27069 }
27070 }
27071 {
27072 {
27073 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27074 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27075 written |= (1 << 14);
27076 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27077 }
27078 {
27079 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27080 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27081 written |= (1 << 16);
27082 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27083 }
27084 }
27085 }
27086 }
27087
27088 abuf->written = written;
27089 return vpc;
27090 #undef FLD
27091 }
27092
27093 /* munpackh: munpackh$pack $FRinti,$FRintkeven */
27094
27095 static SEM_PC
27096 SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27097 {
27098 #define FLD(f) abuf->fields.sfmt_munpackh.f
27099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27100 int UNUSED written = 0;
27101 IADDR UNUSED pc = abuf->addr;
27102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27103
27104 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27105 frvbf_media_register_not_aligned (current_cpu);
27106 } else {
27107 {
27108 {
27109 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27110 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27111 written |= (1 << 6);
27112 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27113 }
27114 {
27115 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27116 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27117 written |= (1 << 7);
27118 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27119 }
27120 {
27121 {
27122 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27123 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27124 written |= (1 << 8);
27125 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27126 }
27127 {
27128 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27129 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27130 written |= (1 << 10);
27131 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27132 }
27133 {
27134 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27135 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27136 written |= (1 << 9);
27137 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27138 }
27139 {
27140 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27141 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27142 written |= (1 << 11);
27143 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27144 }
27145 }
27146 }
27147 }
27148
27149 abuf->written = written;
27150 return vpc;
27151 #undef FLD
27152 }
27153
27154 /* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27155
27156 static SEM_PC
27157 SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27158 {
27159 #define FLD(f) abuf->fields.sfmt_mdunpackh.f
27160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27161 int UNUSED written = 0;
27162 IADDR UNUSED pc = abuf->addr;
27163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27164
27165 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27166 frvbf_media_register_not_aligned (current_cpu);
27167 } else {
27168 {
27169 {
27170 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27171 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27172 written |= (1 << 8);
27173 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27174 }
27175 {
27176 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27177 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27178 written |= (1 << 9);
27179 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27180 }
27181 {
27182 {
27183 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27184 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27185 written |= (1 << 10);
27186 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27187 }
27188 {
27189 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27190 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27191 written |= (1 << 14);
27192 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27193 }
27194 {
27195 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27196 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27197 written |= (1 << 12);
27198 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27199 }
27200 {
27201 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27202 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27203 written |= (1 << 16);
27204 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27205 }
27206 }
27207 {
27208 {
27209 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27210 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27211 written |= (1 << 11);
27212 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27213 }
27214 {
27215 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27216 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27217 written |= (1 << 15);
27218 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27219 }
27220 {
27221 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27222 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27223 written |= (1 << 13);
27224 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27225 }
27226 {
27227 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27228 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27229 written |= (1 << 17);
27230 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27231 }
27232 }
27233 }
27234 }
27235
27236 abuf->written = written;
27237 return vpc;
27238 #undef FLD
27239 }
27240
27241 /* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27242
27243 static SEM_PC
27244 SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27245 {
27246 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27248 int UNUSED written = 0;
27249 IADDR UNUSED pc = abuf->addr;
27250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27251
27252 {
27253 {
27254 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27255 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27256 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27257 }
27258 {
27259 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27260 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27261 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27262 }
27263 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27264 frvbf_media_register_not_aligned (current_cpu);
27265 } else {
27266 {
27267 {
27268 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27269 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27270 written |= (1 << 10);
27271 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27272 }
27273 {
27274 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27275 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27276 written |= (1 << 12);
27277 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27278 }
27279 {
27280 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27281 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27282 written |= (1 << 11);
27283 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27284 }
27285 {
27286 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27287 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27288 written |= (1 << 13);
27289 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27290 }
27291 }
27292 }
27293 }
27294
27295 abuf->written = written;
27296 return vpc;
27297 #undef FLD
27298 }
27299
27300 /* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27301
27302 static SEM_PC
27303 SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27304 {
27305 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27306 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27307 int UNUSED written = 0;
27308 IADDR UNUSED pc = abuf->addr;
27309 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27310
27311 {
27312 {
27313 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27314 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27315 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27316 }
27317 {
27318 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27319 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27320 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27321 }
27322 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27323 frvbf_media_register_not_aligned (current_cpu);
27324 } else {
27325 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27326 {
27327 {
27328 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27329 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27330 written |= (1 << 12);
27331 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27332 }
27333 {
27334 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27335 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27336 written |= (1 << 14);
27337 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27338 }
27339 {
27340 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27341 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27342 written |= (1 << 13);
27343 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27344 }
27345 {
27346 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27347 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27348 written |= (1 << 15);
27349 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27350 }
27351 }
27352 }
27353 }
27354 }
27355
27356 abuf->written = written;
27357 return vpc;
27358 #undef FLD
27359 }
27360
27361 /* mhtob: mhtob$pack $FRintjeven,$FRintk */
27362
27363 static SEM_PC
27364 SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27365 {
27366 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27368 int UNUSED written = 0;
27369 IADDR UNUSED pc = abuf->addr;
27370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27371
27372 {
27373 {
27374 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27375 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27376 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27377 }
27378 {
27379 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27380 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27381 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27382 }
27383 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27384 frvbf_media_register_not_aligned (current_cpu);
27385 } else {
27386 {
27387 {
27388 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27389 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27390 written |= (1 << 13);
27391 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27392 }
27393 {
27394 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27395 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27396 written |= (1 << 12);
27397 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27398 }
27399 {
27400 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27401 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27402 written |= (1 << 11);
27403 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27404 }
27405 {
27406 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27407 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27408 written |= (1 << 10);
27409 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27410 }
27411 }
27412 }
27413 }
27414
27415 abuf->written = written;
27416 return vpc;
27417 #undef FLD
27418 }
27419
27420 /* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27421
27422 static SEM_PC
27423 SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27424 {
27425 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27427 int UNUSED written = 0;
27428 IADDR UNUSED pc = abuf->addr;
27429 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27430
27431 {
27432 {
27433 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27434 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27435 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27436 }
27437 {
27438 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27439 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27440 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27441 }
27442 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27443 frvbf_media_register_not_aligned (current_cpu);
27444 } else {
27445 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27446 {
27447 {
27448 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27449 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27450 written |= (1 << 15);
27451 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27452 }
27453 {
27454 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27455 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27456 written |= (1 << 14);
27457 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27458 }
27459 {
27460 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27461 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27462 written |= (1 << 13);
27463 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27464 }
27465 {
27466 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27467 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27468 written |= (1 << 12);
27469 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27470 }
27471 }
27472 }
27473 }
27474 }
27475
27476 abuf->written = written;
27477 return vpc;
27478 #undef FLD
27479 }
27480
27481 /* mbtohe: mbtohe$pack $FRintj,$FRintk */
27482
27483 static SEM_PC
27484 SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27485 {
27486 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27488 int UNUSED written = 0;
27489 IADDR UNUSED pc = abuf->addr;
27490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27491
27492 {
27493 {
27494 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27495 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27496 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27497 }
27498 {
27499 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27500 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27501 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27502 }
27503 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27504 frvbf_media_register_not_aligned (current_cpu);
27505 } else {
27506 {
27507 {
27508 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27509 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27510 written |= (1 << 10);
27511 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27512 }
27513 {
27514 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27515 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27516 written |= (1 << 14);
27517 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27518 }
27519 {
27520 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27521 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27522 written |= (1 << 11);
27523 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27524 }
27525 {
27526 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27527 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27528 written |= (1 << 15);
27529 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27530 }
27531 {
27532 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27533 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27534 written |= (1 << 12);
27535 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27536 }
27537 {
27538 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27539 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27540 written |= (1 << 16);
27541 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27542 }
27543 {
27544 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27545 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27546 written |= (1 << 13);
27547 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27548 }
27549 {
27550 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27551 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27552 written |= (1 << 17);
27553 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27554 }
27555 }
27556 }
27557 }
27558
27559 abuf->written = written;
27560 return vpc;
27561 #undef FLD
27562 }
27563
27564 /* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27565
27566 static SEM_PC
27567 SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27568 {
27569 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27571 int UNUSED written = 0;
27572 IADDR UNUSED pc = abuf->addr;
27573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27574
27575 {
27576 {
27577 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27578 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27579 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27580 }
27581 {
27582 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27583 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27584 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27585 }
27586 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27587 frvbf_media_register_not_aligned (current_cpu);
27588 } else {
27589 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27590 {
27591 {
27592 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27593 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27594 written |= (1 << 12);
27595 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27596 }
27597 {
27598 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27599 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27600 written |= (1 << 16);
27601 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27602 }
27603 {
27604 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27605 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27606 written |= (1 << 13);
27607 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27608 }
27609 {
27610 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27611 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27612 written |= (1 << 17);
27613 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27614 }
27615 {
27616 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27617 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27618 written |= (1 << 14);
27619 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27620 }
27621 {
27622 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27623 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27624 written |= (1 << 18);
27625 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27626 }
27627 {
27628 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27629 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27630 written |= (1 << 15);
27631 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27632 }
27633 {
27634 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27635 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27636 written |= (1 << 19);
27637 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27638 }
27639 }
27640 }
27641 }
27642 }
27643
27644 abuf->written = written;
27645 return vpc;
27646 #undef FLD
27647 }
27648
27649 /* mclracc: mclracc$pack $ACC40Sk,$A */
27650
27651 static SEM_PC
27652 SEM_FN_NAME (frvbf,mclracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27653 {
27654 #define FLD(f) abuf->fields.sfmt_mclracc.f
27655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27656 int UNUSED written = 0;
27657 IADDR UNUSED pc = abuf->addr;
27658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27659
27660 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), FLD (f_A));
27661
27662 return vpc;
27663 #undef FLD
27664 }
27665
27666 /* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
27667
27668 static SEM_PC
27669 SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27670 {
27671 #define FLD(f) abuf->fields.sfmt_mcuti.f
27672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27673 int UNUSED written = 0;
27674 IADDR UNUSED pc = abuf->addr;
27675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27676
27677 {
27678 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
27679 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27680 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27681 }
27682
27683 return vpc;
27684 #undef FLD
27685 }
27686
27687 /* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
27688
27689 static SEM_PC
27690 SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27691 {
27692 #define FLD(f) abuf->fields.sfmt_mrdaccg.f
27693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27694 int UNUSED written = 0;
27695 IADDR UNUSED pc = abuf->addr;
27696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27697
27698 {
27699 SI opval = GET_H_ACCG (FLD (f_ACCGi));
27700 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27701 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27702 }
27703
27704 return vpc;
27705 #undef FLD
27706 }
27707
27708 /* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
27709
27710 static SEM_PC
27711 SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27712 {
27713 #define FLD(f) abuf->fields.sfmt_cmmachs.f
27714 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27715 int UNUSED written = 0;
27716 IADDR UNUSED pc = abuf->addr;
27717 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27718
27719 {
27720 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
27721 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27722 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27723 }
27724
27725 return vpc;
27726 #undef FLD
27727 }
27728
27729 /* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
27730
27731 static SEM_PC
27732 SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27733 {
27734 #define FLD(f) abuf->fields.sfmt_mwtaccg.f
27735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27736 int UNUSED written = 0;
27737 IADDR UNUSED pc = abuf->addr;
27738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27739
27740 {
27741 USI opval = GET_H_FR_INT (FLD (f_FRi));
27742 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
27743 TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
27744 }
27745
27746 return vpc;
27747 #undef FLD
27748 }
27749
27750 /* mcop1: mcop1$pack $FRi,$FRj,$FRk */
27751
27752 static SEM_PC
27753 SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27754 {
27755 #define FLD(f) abuf->fields.fmt_empty.f
27756 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27757 int UNUSED written = 0;
27758 IADDR UNUSED pc = abuf->addr;
27759 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27760
27761 frvbf_media_cop (current_cpu, 1);
27762
27763 return vpc;
27764 #undef FLD
27765 }
27766
27767 /* mcop2: mcop2$pack $FRi,$FRj,$FRk */
27768
27769 static SEM_PC
27770 SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27771 {
27772 #define FLD(f) abuf->fields.fmt_empty.f
27773 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27774 int UNUSED written = 0;
27775 IADDR UNUSED pc = abuf->addr;
27776 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27777
27778 frvbf_media_cop (current_cpu, 2);
27779
27780 return vpc;
27781 #undef FLD
27782 }
27783
27784 /* fnop: fnop$pack */
27785
27786 static SEM_PC
27787 SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27788 {
27789 #define FLD(f) abuf->fields.fmt_empty.f
27790 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27791 int UNUSED written = 0;
27792 IADDR UNUSED pc = abuf->addr;
27793 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27794
27795 ((void) 0); /*nop*/
27796
27797 return vpc;
27798 #undef FLD
27799 }
27800
27801 /* Table of all semantic fns. */
27802
27803 static const struct sem_fn_desc sem_fns[] = {
27804 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
27805 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
27806 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
27807 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
27808 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
27809 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
27810 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
27811 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
27812 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
27813 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
27814 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
27815 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
27816 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
27817 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
27818 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
27819 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
27820 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
27821 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
27822 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
27823 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
27824 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
27825 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
27826 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
27827 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
27828 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
27829 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
27830 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
27831 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
27832 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
27833 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
27834 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
27835 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
27836 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
27837 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
27838 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
27839 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
27840 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
27841 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
27842 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
27843 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
27844 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
27845 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
27846 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
27847 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
27848 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
27849 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
27850 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
27851 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
27852 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
27853 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
27854 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
27855 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
27856 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
27857 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
27858 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
27859 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
27860 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
27861 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
27862 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
27863 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
27864 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
27865 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
27866 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
27867 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
27868 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
27869 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
27870 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
27871 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
27872 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
27873 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
27874 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
27875 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
27876 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
27877 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
27878 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
27879 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
27880 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
27881 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
27882 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
27883 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
27884 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
27885 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
27886 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
27887 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
27888 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
27889 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
27890 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
27891 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
27892 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
27893 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
27894 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
27895 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
27896 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
27897 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
27898 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
27899 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
27900 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
27901 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
27902 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
27903 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
27904 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
27905 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
27906 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
27907 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
27908 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
27909 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
27910 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
27911 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
27912 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
27913 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
27914 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
27915 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
27916 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
27917 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
27918 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
27919 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
27920 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
27921 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
27922 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
27923 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
27924 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
27925 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
27926 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
27927 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
27928 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
27929 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
27930 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
27931 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
27932 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
27933 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
27934 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
27935 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
27936 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
27937 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
27938 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
27939 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
27940 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
27941 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
27942 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
27943 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
27944 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
27945 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
27946 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
27947 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
27948 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
27949 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
27950 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
27951 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
27952 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
27953 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
27954 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
27955 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
27956 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
27957 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
27958 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
27959 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
27960 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
27961 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
27962 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
27963 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
27964 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
27965 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
27966 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
27967 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
27968 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
27969 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
27970 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
27971 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
27972 { FRVBF_INSN_NLDQI, SEM_FN_NAME (frvbf,nldqi) },
27973 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
27974 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
27975 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
27976 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
27977 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
27978 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
27979 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
27980 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
27981 { FRVBF_INSN_RSTB, SEM_FN_NAME (frvbf,rstb) },
27982 { FRVBF_INSN_RSTH, SEM_FN_NAME (frvbf,rsth) },
27983 { FRVBF_INSN_RST, SEM_FN_NAME (frvbf,rst) },
27984 { FRVBF_INSN_RSTBF, SEM_FN_NAME (frvbf,rstbf) },
27985 { FRVBF_INSN_RSTHF, SEM_FN_NAME (frvbf,rsthf) },
27986 { FRVBF_INSN_RSTF, SEM_FN_NAME (frvbf,rstf) },
27987 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
27988 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
27989 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
27990 { FRVBF_INSN_RSTD, SEM_FN_NAME (frvbf,rstd) },
27991 { FRVBF_INSN_RSTDF, SEM_FN_NAME (frvbf,rstdf) },
27992 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
27993 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
27994 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
27995 { FRVBF_INSN_RSTQ, SEM_FN_NAME (frvbf,rstq) },
27996 { FRVBF_INSN_RSTQF, SEM_FN_NAME (frvbf,rstqf) },
27997 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
27998 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
27999 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28000 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28001 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28002 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28003 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28004 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28005 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28006 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28007 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28008 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28009 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28010 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28011 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28012 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28013 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28014 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28015 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28016 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28017 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28018 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28019 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28020 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28021 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28022 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28023 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28024 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28025 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28026 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28027 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28028 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28029 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28030 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28031 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28032 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28033 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28034 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28035 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28036 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28037 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28038 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28039 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28040 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28041 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28042 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28043 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28044 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28045 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28046 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28047 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28048 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28049 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28050 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28051 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28052 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28053 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28054 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28055 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28056 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28057 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28058 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28059 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28060 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28061 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28062 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28063 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28064 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28065 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28066 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28067 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28068 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28069 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28070 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28071 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28072 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28073 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28074 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28075 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28076 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28077 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28078 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28079 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28080 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28081 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28082 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28083 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28084 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28085 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28086 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28087 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28088 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28089 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28090 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28091 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28092 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28093 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28094 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28095 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28096 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28097 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28098 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28099 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28100 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28101 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28102 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28103 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28104 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28105 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28106 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28107 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28108 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28109 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28110 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28111 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28112 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28113 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28114 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28115 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28116 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28117 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28118 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28119 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28120 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28121 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28122 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28123 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28124 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28125 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28126 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28127 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28128 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28129 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28130 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28131 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28132 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28133 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28134 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28135 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28136 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28137 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28138 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28139 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28140 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28141 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28142 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28143 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28144 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28145 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28146 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28147 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28148 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28149 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28150 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28151 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28152 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28153 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28154 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28155 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28156 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28157 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28158 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28159 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28160 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28161 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28162 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28163 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28164 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28165 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28166 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28167 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28168 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28169 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28170 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28171 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28172 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28173 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28174 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28175 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28176 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28177 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28178 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28179 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28180 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28181 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28182 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28183 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28184 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28185 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28186 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28187 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28188 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28189 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28190 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28191 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28192 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28193 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28194 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28195 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28196 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28197 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28198 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28199 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28200 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28201 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28202 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28203 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28204 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28205 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28206 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28207 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28208 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28209 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28210 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28211 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28212 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28213 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28214 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28215 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28216 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28217 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28218 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28219 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28220 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28221 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28222 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28223 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28224 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28225 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28226 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28227 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28228 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28229 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28230 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28231 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28232 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28233 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28234 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28235 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28236 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28237 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28238 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28239 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28240 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28241 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28242 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28243 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28244 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28245 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28246 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28247 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28248 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28249 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28250 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28251 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28252 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28253 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28254 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28255 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28256 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28257 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28258 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28259 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28260 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28261 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28262 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28263 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28264 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28265 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28266 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28267 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28268 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28269 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28270 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28271 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28272 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28273 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28274 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28275 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28276 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28277 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28278 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28279 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28280 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28281 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28282 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28283 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28284 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28285 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28286 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28287 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28288 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28289 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28290 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28291 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28292 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28293 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28294 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28295 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28296 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28297 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28298 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28299 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28300 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28301 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28302 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28303 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28304 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28305 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28306 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28307 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28308 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28309 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28310 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28311 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28312 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28313 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28314 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28315 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28316 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28317 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28318 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28319 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28320 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28321 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28322 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28323 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28324 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28325 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28326 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28327 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28328 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28329 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28330 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28331 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28332 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28333 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28334 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28335 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
28336 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28337 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28338 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28339 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28340 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28341 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28342 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28343 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28344 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28345 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28346 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28347 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28348 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28349 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28350 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28351 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28352 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28353 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28354 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28355 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28356 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28357 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28358 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28359 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28360 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28361 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28362 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28363 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28364 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28365 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28366 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28367 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28368 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28369 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28370 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28371 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28372 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28373 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28374 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28375 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28376 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28377 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28378 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28379 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28380 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28381 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28382 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28383 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28384 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28385 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28386 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28387 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28388 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28389 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28390 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28391 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28392 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28393 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28394 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28395 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28396 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28397 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28398 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28399 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28400 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28401 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28402 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28403 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28404 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28405 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28406 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28407 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28408 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28409 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28410 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28411 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28412 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28413 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28414 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28415 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28416 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28417 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28418 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28419 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28420 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28421 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28422 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28423 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28424 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28425 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28426 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28427 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28428 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28429 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28430 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28431 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28432 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28433 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28434 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28435 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28436 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28437 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28438 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28439 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28440 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28441 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28442 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28443 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28444 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28445 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28446 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28447 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28448 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28449 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28450 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28451 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28452 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28453 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28454 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28455 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28456 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28457 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28458 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28459 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28460 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28461 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28462 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28463 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28464 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28465 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28466 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28467 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28468 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28469 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28470 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28471 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28472 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28473 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28474 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28475 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28476 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28477 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28478 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28479 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28480 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28481 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28482 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
28483 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28484 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28485 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28486 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28487 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28488 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28489 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28490 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28491 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28492 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28493 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28494 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28495 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28496 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28497 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28498 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28499 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28500 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28501 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28502 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28503 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28504 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28505 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28506 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28507 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28508 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28509 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28510 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28511 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28512 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28513 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28514 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28515 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28516 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28517 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28518 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28519 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28520 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28521 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28522 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28523 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28524 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28525 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28526 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28527 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28528 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28529 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28530 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28531 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28532 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28533 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28534 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28535 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28536 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28537 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28538 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28539 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
28540 { FRVBF_INSN_MCLRACC, SEM_FN_NAME (frvbf,mclracc) },
28541 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28542 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28543 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28544 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28545 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28546 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28547 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28548 { 0, 0 }
28549 };
28550
28551 /* Add the semantic fns to IDESC_TABLE. */
28552
28553 void
28554 SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28555 {
28556 IDESC *idesc_table = CPU_IDESC (current_cpu);
28557 const struct sem_fn_desc *sf;
28558 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28559
28560 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28561 {
28562 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28563 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28564 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28565 #if FAST_P
28566 if (valid_p)
28567 idesc_table[sf->index].sem_fast = sf->fn;
28568 else
28569 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28570 #else
28571 if (valid_p)
28572 idesc_table[sf->index].sem_full = sf->fn;
28573 else
28574 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28575 #endif
28576 }
28577 }
28578
This page took 0.973883 seconds and 5 git commands to generate.