]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/frv/sem.c
2003-10-06 Dave Brolley <brolley@redhat.com>
[thirdparty/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_scutss.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 /* smu: smu$pack $GRi,$GRj */
453
454 static SEM_PC
455 SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
456 {
457 #define FLD(f) abuf->fields.sfmt_smass.f
458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
459 int UNUSED written = 0;
460 IADDR UNUSED pc = abuf->addr;
461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
462
463 {
464 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
465 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
466 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
467 }
468
469 return vpc;
470 #undef FLD
471 }
472
473 /* smass: smass$pack $GRi,$GRj */
474
475 static SEM_PC
476 SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
477 {
478 #define FLD(f) abuf->fields.sfmt_smass.f
479 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
480 int UNUSED written = 0;
481 IADDR UNUSED pc = abuf->addr;
482 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
483
484 {
485 DI opval = (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (SUBDI (9223372036854775807, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (SUBDI (9223372036854775808, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (ADDDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
486 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
487 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
488 }
489
490 return vpc;
491 #undef FLD
492 }
493
494 /* smsss: smsss$pack $GRi,$GRj */
495
496 static SEM_PC
497 SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
498 {
499 #define FLD(f) abuf->fields.sfmt_smass.f
500 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
501 int UNUSED written = 0;
502 IADDR UNUSED pc = abuf->addr;
503 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
504
505 {
506 DI opval = (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (ADDDI (9223372036854775807, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (ADDDI (9223372036854775808, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (SUBDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
507 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
508 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
509 }
510
511 return vpc;
512 #undef FLD
513 }
514
515 /* sll: sll$pack $GRi,$GRj,$GRk */
516
517 static SEM_PC
518 SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
519 {
520 #define FLD(f) abuf->fields.sfmt_addcc.f
521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
522 int UNUSED written = 0;
523 IADDR UNUSED pc = abuf->addr;
524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
525
526 {
527 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
528 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
529 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
530 }
531
532 return vpc;
533 #undef FLD
534 }
535
536 /* srl: srl$pack $GRi,$GRj,$GRk */
537
538 static SEM_PC
539 SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
540 {
541 #define FLD(f) abuf->fields.sfmt_addcc.f
542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
543 int UNUSED written = 0;
544 IADDR UNUSED pc = abuf->addr;
545 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
546
547 {
548 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
549 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
550 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
551 }
552
553 return vpc;
554 #undef FLD
555 }
556
557 /* sra: sra$pack $GRi,$GRj,$GRk */
558
559 static SEM_PC
560 SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
561 {
562 #define FLD(f) abuf->fields.sfmt_addcc.f
563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
564 int UNUSED written = 0;
565 IADDR UNUSED pc = abuf->addr;
566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
567
568 {
569 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
570 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
571 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
572 }
573
574 return vpc;
575 #undef FLD
576 }
577
578 /* slass: slass$pack $GRi,$GRj,$GRk */
579
580 static SEM_PC
581 SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
582 {
583 #define FLD(f) abuf->fields.sfmt_addcc.f
584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
585 int UNUSED written = 0;
586 IADDR UNUSED pc = abuf->addr;
587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
588
589 {
590 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
591 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
592 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
593 }
594
595 return vpc;
596 #undef FLD
597 }
598
599 /* scutss: scutss$pack $GRj,$GRk */
600
601 static SEM_PC
602 SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
603 {
604 #define FLD(f) abuf->fields.sfmt_scutss.f
605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
606 int UNUSED written = 0;
607 IADDR UNUSED pc = abuf->addr;
608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
609
610 {
611 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
612 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
613 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
614 }
615
616 return vpc;
617 #undef FLD
618 }
619
620 /* scan: scan$pack $GRi,$GRj,$GRk */
621
622 static SEM_PC
623 SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
624 {
625 #define FLD(f) abuf->fields.sfmt_addcc.f
626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
627 int UNUSED written = 0;
628 IADDR UNUSED pc = abuf->addr;
629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
630
631 {
632 SI tmp_tmp1;
633 SI tmp_tmp2;
634 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
635 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
636 {
637 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
638 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
639 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
640 }
641 }
642
643 return vpc;
644 #undef FLD
645 }
646
647 /* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
648
649 static SEM_PC
650 SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
651 {
652 #define FLD(f) abuf->fields.sfmt_cswap.f
653 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
654 int UNUSED written = 0;
655 IADDR UNUSED pc = abuf->addr;
656 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
657
658 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
659 {
660 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
661 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
662 written |= (1 << 4);
663 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
664 }
665 }
666
667 abuf->written = written;
668 return vpc;
669 #undef FLD
670 }
671
672 /* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
673
674 static SEM_PC
675 SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
676 {
677 #define FLD(f) abuf->fields.sfmt_cswap.f
678 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
679 int UNUSED written = 0;
680 IADDR UNUSED pc = abuf->addr;
681 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
682
683 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
684 {
685 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
686 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
687 written |= (1 << 4);
688 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
689 }
690 }
691
692 abuf->written = written;
693 return vpc;
694 #undef FLD
695 }
696
697 /* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
698
699 static SEM_PC
700 SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
701 {
702 #define FLD(f) abuf->fields.sfmt_cswap.f
703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
704 int UNUSED written = 0;
705 IADDR UNUSED pc = abuf->addr;
706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
707
708 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
709 {
710 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
711 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
712 written |= (1 << 4);
713 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
714 }
715 }
716
717 abuf->written = written;
718 return vpc;
719 #undef FLD
720 }
721
722 /* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
723
724 static SEM_PC
725 SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
726 {
727 #define FLD(f) abuf->fields.sfmt_cswap.f
728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
729 int UNUSED written = 0;
730 IADDR UNUSED pc = abuf->addr;
731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
732
733 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
734 {
735 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
736 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
737 written |= (1 << 4);
738 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
739 }
740 }
741
742 abuf->written = written;
743 return vpc;
744 #undef FLD
745 }
746
747 /* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
748
749 static SEM_PC
750 SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
751 {
752 #define FLD(f) abuf->fields.sfmt_cswap.f
753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
754 int UNUSED written = 0;
755 IADDR UNUSED pc = abuf->addr;
756 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
757
758 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
759 {
760 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
761 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
762 written |= (1 << 4);
763 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
764 }
765 }
766
767 abuf->written = written;
768 return vpc;
769 #undef FLD
770 }
771
772 /* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
773
774 static SEM_PC
775 SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
776 {
777 #define FLD(f) abuf->fields.sfmt_cswap.f
778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
779 int UNUSED written = 0;
780 IADDR UNUSED pc = abuf->addr;
781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
782
783 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
784 {
785 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
786 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
787 written |= (1 << 3);
788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
789 }
790 }
791
792 abuf->written = written;
793 return vpc;
794 #undef FLD
795 }
796
797 /* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
798
799 static SEM_PC
800 SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
801 {
802 #define FLD(f) abuf->fields.sfmt_clddu.f
803 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
804 int UNUSED written = 0;
805 IADDR UNUSED pc = abuf->addr;
806 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
807
808 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
809 {
810 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
811 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
812 written |= (1 << 4);
813 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
814 }
815 }
816
817 abuf->written = written;
818 return vpc;
819 #undef FLD
820 }
821
822 /* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
823
824 static SEM_PC
825 SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
826 {
827 #define FLD(f) abuf->fields.sfmt_cswap.f
828 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
829 int UNUSED written = 0;
830 IADDR UNUSED pc = abuf->addr;
831 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
832
833 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
834 {
835 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
836 ; /*clobber*/
837 }
838 }
839
840 abuf->written = written;
841 return vpc;
842 #undef FLD
843 }
844
845 /* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
846
847 static SEM_PC
848 SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
849 {
850 #define FLD(f) abuf->fields.sfmt_cswap.f
851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
852 int UNUSED written = 0;
853 IADDR UNUSED pc = abuf->addr;
854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
855
856 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
857 {
858 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
859 ; /*clobber*/
860 }
861 }
862
863 abuf->written = written;
864 return vpc;
865 #undef FLD
866 }
867
868 /* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
869
870 static SEM_PC
871 SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
872 {
873 #define FLD(f) abuf->fields.sfmt_cswap.f
874 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
875 int UNUSED written = 0;
876 IADDR UNUSED pc = abuf->addr;
877 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
878
879 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
880 {
881 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
882 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
883 written |= (1 << 4);
884 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
885 }
886 }
887
888 abuf->written = written;
889 return vpc;
890 #undef FLD
891 }
892
893 /* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
894
895 static SEM_PC
896 SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
897 {
898 #define FLD(f) abuf->fields.sfmt_cswap.f
899 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
900 int UNUSED written = 0;
901 IADDR UNUSED pc = abuf->addr;
902 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
903
904 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
905 {
906 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
907 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
908 written |= (1 << 4);
909 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
910 }
911 }
912
913 abuf->written = written;
914 return vpc;
915 #undef FLD
916 }
917
918 /* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
919
920 static SEM_PC
921 SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
922 {
923 #define FLD(f) abuf->fields.sfmt_cswap.f
924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
925 int UNUSED written = 0;
926 IADDR UNUSED pc = abuf->addr;
927 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
928
929 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
930 {
931 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
932 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
933 written |= (1 << 4);
934 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
935 }
936 }
937
938 abuf->written = written;
939 return vpc;
940 #undef FLD
941 }
942
943 /* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
944
945 static SEM_PC
946 SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
947 {
948 #define FLD(f) abuf->fields.sfmt_cswap.f
949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
950 int UNUSED written = 0;
951 IADDR UNUSED pc = abuf->addr;
952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
953
954 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
955 {
956 SI tmp_tmp1;
957 SI tmp_tmp2;
958 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
959 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
960 {
961 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
962 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
963 written |= (1 << 4);
964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
965 }
966 }
967 }
968
969 abuf->written = written;
970 return vpc;
971 #undef FLD
972 }
973
974 /* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
975
976 static SEM_PC
977 SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
978 {
979 #define FLD(f) abuf->fields.sfmt_addcc.f
980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
981 int UNUSED written = 0;
982 IADDR UNUSED pc = abuf->addr;
983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
984
985 {
986 BI tmp_tmp;
987 QI tmp_cc;
988 SI tmp_result;
989 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
990 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
991 if (EQBI (tmp_tmp, 0)) {
992 tmp_cc = ANDQI (tmp_cc, 13);
993 } else {
994 tmp_cc = ORQI (tmp_cc, 2);
995 }
996 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
997 if (EQBI (tmp_tmp, 0)) {
998 tmp_cc = ANDQI (tmp_cc, 14);
999 } else {
1000 tmp_cc = ORQI (tmp_cc, 1);
1001 }
1002 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1003 if (EQSI (tmp_result, 0)) {
1004 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1005 } else {
1006 if (LTSI (tmp_result, 0)) {
1007 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1008 } else {
1009 tmp_cc = ANDQI (tmp_cc, 3);
1010 }
1011 }
1012 {
1013 SI opval = tmp_result;
1014 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1015 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1016 }
1017 {
1018 UQI opval = tmp_cc;
1019 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1020 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1021 }
1022 }
1023
1024 return vpc;
1025 #undef FLD
1026 }
1027
1028 /* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1029
1030 static SEM_PC
1031 SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1032 {
1033 #define FLD(f) abuf->fields.sfmt_addcc.f
1034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1035 int UNUSED written = 0;
1036 IADDR UNUSED pc = abuf->addr;
1037 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1038
1039 {
1040 BI tmp_tmp;
1041 QI tmp_cc;
1042 SI tmp_result;
1043 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1044 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1045 if (EQBI (tmp_tmp, 0)) {
1046 tmp_cc = ANDQI (tmp_cc, 13);
1047 } else {
1048 tmp_cc = ORQI (tmp_cc, 2);
1049 }
1050 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1051 if (EQBI (tmp_tmp, 0)) {
1052 tmp_cc = ANDQI (tmp_cc, 14);
1053 } else {
1054 tmp_cc = ORQI (tmp_cc, 1);
1055 }
1056 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1057 if (EQSI (tmp_result, 0)) {
1058 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1059 } else {
1060 if (LTSI (tmp_result, 0)) {
1061 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1062 } else {
1063 tmp_cc = ANDQI (tmp_cc, 3);
1064 }
1065 }
1066 {
1067 SI opval = tmp_result;
1068 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1069 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1070 }
1071 {
1072 UQI opval = tmp_cc;
1073 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1074 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1075 }
1076 }
1077
1078 return vpc;
1079 #undef FLD
1080 }
1081
1082 /* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1083
1084 static SEM_PC
1085 SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1086 {
1087 #define FLD(f) abuf->fields.sfmt_addcc.f
1088 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1089 int UNUSED written = 0;
1090 IADDR UNUSED pc = abuf->addr;
1091 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1092
1093 {
1094 SI tmp_tmp;
1095 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1096 {
1097 SI opval = tmp_tmp;
1098 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1099 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1100 }
1101 if (EQSI (tmp_tmp, 0)) {
1102 {
1103 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1104 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1105 written |= (1 << 4);
1106 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1107 }
1108 } else {
1109 if (LTSI (tmp_tmp, 0)) {
1110 {
1111 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1112 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1113 written |= (1 << 4);
1114 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1115 }
1116 } else {
1117 {
1118 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1119 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1120 written |= (1 << 4);
1121 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1122 }
1123 }
1124 }
1125 }
1126
1127 abuf->written = written;
1128 return vpc;
1129 #undef FLD
1130 }
1131
1132 /* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1133
1134 static SEM_PC
1135 SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1136 {
1137 #define FLD(f) abuf->fields.sfmt_addcc.f
1138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1139 int UNUSED written = 0;
1140 IADDR UNUSED pc = abuf->addr;
1141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1142
1143 {
1144 SI tmp_tmp;
1145 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1146 {
1147 SI opval = tmp_tmp;
1148 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1149 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1150 }
1151 if (EQSI (tmp_tmp, 0)) {
1152 {
1153 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1154 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1155 written |= (1 << 4);
1156 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1157 }
1158 } else {
1159 if (LTSI (tmp_tmp, 0)) {
1160 {
1161 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1162 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1163 written |= (1 << 4);
1164 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1165 }
1166 } else {
1167 {
1168 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1169 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1170 written |= (1 << 4);
1171 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1172 }
1173 }
1174 }
1175 }
1176
1177 abuf->written = written;
1178 return vpc;
1179 #undef FLD
1180 }
1181
1182 /* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1183
1184 static SEM_PC
1185 SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1186 {
1187 #define FLD(f) abuf->fields.sfmt_addcc.f
1188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1189 int UNUSED written = 0;
1190 IADDR UNUSED pc = abuf->addr;
1191 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1192
1193 {
1194 SI tmp_tmp;
1195 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1196 {
1197 SI opval = tmp_tmp;
1198 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1199 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1200 }
1201 if (EQSI (tmp_tmp, 0)) {
1202 {
1203 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1204 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1205 written |= (1 << 4);
1206 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1207 }
1208 } else {
1209 if (LTSI (tmp_tmp, 0)) {
1210 {
1211 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1212 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1213 written |= (1 << 4);
1214 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1215 }
1216 } else {
1217 {
1218 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1219 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1220 written |= (1 << 4);
1221 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1222 }
1223 }
1224 }
1225 }
1226
1227 abuf->written = written;
1228 return vpc;
1229 #undef FLD
1230 }
1231
1232 /* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1233
1234 static SEM_PC
1235 SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1236 {
1237 #define FLD(f) abuf->fields.sfmt_addcc.f
1238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1239 int UNUSED written = 0;
1240 IADDR UNUSED pc = abuf->addr;
1241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1242
1243 {
1244 SI tmp_shift;
1245 SI tmp_tmp;
1246 QI tmp_cc;
1247 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1248 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1249 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1250 {
1251 SI opval = tmp_tmp;
1252 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1253 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1254 }
1255 if (EQSI (tmp_tmp, 0)) {
1256 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1257 } else {
1258 if (LTSI (tmp_tmp, 0)) {
1259 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1260 } else {
1261 tmp_cc = ANDQI (tmp_cc, 3);
1262 }
1263 }
1264 {
1265 UQI opval = tmp_cc;
1266 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1267 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1268 }
1269 }
1270
1271 return vpc;
1272 #undef FLD
1273 }
1274
1275 /* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1276
1277 static SEM_PC
1278 SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1279 {
1280 #define FLD(f) abuf->fields.sfmt_addcc.f
1281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1282 int UNUSED written = 0;
1283 IADDR UNUSED pc = abuf->addr;
1284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1285
1286 {
1287 SI tmp_shift;
1288 SI tmp_tmp;
1289 QI tmp_cc;
1290 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1291 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1292 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1293 {
1294 SI opval = tmp_tmp;
1295 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1296 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1297 }
1298 if (EQSI (tmp_tmp, 0)) {
1299 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1300 } else {
1301 if (LTSI (tmp_tmp, 0)) {
1302 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1303 } else {
1304 tmp_cc = ANDQI (tmp_cc, 3);
1305 }
1306 }
1307 {
1308 UQI opval = tmp_cc;
1309 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1310 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1311 }
1312 }
1313
1314 return vpc;
1315 #undef FLD
1316 }
1317
1318 /* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1319
1320 static SEM_PC
1321 SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1322 {
1323 #define FLD(f) abuf->fields.sfmt_addcc.f
1324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1325 int UNUSED written = 0;
1326 IADDR UNUSED pc = abuf->addr;
1327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1328
1329 {
1330 SI tmp_shift;
1331 SI tmp_tmp;
1332 QI tmp_cc;
1333 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1334 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1335 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1336 {
1337 SI opval = tmp_tmp;
1338 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1339 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1340 }
1341 if (EQSI (tmp_tmp, 0)) {
1342 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1343 } else {
1344 if (LTSI (tmp_tmp, 0)) {
1345 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1346 } else {
1347 tmp_cc = ANDQI (tmp_cc, 3);
1348 }
1349 }
1350 {
1351 UQI opval = tmp_cc;
1352 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1353 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1354 }
1355 }
1356
1357 return vpc;
1358 #undef FLD
1359 }
1360
1361 /* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1362
1363 static SEM_PC
1364 SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1365 {
1366 #define FLD(f) abuf->fields.sfmt_smulcc.f
1367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1368 int UNUSED written = 0;
1369 IADDR UNUSED pc = abuf->addr;
1370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1371
1372 {
1373 DI tmp_tmp;
1374 QI tmp_cc;
1375 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1376 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1377 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1378 tmp_cc = ANDQI (tmp_cc, 7);
1379 } else {
1380 tmp_cc = ORQI (tmp_cc, 8);
1381 }
1382 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1383 tmp_cc = ANDQI (tmp_cc, 11);
1384 } else {
1385 tmp_cc = ORQI (tmp_cc, 4);
1386 }
1387 {
1388 DI opval = tmp_tmp;
1389 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1390 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1391 }
1392 {
1393 UQI opval = tmp_cc;
1394 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1395 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1396 }
1397 }
1398
1399 return vpc;
1400 #undef FLD
1401 }
1402
1403 /* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1404
1405 static SEM_PC
1406 SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1407 {
1408 #define FLD(f) abuf->fields.sfmt_smulcc.f
1409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1410 int UNUSED written = 0;
1411 IADDR UNUSED pc = abuf->addr;
1412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1413
1414 {
1415 DI tmp_tmp;
1416 QI tmp_cc;
1417 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1418 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1419 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1420 tmp_cc = ANDQI (tmp_cc, 7);
1421 } else {
1422 tmp_cc = ORQI (tmp_cc, 8);
1423 }
1424 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1425 tmp_cc = ANDQI (tmp_cc, 11);
1426 } else {
1427 tmp_cc = ORQI (tmp_cc, 4);
1428 }
1429 {
1430 DI opval = tmp_tmp;
1431 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1432 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1433 }
1434 {
1435 UQI opval = tmp_cc;
1436 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1437 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1438 }
1439 }
1440
1441 return vpc;
1442 #undef FLD
1443 }
1444
1445 /* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1446
1447 static SEM_PC
1448 SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1449 {
1450 #define FLD(f) abuf->fields.sfmt_caddcc.f
1451 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1452 int UNUSED written = 0;
1453 IADDR UNUSED pc = abuf->addr;
1454 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1455
1456 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1457 {
1458 BI tmp_tmp;
1459 QI tmp_cc;
1460 SI tmp_result;
1461 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1462 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1463 if (EQBI (tmp_tmp, 0)) {
1464 tmp_cc = ANDQI (tmp_cc, 13);
1465 } else {
1466 tmp_cc = ORQI (tmp_cc, 2);
1467 }
1468 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1469 if (EQBI (tmp_tmp, 0)) {
1470 tmp_cc = ANDQI (tmp_cc, 14);
1471 } else {
1472 tmp_cc = ORQI (tmp_cc, 1);
1473 }
1474 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1475 if (EQSI (tmp_result, 0)) {
1476 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1477 } else {
1478 if (LTSI (tmp_result, 0)) {
1479 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1480 } else {
1481 tmp_cc = ANDQI (tmp_cc, 3);
1482 }
1483 }
1484 {
1485 SI opval = tmp_result;
1486 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1487 written |= (1 << 6);
1488 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1489 }
1490 {
1491 UQI opval = tmp_cc;
1492 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1493 written |= (1 << 7);
1494 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1495 }
1496 }
1497 }
1498
1499 abuf->written = written;
1500 return vpc;
1501 #undef FLD
1502 }
1503
1504 /* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1505
1506 static SEM_PC
1507 SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1508 {
1509 #define FLD(f) abuf->fields.sfmt_caddcc.f
1510 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1511 int UNUSED written = 0;
1512 IADDR UNUSED pc = abuf->addr;
1513 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1514
1515 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1516 {
1517 BI tmp_tmp;
1518 QI tmp_cc;
1519 SI tmp_result;
1520 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1521 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1522 if (EQBI (tmp_tmp, 0)) {
1523 tmp_cc = ANDQI (tmp_cc, 13);
1524 } else {
1525 tmp_cc = ORQI (tmp_cc, 2);
1526 }
1527 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1528 if (EQBI (tmp_tmp, 0)) {
1529 tmp_cc = ANDQI (tmp_cc, 14);
1530 } else {
1531 tmp_cc = ORQI (tmp_cc, 1);
1532 }
1533 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1534 if (EQSI (tmp_result, 0)) {
1535 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1536 } else {
1537 if (LTSI (tmp_result, 0)) {
1538 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1539 } else {
1540 tmp_cc = ANDQI (tmp_cc, 3);
1541 }
1542 }
1543 {
1544 SI opval = tmp_result;
1545 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1546 written |= (1 << 6);
1547 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1548 }
1549 {
1550 UQI opval = tmp_cc;
1551 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1552 written |= (1 << 7);
1553 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1554 }
1555 }
1556 }
1557
1558 abuf->written = written;
1559 return vpc;
1560 #undef FLD
1561 }
1562
1563 /* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1564
1565 static SEM_PC
1566 SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1567 {
1568 #define FLD(f) abuf->fields.sfmt_csmulcc.f
1569 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1570 int UNUSED written = 0;
1571 IADDR UNUSED pc = abuf->addr;
1572 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1573
1574 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1575 {
1576 DI tmp_tmp;
1577 QI tmp_cc;
1578 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1579 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1580 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1581 tmp_cc = ANDQI (tmp_cc, 7);
1582 } else {
1583 tmp_cc = ORQI (tmp_cc, 8);
1584 }
1585 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1586 tmp_cc = ANDQI (tmp_cc, 11);
1587 } else {
1588 tmp_cc = ORQI (tmp_cc, 4);
1589 }
1590 {
1591 DI opval = tmp_tmp;
1592 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1593 written |= (1 << 6);
1594 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1595 }
1596 {
1597 UQI opval = tmp_cc;
1598 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1599 written |= (1 << 7);
1600 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1601 }
1602 }
1603 }
1604
1605 abuf->written = written;
1606 return vpc;
1607 #undef FLD
1608 }
1609
1610 /* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1611
1612 static SEM_PC
1613 SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1614 {
1615 #define FLD(f) abuf->fields.sfmt_caddcc.f
1616 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1617 int UNUSED written = 0;
1618 IADDR UNUSED pc = abuf->addr;
1619 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1620
1621 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1622 {
1623 SI tmp_tmp;
1624 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1625 {
1626 SI opval = tmp_tmp;
1627 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1628 written |= (1 << 6);
1629 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1630 }
1631 if (EQSI (tmp_tmp, 0)) {
1632 {
1633 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1634 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1635 written |= (1 << 7);
1636 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1637 }
1638 } else {
1639 if (LTSI (tmp_tmp, 0)) {
1640 {
1641 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1642 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1643 written |= (1 << 7);
1644 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1645 }
1646 } else {
1647 {
1648 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1649 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1650 written |= (1 << 7);
1651 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1652 }
1653 }
1654 }
1655 }
1656 }
1657
1658 abuf->written = written;
1659 return vpc;
1660 #undef FLD
1661 }
1662
1663 /* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1664
1665 static SEM_PC
1666 SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1667 {
1668 #define FLD(f) abuf->fields.sfmt_caddcc.f
1669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1670 int UNUSED written = 0;
1671 IADDR UNUSED pc = abuf->addr;
1672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1673
1674 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1675 {
1676 SI tmp_tmp;
1677 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1678 {
1679 SI opval = tmp_tmp;
1680 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1681 written |= (1 << 6);
1682 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1683 }
1684 if (EQSI (tmp_tmp, 0)) {
1685 {
1686 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1687 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1688 written |= (1 << 7);
1689 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1690 }
1691 } else {
1692 if (LTSI (tmp_tmp, 0)) {
1693 {
1694 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1695 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1696 written |= (1 << 7);
1697 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1698 }
1699 } else {
1700 {
1701 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1702 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1703 written |= (1 << 7);
1704 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1705 }
1706 }
1707 }
1708 }
1709 }
1710
1711 abuf->written = written;
1712 return vpc;
1713 #undef FLD
1714 }
1715
1716 /* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1717
1718 static SEM_PC
1719 SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1720 {
1721 #define FLD(f) abuf->fields.sfmt_caddcc.f
1722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1723 int UNUSED written = 0;
1724 IADDR UNUSED pc = abuf->addr;
1725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1726
1727 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1728 {
1729 SI tmp_tmp;
1730 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1731 {
1732 SI opval = tmp_tmp;
1733 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1734 written |= (1 << 6);
1735 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1736 }
1737 if (EQSI (tmp_tmp, 0)) {
1738 {
1739 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1740 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1741 written |= (1 << 7);
1742 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1743 }
1744 } else {
1745 if (LTSI (tmp_tmp, 0)) {
1746 {
1747 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
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 } else {
1753 {
1754 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1755 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1756 written |= (1 << 7);
1757 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1758 }
1759 }
1760 }
1761 }
1762 }
1763
1764 abuf->written = written;
1765 return vpc;
1766 #undef FLD
1767 }
1768
1769 /* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1770
1771 static SEM_PC
1772 SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1773 {
1774 #define FLD(f) abuf->fields.sfmt_caddcc.f
1775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1776 int UNUSED written = 0;
1777 IADDR UNUSED pc = abuf->addr;
1778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1779
1780 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1781 {
1782 SI tmp_shift;
1783 SI tmp_tmp;
1784 QI tmp_cc;
1785 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1786 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))]));
1787 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1788 {
1789 SI opval = tmp_tmp;
1790 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1791 written |= (1 << 6);
1792 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1793 }
1794 if (EQSI (tmp_tmp, 0)) {
1795 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1796 } else {
1797 if (LTSI (tmp_tmp, 0)) {
1798 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1799 } else {
1800 tmp_cc = ANDQI (tmp_cc, 3);
1801 }
1802 }
1803 {
1804 UQI opval = tmp_cc;
1805 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1806 written |= (1 << 7);
1807 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1808 }
1809 }
1810 }
1811
1812 abuf->written = written;
1813 return vpc;
1814 #undef FLD
1815 }
1816
1817 /* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1818
1819 static SEM_PC
1820 SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1821 {
1822 #define FLD(f) abuf->fields.sfmt_caddcc.f
1823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1824 int UNUSED written = 0;
1825 IADDR UNUSED pc = abuf->addr;
1826 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1827
1828 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1829 {
1830 SI tmp_shift;
1831 SI tmp_tmp;
1832 QI tmp_cc;
1833 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1834 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))]));
1835 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1836 {
1837 SI opval = tmp_tmp;
1838 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1839 written |= (1 << 6);
1840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1841 }
1842 if (EQSI (tmp_tmp, 0)) {
1843 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1844 } else {
1845 if (LTSI (tmp_tmp, 0)) {
1846 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1847 } else {
1848 tmp_cc = ANDQI (tmp_cc, 3);
1849 }
1850 }
1851 {
1852 UQI opval = tmp_cc;
1853 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1854 written |= (1 << 7);
1855 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1856 }
1857 }
1858 }
1859
1860 abuf->written = written;
1861 return vpc;
1862 #undef FLD
1863 }
1864
1865 /* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1866
1867 static SEM_PC
1868 SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1869 {
1870 #define FLD(f) abuf->fields.sfmt_caddcc.f
1871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1872 int UNUSED written = 0;
1873 IADDR UNUSED pc = abuf->addr;
1874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1875
1876 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1877 {
1878 SI tmp_shift;
1879 SI tmp_tmp;
1880 QI tmp_cc;
1881 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1882 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))]));
1883 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1884 {
1885 SI opval = tmp_tmp;
1886 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1887 written |= (1 << 6);
1888 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1889 }
1890 if (EQSI (tmp_tmp, 0)) {
1891 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1892 } else {
1893 if (LTSI (tmp_tmp, 0)) {
1894 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1895 } else {
1896 tmp_cc = ANDQI (tmp_cc, 3);
1897 }
1898 }
1899 {
1900 UQI opval = tmp_cc;
1901 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1902 written |= (1 << 7);
1903 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1904 }
1905 }
1906 }
1907
1908 abuf->written = written;
1909 return vpc;
1910 #undef FLD
1911 }
1912
1913 /* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1914
1915 static SEM_PC
1916 SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1917 {
1918 #define FLD(f) abuf->fields.sfmt_addcc.f
1919 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1920 int UNUSED written = 0;
1921 IADDR UNUSED pc = abuf->addr;
1922 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1923
1924 {
1925 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1926 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1927 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1928 }
1929
1930 return vpc;
1931 #undef FLD
1932 }
1933
1934 /* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1935
1936 static SEM_PC
1937 SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1938 {
1939 #define FLD(f) abuf->fields.sfmt_addcc.f
1940 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1941 int UNUSED written = 0;
1942 IADDR UNUSED pc = abuf->addr;
1943 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1944
1945 {
1946 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1947 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1948 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1949 }
1950
1951 return vpc;
1952 #undef FLD
1953 }
1954
1955 /* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1956
1957 static SEM_PC
1958 SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1959 {
1960 #define FLD(f) abuf->fields.sfmt_addcc.f
1961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1962 int UNUSED written = 0;
1963 IADDR UNUSED pc = abuf->addr;
1964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1965
1966 {
1967 SI tmp_tmp;
1968 QI tmp_cc;
1969 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1970 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1971 if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1972 tmp_cc = ANDQI (tmp_cc, 13);
1973 } else {
1974 tmp_cc = ORQI (tmp_cc, 2);
1975 }
1976 if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1977 tmp_cc = ANDQI (tmp_cc, 14);
1978 } else {
1979 tmp_cc = ORQI (tmp_cc, 1);
1980 }
1981 if (EQSI (tmp_tmp, 0)) {
1982 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1983 } else {
1984 if (LTSI (tmp_tmp, 0)) {
1985 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1986 } else {
1987 tmp_cc = ANDQI (tmp_cc, 3);
1988 }
1989 }
1990 {
1991 SI opval = tmp_tmp;
1992 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1993 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1994 }
1995 {
1996 UQI opval = tmp_cc;
1997 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1998 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1999 }
2000 }
2001
2002 return vpc;
2003 #undef FLD
2004 }
2005
2006 /* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2007
2008 static SEM_PC
2009 SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2010 {
2011 #define FLD(f) abuf->fields.sfmt_addcc.f
2012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2013 int UNUSED written = 0;
2014 IADDR UNUSED pc = abuf->addr;
2015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2016
2017 {
2018 SI tmp_tmp;
2019 QI tmp_cc;
2020 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2021 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2022 if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2023 tmp_cc = ANDQI (tmp_cc, 13);
2024 } else {
2025 tmp_cc = ORQI (tmp_cc, 2);
2026 }
2027 if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2028 tmp_cc = ANDQI (tmp_cc, 14);
2029 } else {
2030 tmp_cc = ORQI (tmp_cc, 1);
2031 }
2032 if (EQSI (tmp_tmp, 0)) {
2033 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2034 } else {
2035 if (LTSI (tmp_tmp, 0)) {
2036 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2037 } else {
2038 tmp_cc = ANDQI (tmp_cc, 3);
2039 }
2040 }
2041 {
2042 SI opval = tmp_tmp;
2043 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2044 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2045 }
2046 {
2047 UQI opval = tmp_cc;
2048 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2049 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2050 }
2051 }
2052
2053 return vpc;
2054 #undef FLD
2055 }
2056
2057 /* addss: addss$pack $GRi,$GRj,$GRk */
2058
2059 static SEM_PC
2060 SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2061 {
2062 #define FLD(f) abuf->fields.sfmt_addcc.f
2063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2064 int UNUSED written = 0;
2065 IADDR UNUSED pc = abuf->addr;
2066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2067
2068 {
2069 {
2070 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2071 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2072 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2073 }
2074 if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2075 {
2076 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2077 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2078 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2079 }
2080 }
2081 }
2082
2083 return vpc;
2084 #undef FLD
2085 }
2086
2087 /* subss: subss$pack $GRi,$GRj,$GRk */
2088
2089 static SEM_PC
2090 SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2091 {
2092 #define FLD(f) abuf->fields.sfmt_addcc.f
2093 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2094 int UNUSED written = 0;
2095 IADDR UNUSED pc = abuf->addr;
2096 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2097
2098 {
2099 {
2100 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2101 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2102 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2103 }
2104 if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2105 {
2106 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2107 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2108 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2109 }
2110 }
2111 }
2112
2113 return vpc;
2114 #undef FLD
2115 }
2116
2117 /* addi: addi$pack $GRi,$s12,$GRk */
2118
2119 static SEM_PC
2120 SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2121 {
2122 #define FLD(f) abuf->fields.sfmt_swapi.f
2123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2124 int UNUSED written = 0;
2125 IADDR UNUSED pc = abuf->addr;
2126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2127
2128 {
2129 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2130 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2131 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2132 }
2133
2134 return vpc;
2135 #undef FLD
2136 }
2137
2138 /* subi: subi$pack $GRi,$s12,$GRk */
2139
2140 static SEM_PC
2141 SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2142 {
2143 #define FLD(f) abuf->fields.sfmt_swapi.f
2144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2145 int UNUSED written = 0;
2146 IADDR UNUSED pc = abuf->addr;
2147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2148
2149 {
2150 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2151 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2152 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2153 }
2154
2155 return vpc;
2156 #undef FLD
2157 }
2158
2159 /* andi: andi$pack $GRi,$s12,$GRk */
2160
2161 static SEM_PC
2162 SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2163 {
2164 #define FLD(f) abuf->fields.sfmt_swapi.f
2165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2166 int UNUSED written = 0;
2167 IADDR UNUSED pc = abuf->addr;
2168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2169
2170 {
2171 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2172 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2173 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2174 }
2175
2176 return vpc;
2177 #undef FLD
2178 }
2179
2180 /* ori: ori$pack $GRi,$s12,$GRk */
2181
2182 static SEM_PC
2183 SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2184 {
2185 #define FLD(f) abuf->fields.sfmt_swapi.f
2186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2187 int UNUSED written = 0;
2188 IADDR UNUSED pc = abuf->addr;
2189 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2190
2191 {
2192 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2193 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2194 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2195 }
2196
2197 return vpc;
2198 #undef FLD
2199 }
2200
2201 /* xori: xori$pack $GRi,$s12,$GRk */
2202
2203 static SEM_PC
2204 SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2205 {
2206 #define FLD(f) abuf->fields.sfmt_swapi.f
2207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2208 int UNUSED written = 0;
2209 IADDR UNUSED pc = abuf->addr;
2210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2211
2212 {
2213 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2214 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2215 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2216 }
2217
2218 return vpc;
2219 #undef FLD
2220 }
2221
2222 /* sdivi: sdivi$pack $GRi,$s12,$GRk */
2223
2224 static SEM_PC
2225 SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2226 {
2227 #define FLD(f) abuf->fields.sfmt_swapi.f
2228 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2229 int UNUSED written = 0;
2230 IADDR UNUSED pc = abuf->addr;
2231 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2232
2233 {
2234 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2235 ; /*clobber*/
2236 }
2237
2238 return vpc;
2239 #undef FLD
2240 }
2241
2242 /* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2243
2244 static SEM_PC
2245 SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2246 {
2247 #define FLD(f) abuf->fields.sfmt_swapi.f
2248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2249 int UNUSED written = 0;
2250 IADDR UNUSED pc = abuf->addr;
2251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2252
2253 {
2254 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2255 ; /*clobber*/
2256 }
2257
2258 return vpc;
2259 #undef FLD
2260 }
2261
2262 /* udivi: udivi$pack $GRi,$s12,$GRk */
2263
2264 static SEM_PC
2265 SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2266 {
2267 #define FLD(f) abuf->fields.sfmt_swapi.f
2268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2269 int UNUSED written = 0;
2270 IADDR UNUSED pc = abuf->addr;
2271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2272
2273 {
2274 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2275 ; /*clobber*/
2276 }
2277
2278 return vpc;
2279 #undef FLD
2280 }
2281
2282 /* nudivi: nudivi$pack $GRi,$s12,$GRk */
2283
2284 static SEM_PC
2285 SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2286 {
2287 #define FLD(f) abuf->fields.sfmt_swapi.f
2288 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2289 int UNUSED written = 0;
2290 IADDR UNUSED pc = abuf->addr;
2291 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2292
2293 {
2294 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2295 ; /*clobber*/
2296 }
2297
2298 return vpc;
2299 #undef FLD
2300 }
2301
2302 /* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2303
2304 static SEM_PC
2305 SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2306 {
2307 #define FLD(f) abuf->fields.sfmt_smuli.f
2308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2309 int UNUSED written = 0;
2310 IADDR UNUSED pc = abuf->addr;
2311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2312
2313 {
2314 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2315 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2316 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2317 }
2318
2319 return vpc;
2320 #undef FLD
2321 }
2322
2323 /* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2324
2325 static SEM_PC
2326 SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2327 {
2328 #define FLD(f) abuf->fields.sfmt_smuli.f
2329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2330 int UNUSED written = 0;
2331 IADDR UNUSED pc = abuf->addr;
2332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2333
2334 {
2335 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2336 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2337 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2338 }
2339
2340 return vpc;
2341 #undef FLD
2342 }
2343
2344 /* slli: slli$pack $GRi,$s12,$GRk */
2345
2346 static SEM_PC
2347 SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2348 {
2349 #define FLD(f) abuf->fields.sfmt_swapi.f
2350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2351 int UNUSED written = 0;
2352 IADDR UNUSED pc = abuf->addr;
2353 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2354
2355 {
2356 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2357 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2358 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2359 }
2360
2361 return vpc;
2362 #undef FLD
2363 }
2364
2365 /* srli: srli$pack $GRi,$s12,$GRk */
2366
2367 static SEM_PC
2368 SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2369 {
2370 #define FLD(f) abuf->fields.sfmt_swapi.f
2371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2372 int UNUSED written = 0;
2373 IADDR UNUSED pc = abuf->addr;
2374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2375
2376 {
2377 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2378 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2379 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2380 }
2381
2382 return vpc;
2383 #undef FLD
2384 }
2385
2386 /* srai: srai$pack $GRi,$s12,$GRk */
2387
2388 static SEM_PC
2389 SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2390 {
2391 #define FLD(f) abuf->fields.sfmt_swapi.f
2392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2393 int UNUSED written = 0;
2394 IADDR UNUSED pc = abuf->addr;
2395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2396
2397 {
2398 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2399 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2400 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2401 }
2402
2403 return vpc;
2404 #undef FLD
2405 }
2406
2407 /* scani: scani$pack $GRi,$s12,$GRk */
2408
2409 static SEM_PC
2410 SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2411 {
2412 #define FLD(f) abuf->fields.sfmt_swapi.f
2413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2414 int UNUSED written = 0;
2415 IADDR UNUSED pc = abuf->addr;
2416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2417
2418 {
2419 SI tmp_tmp1;
2420 SI tmp_tmp2;
2421 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2422 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2423 {
2424 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2425 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2426 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2427 }
2428 }
2429
2430 return vpc;
2431 #undef FLD
2432 }
2433
2434 /* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2435
2436 static SEM_PC
2437 SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2438 {
2439 #define FLD(f) abuf->fields.sfmt_addicc.f
2440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2441 int UNUSED written = 0;
2442 IADDR UNUSED pc = abuf->addr;
2443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2444
2445 {
2446 BI tmp_tmp;
2447 QI tmp_cc;
2448 SI tmp_result;
2449 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2450 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2451 if (EQBI (tmp_tmp, 0)) {
2452 tmp_cc = ANDQI (tmp_cc, 13);
2453 } else {
2454 tmp_cc = ORQI (tmp_cc, 2);
2455 }
2456 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2457 if (EQBI (tmp_tmp, 0)) {
2458 tmp_cc = ANDQI (tmp_cc, 14);
2459 } else {
2460 tmp_cc = ORQI (tmp_cc, 1);
2461 }
2462 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2463 if (EQSI (tmp_result, 0)) {
2464 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2465 } else {
2466 if (LTSI (tmp_result, 0)) {
2467 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2468 } else {
2469 tmp_cc = ANDQI (tmp_cc, 3);
2470 }
2471 }
2472 {
2473 SI opval = tmp_result;
2474 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2475 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2476 }
2477 {
2478 UQI opval = tmp_cc;
2479 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2480 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2481 }
2482 }
2483
2484 return vpc;
2485 #undef FLD
2486 }
2487
2488 /* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2489
2490 static SEM_PC
2491 SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2492 {
2493 #define FLD(f) abuf->fields.sfmt_addicc.f
2494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2495 int UNUSED written = 0;
2496 IADDR UNUSED pc = abuf->addr;
2497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2498
2499 {
2500 BI tmp_tmp;
2501 QI tmp_cc;
2502 SI tmp_result;
2503 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2504 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2505 if (EQBI (tmp_tmp, 0)) {
2506 tmp_cc = ANDQI (tmp_cc, 13);
2507 } else {
2508 tmp_cc = ORQI (tmp_cc, 2);
2509 }
2510 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2511 if (EQBI (tmp_tmp, 0)) {
2512 tmp_cc = ANDQI (tmp_cc, 14);
2513 } else {
2514 tmp_cc = ORQI (tmp_cc, 1);
2515 }
2516 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2517 if (EQSI (tmp_result, 0)) {
2518 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2519 } else {
2520 if (LTSI (tmp_result, 0)) {
2521 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2522 } else {
2523 tmp_cc = ANDQI (tmp_cc, 3);
2524 }
2525 }
2526 {
2527 SI opval = tmp_result;
2528 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2529 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2530 }
2531 {
2532 UQI opval = tmp_cc;
2533 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2534 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2535 }
2536 }
2537
2538 return vpc;
2539 #undef FLD
2540 }
2541
2542 /* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2543
2544 static SEM_PC
2545 SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2546 {
2547 #define FLD(f) abuf->fields.sfmt_addicc.f
2548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2549 int UNUSED written = 0;
2550 IADDR UNUSED pc = abuf->addr;
2551 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2552
2553 {
2554 SI tmp_tmp;
2555 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2556 {
2557 SI opval = tmp_tmp;
2558 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2559 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2560 }
2561 if (EQSI (tmp_tmp, 0)) {
2562 {
2563 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2564 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2565 written |= (1 << 4);
2566 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2567 }
2568 } else {
2569 if (LTSI (tmp_tmp, 0)) {
2570 {
2571 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2572 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2573 written |= (1 << 4);
2574 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2575 }
2576 } else {
2577 {
2578 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2579 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2580 written |= (1 << 4);
2581 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2582 }
2583 }
2584 }
2585 }
2586
2587 abuf->written = written;
2588 return vpc;
2589 #undef FLD
2590 }
2591
2592 /* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2593
2594 static SEM_PC
2595 SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2596 {
2597 #define FLD(f) abuf->fields.sfmt_addicc.f
2598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2599 int UNUSED written = 0;
2600 IADDR UNUSED pc = abuf->addr;
2601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2602
2603 {
2604 SI tmp_tmp;
2605 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2606 {
2607 SI opval = tmp_tmp;
2608 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2609 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2610 }
2611 if (EQSI (tmp_tmp, 0)) {
2612 {
2613 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2614 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2615 written |= (1 << 4);
2616 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2617 }
2618 } else {
2619 if (LTSI (tmp_tmp, 0)) {
2620 {
2621 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2622 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2623 written |= (1 << 4);
2624 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2625 }
2626 } else {
2627 {
2628 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2629 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2630 written |= (1 << 4);
2631 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2632 }
2633 }
2634 }
2635 }
2636
2637 abuf->written = written;
2638 return vpc;
2639 #undef FLD
2640 }
2641
2642 /* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2643
2644 static SEM_PC
2645 SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2646 {
2647 #define FLD(f) abuf->fields.sfmt_addicc.f
2648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2649 int UNUSED written = 0;
2650 IADDR UNUSED pc = abuf->addr;
2651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2652
2653 {
2654 SI tmp_tmp;
2655 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2656 {
2657 SI opval = tmp_tmp;
2658 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2659 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2660 }
2661 if (EQSI (tmp_tmp, 0)) {
2662 {
2663 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2664 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2665 written |= (1 << 4);
2666 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2667 }
2668 } else {
2669 if (LTSI (tmp_tmp, 0)) {
2670 {
2671 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2672 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2673 written |= (1 << 4);
2674 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2675 }
2676 } else {
2677 {
2678 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2679 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2680 written |= (1 << 4);
2681 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2682 }
2683 }
2684 }
2685 }
2686
2687 abuf->written = written;
2688 return vpc;
2689 #undef FLD
2690 }
2691
2692 /* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2693
2694 static SEM_PC
2695 SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2696 {
2697 #define FLD(f) abuf->fields.sfmt_smulicc.f
2698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2699 int UNUSED written = 0;
2700 IADDR UNUSED pc = abuf->addr;
2701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2702
2703 {
2704 DI tmp_tmp;
2705 QI tmp_cc;
2706 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2707 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2708 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2709 tmp_cc = ANDQI (tmp_cc, 7);
2710 } else {
2711 tmp_cc = ORQI (tmp_cc, 8);
2712 }
2713 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2714 tmp_cc = ANDQI (tmp_cc, 11);
2715 } else {
2716 tmp_cc = ORQI (tmp_cc, 4);
2717 }
2718 {
2719 DI opval = tmp_tmp;
2720 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2721 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2722 }
2723 {
2724 UQI opval = tmp_cc;
2725 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2726 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2727 }
2728 }
2729
2730 return vpc;
2731 #undef FLD
2732 }
2733
2734 /* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2735
2736 static SEM_PC
2737 SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2738 {
2739 #define FLD(f) abuf->fields.sfmt_smulicc.f
2740 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2741 int UNUSED written = 0;
2742 IADDR UNUSED pc = abuf->addr;
2743 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2744
2745 {
2746 DI tmp_tmp;
2747 QI tmp_cc;
2748 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2749 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2750 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2751 tmp_cc = ANDQI (tmp_cc, 7);
2752 } else {
2753 tmp_cc = ORQI (tmp_cc, 8);
2754 }
2755 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2756 tmp_cc = ANDQI (tmp_cc, 11);
2757 } else {
2758 tmp_cc = ORQI (tmp_cc, 4);
2759 }
2760 {
2761 DI opval = tmp_tmp;
2762 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2763 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2764 }
2765 {
2766 UQI opval = tmp_cc;
2767 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2768 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2769 }
2770 }
2771
2772 return vpc;
2773 #undef FLD
2774 }
2775
2776 /* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2777
2778 static SEM_PC
2779 SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2780 {
2781 #define FLD(f) abuf->fields.sfmt_addicc.f
2782 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2783 int UNUSED written = 0;
2784 IADDR UNUSED pc = abuf->addr;
2785 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2786
2787 {
2788 SI tmp_shift;
2789 SI tmp_tmp;
2790 QI tmp_cc;
2791 tmp_shift = ANDSI (FLD (f_s10), 31);
2792 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2793 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2794 {
2795 SI opval = tmp_tmp;
2796 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2797 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2798 }
2799 if (EQSI (tmp_tmp, 0)) {
2800 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2801 } else {
2802 if (LTSI (tmp_tmp, 0)) {
2803 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2804 } else {
2805 tmp_cc = ANDQI (tmp_cc, 3);
2806 }
2807 }
2808 {
2809 UQI opval = tmp_cc;
2810 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2811 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2812 }
2813 }
2814
2815 return vpc;
2816 #undef FLD
2817 }
2818
2819 /* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2820
2821 static SEM_PC
2822 SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2823 {
2824 #define FLD(f) abuf->fields.sfmt_addicc.f
2825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2826 int UNUSED written = 0;
2827 IADDR UNUSED pc = abuf->addr;
2828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2829
2830 {
2831 SI tmp_shift;
2832 SI tmp_tmp;
2833 QI tmp_cc;
2834 tmp_shift = ANDSI (FLD (f_s10), 31);
2835 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2836 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2837 {
2838 SI opval = tmp_tmp;
2839 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2841 }
2842 if (EQSI (tmp_tmp, 0)) {
2843 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2844 } else {
2845 if (LTSI (tmp_tmp, 0)) {
2846 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2847 } else {
2848 tmp_cc = ANDQI (tmp_cc, 3);
2849 }
2850 }
2851 {
2852 UQI opval = tmp_cc;
2853 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2854 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2855 }
2856 }
2857
2858 return vpc;
2859 #undef FLD
2860 }
2861
2862 /* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2863
2864 static SEM_PC
2865 SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2866 {
2867 #define FLD(f) abuf->fields.sfmt_addicc.f
2868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2869 int UNUSED written = 0;
2870 IADDR UNUSED pc = abuf->addr;
2871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2872
2873 {
2874 SI tmp_shift;
2875 SI tmp_tmp;
2876 QI tmp_cc;
2877 tmp_shift = ANDSI (FLD (f_s10), 31);
2878 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2879 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2880 {
2881 SI opval = tmp_tmp;
2882 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2883 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2884 }
2885 if (EQSI (tmp_tmp, 0)) {
2886 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2887 } else {
2888 if (LTSI (tmp_tmp, 0)) {
2889 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2890 } else {
2891 tmp_cc = ANDQI (tmp_cc, 3);
2892 }
2893 }
2894 {
2895 UQI opval = tmp_cc;
2896 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2897 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2898 }
2899 }
2900
2901 return vpc;
2902 #undef FLD
2903 }
2904
2905 /* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2906
2907 static SEM_PC
2908 SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2909 {
2910 #define FLD(f) abuf->fields.sfmt_addicc.f
2911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2912 int UNUSED written = 0;
2913 IADDR UNUSED pc = abuf->addr;
2914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2915
2916 {
2917 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2918 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2919 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2920 }
2921
2922 return vpc;
2923 #undef FLD
2924 }
2925
2926 /* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2927
2928 static SEM_PC
2929 SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2930 {
2931 #define FLD(f) abuf->fields.sfmt_addicc.f
2932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2933 int UNUSED written = 0;
2934 IADDR UNUSED pc = abuf->addr;
2935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2936
2937 {
2938 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2940 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2941 }
2942
2943 return vpc;
2944 #undef FLD
2945 }
2946
2947 /* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2948
2949 static SEM_PC
2950 SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2951 {
2952 #define FLD(f) abuf->fields.sfmt_addicc.f
2953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2954 int UNUSED written = 0;
2955 IADDR UNUSED pc = abuf->addr;
2956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2957
2958 {
2959 SI tmp_tmp;
2960 QI tmp_cc;
2961 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2962 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2963 if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2964 tmp_cc = ANDQI (tmp_cc, 13);
2965 } else {
2966 tmp_cc = ORQI (tmp_cc, 2);
2967 }
2968 if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2969 tmp_cc = ANDQI (tmp_cc, 14);
2970 } else {
2971 tmp_cc = ORQI (tmp_cc, 1);
2972 }
2973 if (EQSI (tmp_tmp, 0)) {
2974 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2975 } else {
2976 if (LTSI (tmp_tmp, 0)) {
2977 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2978 } else {
2979 tmp_cc = ANDQI (tmp_cc, 3);
2980 }
2981 }
2982 {
2983 SI opval = tmp_tmp;
2984 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2986 }
2987 {
2988 UQI opval = tmp_cc;
2989 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2990 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2991 }
2992 }
2993
2994 return vpc;
2995 #undef FLD
2996 }
2997
2998 /* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2999
3000 static SEM_PC
3001 SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3002 {
3003 #define FLD(f) abuf->fields.sfmt_addicc.f
3004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3005 int UNUSED written = 0;
3006 IADDR UNUSED pc = abuf->addr;
3007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3008
3009 {
3010 SI tmp_tmp;
3011 QI tmp_cc;
3012 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3013 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
3014 if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3015 tmp_cc = ANDQI (tmp_cc, 13);
3016 } else {
3017 tmp_cc = ORQI (tmp_cc, 2);
3018 }
3019 if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3020 tmp_cc = ANDQI (tmp_cc, 14);
3021 } else {
3022 tmp_cc = ORQI (tmp_cc, 1);
3023 }
3024 if (EQSI (tmp_tmp, 0)) {
3025 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3026 } else {
3027 if (LTSI (tmp_tmp, 0)) {
3028 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3029 } else {
3030 tmp_cc = ANDQI (tmp_cc, 3);
3031 }
3032 }
3033 {
3034 SI opval = tmp_tmp;
3035 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3036 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3037 }
3038 {
3039 UQI opval = tmp_cc;
3040 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3041 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3042 }
3043 }
3044
3045 return vpc;
3046 #undef FLD
3047 }
3048
3049 /* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3050
3051 static SEM_PC
3052 SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3053 {
3054 #define FLD(f) abuf->fields.sfmt_smulcc.f
3055 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3056 int UNUSED written = 0;
3057 IADDR UNUSED pc = abuf->addr;
3058 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3059
3060 {
3061 QI tmp_cc;
3062 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3063 tmp_cc = ANDQI (tmp_cc, 7);
3064 } else {
3065 tmp_cc = ORQI (tmp_cc, 8);
3066 }
3067 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3068 tmp_cc = ANDQI (tmp_cc, 11);
3069 } else {
3070 tmp_cc = ORQI (tmp_cc, 4);
3071 }
3072 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3073 tmp_cc = ANDQI (tmp_cc, 13);
3074 } else {
3075 tmp_cc = ORQI (tmp_cc, 2);
3076 }
3077 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3078 tmp_cc = ANDQI (tmp_cc, 14);
3079 } else {
3080 tmp_cc = ORQI (tmp_cc, 1);
3081 }
3082 {
3083 UQI opval = tmp_cc;
3084 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3085 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3086 }
3087 }
3088
3089 return vpc;
3090 #undef FLD
3091 }
3092
3093 /* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3094
3095 static SEM_PC
3096 SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3097 {
3098 #define FLD(f) abuf->fields.sfmt_smulcc.f
3099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3100 int UNUSED written = 0;
3101 IADDR UNUSED pc = abuf->addr;
3102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3103
3104 {
3105 QI tmp_cc;
3106 tmp_cc = 0;
3107 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)) {
3108 tmp_cc = ANDQI (tmp_cc, 14);
3109 } else {
3110 tmp_cc = ORQI (tmp_cc, 1);
3111 }
3112 {
3113 UQI opval = tmp_cc;
3114 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3115 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3116 }
3117 }
3118
3119 return vpc;
3120 #undef FLD
3121 }
3122
3123 /* setlo: setlo$pack $ulo16,$GRklo */
3124
3125 static SEM_PC
3126 SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3127 {
3128 #define FLD(f) abuf->fields.sfmt_setlo.f
3129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3130 int UNUSED written = 0;
3131 IADDR UNUSED pc = abuf->addr;
3132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3133
3134 {
3135 UHI opval = FLD (f_u16);
3136 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3137 TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3138 }
3139
3140 return vpc;
3141 #undef FLD
3142 }
3143
3144 /* sethi: sethi$pack $uhi16,$GRkhi */
3145
3146 static SEM_PC
3147 SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3148 {
3149 #define FLD(f) abuf->fields.sfmt_sethi.f
3150 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3151 int UNUSED written = 0;
3152 IADDR UNUSED pc = abuf->addr;
3153 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3154
3155 {
3156 UHI opval = FLD (f_u16);
3157 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3158 TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3159 }
3160
3161 return vpc;
3162 #undef FLD
3163 }
3164
3165 /* setlos: setlos$pack $slo16,$GRk */
3166
3167 static SEM_PC
3168 SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3169 {
3170 #define FLD(f) abuf->fields.sfmt_setlos.f
3171 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3172 int UNUSED written = 0;
3173 IADDR UNUSED pc = abuf->addr;
3174 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3175
3176 {
3177 SI opval = FLD (f_s16);
3178 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3179 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3180 }
3181
3182 return vpc;
3183 #undef FLD
3184 }
3185
3186 /* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3187
3188 static SEM_PC
3189 SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3190 {
3191 #define FLD(f) abuf->fields.sfmt_addcc.f
3192 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3193 int UNUSED written = 0;
3194 IADDR UNUSED pc = abuf->addr;
3195 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3196
3197 {
3198 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3199 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3200 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3201 }
3202
3203 return vpc;
3204 #undef FLD
3205 }
3206
3207 /* ldub: ldub$pack @($GRi,$GRj),$GRk */
3208
3209 static SEM_PC
3210 SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3211 {
3212 #define FLD(f) abuf->fields.sfmt_addcc.f
3213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3214 int UNUSED written = 0;
3215 IADDR UNUSED pc = abuf->addr;
3216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3217
3218 {
3219 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3220 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3221 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3222 }
3223
3224 return vpc;
3225 #undef FLD
3226 }
3227
3228 /* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3229
3230 static SEM_PC
3231 SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3232 {
3233 #define FLD(f) abuf->fields.sfmt_addcc.f
3234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3235 int UNUSED written = 0;
3236 IADDR UNUSED pc = abuf->addr;
3237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3238
3239 {
3240 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3241 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3242 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3243 }
3244
3245 return vpc;
3246 #undef FLD
3247 }
3248
3249 /* lduh: lduh$pack @($GRi,$GRj),$GRk */
3250
3251 static SEM_PC
3252 SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3253 {
3254 #define FLD(f) abuf->fields.sfmt_addcc.f
3255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3256 int UNUSED written = 0;
3257 IADDR UNUSED pc = abuf->addr;
3258 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3259
3260 {
3261 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3262 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3263 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3264 }
3265
3266 return vpc;
3267 #undef FLD
3268 }
3269
3270 /* ld: ld$pack @($GRi,$GRj),$GRk */
3271
3272 static SEM_PC
3273 SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3274 {
3275 #define FLD(f) abuf->fields.sfmt_addcc.f
3276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3277 int UNUSED written = 0;
3278 IADDR UNUSED pc = abuf->addr;
3279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3280
3281 {
3282 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3283 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3284 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3285 }
3286
3287 return vpc;
3288 #undef FLD
3289 }
3290
3291 /* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3292
3293 static SEM_PC
3294 SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3295 {
3296 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3298 int UNUSED written = 0;
3299 IADDR UNUSED pc = abuf->addr;
3300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3301
3302 {
3303 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3304 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3305 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3306 }
3307
3308 return vpc;
3309 #undef FLD
3310 }
3311
3312 /* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3313
3314 static SEM_PC
3315 SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3316 {
3317 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3319 int UNUSED written = 0;
3320 IADDR UNUSED pc = abuf->addr;
3321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3322
3323 {
3324 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3325 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3326 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3327 }
3328
3329 return vpc;
3330 #undef FLD
3331 }
3332
3333 /* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3334
3335 static SEM_PC
3336 SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3337 {
3338 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3339 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3340 int UNUSED written = 0;
3341 IADDR UNUSED pc = abuf->addr;
3342 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3343
3344 {
3345 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3346 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3347 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3348 }
3349
3350 return vpc;
3351 #undef FLD
3352 }
3353
3354 /* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3355
3356 static SEM_PC
3357 SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3358 {
3359 #define FLD(f) abuf->fields.sfmt_ldcu.f
3360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3361 int UNUSED written = 0;
3362 IADDR UNUSED pc = abuf->addr;
3363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3364
3365 {
3366 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3367 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3368 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3369 }
3370
3371 return vpc;
3372 #undef FLD
3373 }
3374
3375 /* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3376
3377 static SEM_PC
3378 SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3379 {
3380 #define FLD(f) abuf->fields.sfmt_addcc.f
3381 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3382 int UNUSED written = 0;
3383 IADDR UNUSED pc = abuf->addr;
3384 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3385
3386 {
3387 BI tmp_do_op;
3388 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3389 if (tmp_do_op) {
3390 {
3391 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3392 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3393 written |= (1 << 6);
3394 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3395 }
3396 }
3397 }
3398
3399 abuf->written = written;
3400 return vpc;
3401 #undef FLD
3402 }
3403
3404 /* nldub: nldub$pack @($GRi,$GRj),$GRk */
3405
3406 static SEM_PC
3407 SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3408 {
3409 #define FLD(f) abuf->fields.sfmt_addcc.f
3410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3411 int UNUSED written = 0;
3412 IADDR UNUSED pc = abuf->addr;
3413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3414
3415 {
3416 BI tmp_do_op;
3417 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3418 if (tmp_do_op) {
3419 {
3420 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3421 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3422 written |= (1 << 6);
3423 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3424 }
3425 }
3426 }
3427
3428 abuf->written = written;
3429 return vpc;
3430 #undef FLD
3431 }
3432
3433 /* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3434
3435 static SEM_PC
3436 SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3437 {
3438 #define FLD(f) abuf->fields.sfmt_addcc.f
3439 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3440 int UNUSED written = 0;
3441 IADDR UNUSED pc = abuf->addr;
3442 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3443
3444 {
3445 BI tmp_do_op;
3446 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3447 if (tmp_do_op) {
3448 {
3449 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3450 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3451 written |= (1 << 6);
3452 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3453 }
3454 }
3455 }
3456
3457 abuf->written = written;
3458 return vpc;
3459 #undef FLD
3460 }
3461
3462 /* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3463
3464 static SEM_PC
3465 SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3466 {
3467 #define FLD(f) abuf->fields.sfmt_addcc.f
3468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3469 int UNUSED written = 0;
3470 IADDR UNUSED pc = abuf->addr;
3471 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3472
3473 {
3474 BI tmp_do_op;
3475 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3476 if (tmp_do_op) {
3477 {
3478 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3479 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3480 written |= (1 << 6);
3481 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3482 }
3483 }
3484 }
3485
3486 abuf->written = written;
3487 return vpc;
3488 #undef FLD
3489 }
3490
3491 /* nld: nld$pack @($GRi,$GRj),$GRk */
3492
3493 static SEM_PC
3494 SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3495 {
3496 #define FLD(f) abuf->fields.sfmt_addcc.f
3497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3498 int UNUSED written = 0;
3499 IADDR UNUSED pc = abuf->addr;
3500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3501
3502 {
3503 BI tmp_do_op;
3504 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3505 if (tmp_do_op) {
3506 {
3507 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3508 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3509 written |= (1 << 6);
3510 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3511 }
3512 }
3513 }
3514
3515 abuf->written = written;
3516 return vpc;
3517 #undef FLD
3518 }
3519
3520 /* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3521
3522 static SEM_PC
3523 SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3524 {
3525 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3527 int UNUSED written = 0;
3528 IADDR UNUSED pc = abuf->addr;
3529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3530
3531 {
3532 BI tmp_do_op;
3533 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3534 if (tmp_do_op) {
3535 {
3536 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3537 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3538 written |= (1 << 6);
3539 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3540 }
3541 }
3542 }
3543
3544 abuf->written = written;
3545 return vpc;
3546 #undef FLD
3547 }
3548
3549 /* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3550
3551 static SEM_PC
3552 SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3553 {
3554 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3556 int UNUSED written = 0;
3557 IADDR UNUSED pc = abuf->addr;
3558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3559
3560 {
3561 BI tmp_do_op;
3562 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3563 if (tmp_do_op) {
3564 {
3565 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3566 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3567 written |= (1 << 6);
3568 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3569 }
3570 }
3571 }
3572
3573 abuf->written = written;
3574 return vpc;
3575 #undef FLD
3576 }
3577
3578 /* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3579
3580 static SEM_PC
3581 SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3582 {
3583 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3585 int UNUSED written = 0;
3586 IADDR UNUSED pc = abuf->addr;
3587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3588
3589 {
3590 BI tmp_do_op;
3591 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3592 if (tmp_do_op) {
3593 {
3594 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3595 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3596 written |= (1 << 6);
3597 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3598 }
3599 }
3600 }
3601
3602 abuf->written = written;
3603 return vpc;
3604 #undef FLD
3605 }
3606
3607 /* ldd: ldd$pack @($GRi,$GRj),$GRdoublek */
3608
3609 static SEM_PC
3610 SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3611 {
3612 #define FLD(f) abuf->fields.sfmt_smulcc.f
3613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3614 int UNUSED written = 0;
3615 IADDR UNUSED pc = abuf->addr;
3616 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3617
3618 {
3619 SI tmp_address;
3620 if (NESI (FLD (f_GRk), 0)) {
3621 {
3622 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3623 {
3624 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3625 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3626 written |= (1 << 4);
3627 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3628 }
3629 }
3630 }
3631 }
3632
3633 abuf->written = written;
3634 return vpc;
3635 #undef FLD
3636 }
3637
3638 /* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3639
3640 static SEM_PC
3641 SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3642 {
3643 #define FLD(f) abuf->fields.sfmt_clddfu.f
3644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3645 int UNUSED written = 0;
3646 IADDR UNUSED pc = abuf->addr;
3647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3648
3649 {
3650 SI tmp_address;
3651 {
3652 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3653 {
3654 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3655 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3656 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3657 }
3658 }
3659 }
3660
3661 return vpc;
3662 #undef FLD
3663 }
3664
3665 /* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3666
3667 static SEM_PC
3668 SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3669 {
3670 #define FLD(f) abuf->fields.sfmt_lddcu.f
3671 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3672 int UNUSED written = 0;
3673 IADDR UNUSED pc = abuf->addr;
3674 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3675
3676 {
3677 SI tmp_address;
3678 {
3679 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3680 {
3681 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3682 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3683 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3684 }
3685 }
3686 }
3687
3688 return vpc;
3689 #undef FLD
3690 }
3691
3692 /* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3693
3694 static SEM_PC
3695 SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3696 {
3697 #define FLD(f) abuf->fields.sfmt_smulcc.f
3698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3699 int UNUSED written = 0;
3700 IADDR UNUSED pc = abuf->addr;
3701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3702
3703 {
3704 SI tmp_address;
3705 {
3706 BI tmp_do_op;
3707 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3708 if (tmp_do_op) {
3709 if (NESI (FLD (f_GRk), 0)) {
3710 {
3711 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3712 {
3713 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3714 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3715 written |= (1 << 6);
3716 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3717 }
3718 }
3719 }
3720 }
3721 }
3722 }
3723
3724 abuf->written = written;
3725 return vpc;
3726 #undef FLD
3727 }
3728
3729 /* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3730
3731 static SEM_PC
3732 SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3733 {
3734 #define FLD(f) abuf->fields.sfmt_clddfu.f
3735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3736 int UNUSED written = 0;
3737 IADDR UNUSED pc = abuf->addr;
3738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3739
3740 {
3741 SI tmp_address;
3742 {
3743 BI tmp_do_op;
3744 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3745 if (tmp_do_op) {
3746 {
3747 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3748 {
3749 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3750 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3751 written |= (1 << 6);
3752 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3753 }
3754 }
3755 }
3756 }
3757 }
3758
3759 abuf->written = written;
3760 return vpc;
3761 #undef FLD
3762 }
3763
3764 /* ldq: ldq$pack @($GRi,$GRj),$GRk */
3765
3766 static SEM_PC
3767 SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3768 {
3769 #define FLD(f) abuf->fields.sfmt_smulcc.f
3770 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3771 int UNUSED written = 0;
3772 IADDR UNUSED pc = abuf->addr;
3773 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3774
3775 {
3776 SI tmp_address;
3777 {
3778 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3779 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3780 }
3781 }
3782
3783 return vpc;
3784 #undef FLD
3785 }
3786
3787 /* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3788
3789 static SEM_PC
3790 SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3791 {
3792 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3793 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3794 int UNUSED written = 0;
3795 IADDR UNUSED pc = abuf->addr;
3796 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3797
3798 {
3799 SI tmp_address;
3800 {
3801 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3802 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3803 }
3804 }
3805
3806 return vpc;
3807 #undef FLD
3808 }
3809
3810 /* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3811
3812 static SEM_PC
3813 SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3814 {
3815 #define FLD(f) abuf->fields.sfmt_stdcu.f
3816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3817 int UNUSED written = 0;
3818 IADDR UNUSED pc = abuf->addr;
3819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3820
3821 {
3822 SI tmp_address;
3823 {
3824 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3825 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3826 }
3827 }
3828
3829 return vpc;
3830 #undef FLD
3831 }
3832
3833 /* nldq: nldq$pack @($GRi,$GRj),$GRk */
3834
3835 static SEM_PC
3836 SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3837 {
3838 #define FLD(f) abuf->fields.sfmt_smulcc.f
3839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3840 int UNUSED written = 0;
3841 IADDR UNUSED pc = abuf->addr;
3842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3843
3844 {
3845 SI tmp_address;
3846 {
3847 BI tmp_do_op;
3848 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3849 if (tmp_do_op) {
3850 {
3851 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3852 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3853 }
3854 }
3855 }
3856 }
3857
3858 return vpc;
3859 #undef FLD
3860 }
3861
3862 /* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3863
3864 static SEM_PC
3865 SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3866 {
3867 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3869 int UNUSED written = 0;
3870 IADDR UNUSED pc = abuf->addr;
3871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3872
3873 {
3874 SI tmp_address;
3875 {
3876 BI tmp_do_op;
3877 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3878 if (tmp_do_op) {
3879 {
3880 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3881 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3882 }
3883 }
3884 }
3885 }
3886
3887 return vpc;
3888 #undef FLD
3889 }
3890
3891 /* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3892
3893 static SEM_PC
3894 SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3895 {
3896 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3898 int UNUSED written = 0;
3899 IADDR UNUSED pc = abuf->addr;
3900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3901
3902 {
3903 USI tmp_address;
3904 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3905 {
3906 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3907 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3908 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3909 }
3910 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3911 {
3912 {
3913 SI opval = tmp_address;
3914 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3915 written |= (1 << 5);
3916 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3917 }
3918 frvbf_force_update (current_cpu);
3919 }
3920 }
3921 }
3922
3923 abuf->written = written;
3924 return vpc;
3925 #undef FLD
3926 }
3927
3928 /* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3929
3930 static SEM_PC
3931 SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3932 {
3933 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3935 int UNUSED written = 0;
3936 IADDR UNUSED pc = abuf->addr;
3937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3938
3939 {
3940 USI tmp_address;
3941 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3942 {
3943 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3944 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3945 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3946 }
3947 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3948 {
3949 {
3950 SI opval = tmp_address;
3951 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3952 written |= (1 << 5);
3953 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3954 }
3955 frvbf_force_update (current_cpu);
3956 }
3957 }
3958 }
3959
3960 abuf->written = written;
3961 return vpc;
3962 #undef FLD
3963 }
3964
3965 /* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3966
3967 static SEM_PC
3968 SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3969 {
3970 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3971 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3972 int UNUSED written = 0;
3973 IADDR UNUSED pc = abuf->addr;
3974 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3975
3976 {
3977 USI tmp_address;
3978 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3979 {
3980 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3981 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3982 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3983 }
3984 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3985 {
3986 {
3987 SI opval = tmp_address;
3988 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3989 written |= (1 << 5);
3990 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3991 }
3992 frvbf_force_update (current_cpu);
3993 }
3994 }
3995 }
3996
3997 abuf->written = written;
3998 return vpc;
3999 #undef FLD
4000 }
4001
4002 /* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
4003
4004 static SEM_PC
4005 SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4006 {
4007 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4009 int UNUSED written = 0;
4010 IADDR UNUSED pc = abuf->addr;
4011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4012
4013 {
4014 USI tmp_address;
4015 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4016 {
4017 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4018 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4019 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4020 }
4021 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4022 {
4023 {
4024 SI opval = tmp_address;
4025 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4026 written |= (1 << 5);
4027 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4028 }
4029 frvbf_force_update (current_cpu);
4030 }
4031 }
4032 }
4033
4034 abuf->written = written;
4035 return vpc;
4036 #undef FLD
4037 }
4038
4039 /* ldu: ldu$pack @($GRi,$GRj),$GRk */
4040
4041 static SEM_PC
4042 SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4043 {
4044 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4046 int UNUSED written = 0;
4047 IADDR UNUSED pc = abuf->addr;
4048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4049
4050 {
4051 USI tmp_address;
4052 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4053 {
4054 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4055 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4056 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4057 }
4058 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4059 {
4060 {
4061 SI opval = tmp_address;
4062 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4063 written |= (1 << 5);
4064 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4065 }
4066 frvbf_force_update (current_cpu);
4067 }
4068 }
4069 }
4070
4071 abuf->written = written;
4072 return vpc;
4073 #undef FLD
4074 }
4075
4076 /* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4077
4078 static SEM_PC
4079 SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4080 {
4081 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4083 int UNUSED written = 0;
4084 IADDR UNUSED pc = abuf->addr;
4085 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4086
4087 {
4088 BI tmp_do_op;
4089 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4090 if (tmp_do_op) {
4091 {
4092 USI tmp_address;
4093 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4094 {
4095 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4096 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4097 written |= (1 << 7);
4098 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4099 }
4100 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4101 {
4102 {
4103 SI opval = tmp_address;
4104 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4105 written |= (1 << 6);
4106 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4107 }
4108 frvbf_force_update (current_cpu);
4109 }
4110 }
4111 }
4112 }
4113 }
4114
4115 abuf->written = written;
4116 return vpc;
4117 #undef FLD
4118 }
4119
4120 /* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4121
4122 static SEM_PC
4123 SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4124 {
4125 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4127 int UNUSED written = 0;
4128 IADDR UNUSED pc = abuf->addr;
4129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4130
4131 {
4132 BI tmp_do_op;
4133 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4134 if (tmp_do_op) {
4135 {
4136 USI tmp_address;
4137 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4138 {
4139 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4140 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4141 written |= (1 << 7);
4142 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4143 }
4144 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4145 {
4146 {
4147 SI opval = tmp_address;
4148 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4149 written |= (1 << 6);
4150 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4151 }
4152 frvbf_force_update (current_cpu);
4153 }
4154 }
4155 }
4156 }
4157 }
4158
4159 abuf->written = written;
4160 return vpc;
4161 #undef FLD
4162 }
4163
4164 /* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4165
4166 static SEM_PC
4167 SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4168 {
4169 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4171 int UNUSED written = 0;
4172 IADDR UNUSED pc = abuf->addr;
4173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4174
4175 {
4176 BI tmp_do_op;
4177 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4178 if (tmp_do_op) {
4179 {
4180 USI tmp_address;
4181 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4182 {
4183 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4184 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4185 written |= (1 << 7);
4186 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4187 }
4188 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4189 {
4190 {
4191 SI opval = tmp_address;
4192 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4193 written |= (1 << 6);
4194 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4195 }
4196 frvbf_force_update (current_cpu);
4197 }
4198 }
4199 }
4200 }
4201 }
4202
4203 abuf->written = written;
4204 return vpc;
4205 #undef FLD
4206 }
4207
4208 /* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4209
4210 static SEM_PC
4211 SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4212 {
4213 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4215 int UNUSED written = 0;
4216 IADDR UNUSED pc = abuf->addr;
4217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4218
4219 {
4220 BI tmp_do_op;
4221 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4222 if (tmp_do_op) {
4223 {
4224 USI tmp_address;
4225 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4226 {
4227 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4228 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4229 written |= (1 << 7);
4230 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4231 }
4232 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4233 {
4234 {
4235 SI opval = tmp_address;
4236 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4237 written |= (1 << 6);
4238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4239 }
4240 frvbf_force_update (current_cpu);
4241 }
4242 }
4243 }
4244 }
4245 }
4246
4247 abuf->written = written;
4248 return vpc;
4249 #undef FLD
4250 }
4251
4252 /* nldu: nldu$pack @($GRi,$GRj),$GRk */
4253
4254 static SEM_PC
4255 SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4256 {
4257 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4258 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4259 int UNUSED written = 0;
4260 IADDR UNUSED pc = abuf->addr;
4261 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4262
4263 {
4264 BI tmp_do_op;
4265 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4266 if (tmp_do_op) {
4267 {
4268 USI tmp_address;
4269 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4270 {
4271 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4272 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4273 written |= (1 << 7);
4274 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4275 }
4276 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4277 {
4278 {
4279 SI opval = tmp_address;
4280 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4281 written |= (1 << 6);
4282 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4283 }
4284 frvbf_force_update (current_cpu);
4285 }
4286 }
4287 }
4288 }
4289 }
4290
4291 abuf->written = written;
4292 return vpc;
4293 #undef FLD
4294 }
4295
4296 /* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4297
4298 static SEM_PC
4299 SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4300 {
4301 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4303 int UNUSED written = 0;
4304 IADDR UNUSED pc = abuf->addr;
4305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4306
4307 {
4308 USI tmp_address;
4309 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4310 {
4311 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4312 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4313 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4314 }
4315 {
4316 SI opval = tmp_address;
4317 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4318 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4319 }
4320 frvbf_force_update (current_cpu);
4321 }
4322
4323 return vpc;
4324 #undef FLD
4325 }
4326
4327 /* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4328
4329 static SEM_PC
4330 SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4331 {
4332 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4333 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4334 int UNUSED written = 0;
4335 IADDR UNUSED pc = abuf->addr;
4336 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4337
4338 {
4339 USI tmp_address;
4340 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4341 {
4342 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4343 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4344 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4345 }
4346 {
4347 SI opval = tmp_address;
4348 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4349 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4350 }
4351 frvbf_force_update (current_cpu);
4352 }
4353
4354 return vpc;
4355 #undef FLD
4356 }
4357
4358 /* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4359
4360 static SEM_PC
4361 SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4362 {
4363 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4364 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4365 int UNUSED written = 0;
4366 IADDR UNUSED pc = abuf->addr;
4367 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4368
4369 {
4370 USI tmp_address;
4371 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4372 {
4373 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4374 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4375 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4376 }
4377 {
4378 SI opval = tmp_address;
4379 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4380 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4381 }
4382 frvbf_force_update (current_cpu);
4383 }
4384
4385 return vpc;
4386 #undef FLD
4387 }
4388
4389 /* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4390
4391 static SEM_PC
4392 SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4393 {
4394 #define FLD(f) abuf->fields.sfmt_ldcu.f
4395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4396 int UNUSED written = 0;
4397 IADDR UNUSED pc = abuf->addr;
4398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4399
4400 {
4401 USI tmp_address;
4402 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4403 {
4404 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4405 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4406 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4407 }
4408 {
4409 SI opval = tmp_address;
4410 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4411 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4412 }
4413 frvbf_force_update (current_cpu);
4414 }
4415
4416 return vpc;
4417 #undef FLD
4418 }
4419
4420 /* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4421
4422 static SEM_PC
4423 SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4424 {
4425 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4427 int UNUSED written = 0;
4428 IADDR UNUSED pc = abuf->addr;
4429 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4430
4431 {
4432 BI tmp_do_op;
4433 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4434 if (tmp_do_op) {
4435 {
4436 USI tmp_address;
4437 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4438 {
4439 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4440 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4441 written |= (1 << 6);
4442 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4443 }
4444 {
4445 SI opval = tmp_address;
4446 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4447 written |= (1 << 7);
4448 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4449 }
4450 frvbf_force_update (current_cpu);
4451 }
4452 }
4453 }
4454
4455 abuf->written = written;
4456 return vpc;
4457 #undef FLD
4458 }
4459
4460 /* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4461
4462 static SEM_PC
4463 SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4464 {
4465 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4467 int UNUSED written = 0;
4468 IADDR UNUSED pc = abuf->addr;
4469 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4470
4471 {
4472 BI tmp_do_op;
4473 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4474 if (tmp_do_op) {
4475 {
4476 USI tmp_address;
4477 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4478 {
4479 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4480 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4481 written |= (1 << 6);
4482 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4483 }
4484 {
4485 SI opval = tmp_address;
4486 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4487 written |= (1 << 7);
4488 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4489 }
4490 frvbf_force_update (current_cpu);
4491 }
4492 }
4493 }
4494
4495 abuf->written = written;
4496 return vpc;
4497 #undef FLD
4498 }
4499
4500 /* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4501
4502 static SEM_PC
4503 SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4504 {
4505 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4507 int UNUSED written = 0;
4508 IADDR UNUSED pc = abuf->addr;
4509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4510
4511 {
4512 BI tmp_do_op;
4513 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4514 if (tmp_do_op) {
4515 {
4516 USI tmp_address;
4517 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4518 {
4519 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4520 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4521 written |= (1 << 6);
4522 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4523 }
4524 {
4525 SI opval = tmp_address;
4526 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4527 written |= (1 << 7);
4528 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4529 }
4530 frvbf_force_update (current_cpu);
4531 }
4532 }
4533 }
4534
4535 abuf->written = written;
4536 return vpc;
4537 #undef FLD
4538 }
4539
4540 /* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4541
4542 static SEM_PC
4543 SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4544 {
4545 #define FLD(f) abuf->fields.sfmt_clddu.f
4546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4547 int UNUSED written = 0;
4548 IADDR UNUSED pc = abuf->addr;
4549 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4550
4551 {
4552 SI tmp_address;
4553 if (NESI (FLD (f_GRk), 0)) {
4554 {
4555 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4556 {
4557 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4558 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4559 written |= (1 << 5);
4560 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4561 }
4562 }
4563 }
4564 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4565 {
4566 {
4567 SI opval = tmp_address;
4568 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4569 written |= (1 << 6);
4570 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4571 }
4572 frvbf_force_update (current_cpu);
4573 }
4574 }
4575 }
4576
4577 abuf->written = written;
4578 return vpc;
4579 #undef FLD
4580 }
4581
4582 /* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4583
4584 static SEM_PC
4585 SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4586 {
4587 #define FLD(f) abuf->fields.sfmt_clddu.f
4588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4589 int UNUSED written = 0;
4590 IADDR UNUSED pc = abuf->addr;
4591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4592
4593 {
4594 BI tmp_do_op;
4595 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4596 if (tmp_do_op) {
4597 {
4598 SI tmp_address;
4599 if (NESI (FLD (f_GRk), 0)) {
4600 {
4601 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4602 {
4603 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4604 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4605 written |= (1 << 6);
4606 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4607 }
4608 }
4609 }
4610 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4611 {
4612 {
4613 SI opval = tmp_address;
4614 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4615 written |= (1 << 7);
4616 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4617 }
4618 frvbf_force_update (current_cpu);
4619 }
4620 }
4621 }
4622 }
4623 }
4624
4625 abuf->written = written;
4626 return vpc;
4627 #undef FLD
4628 }
4629
4630 /* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4631
4632 static SEM_PC
4633 SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4634 {
4635 #define FLD(f) abuf->fields.sfmt_clddfu.f
4636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4637 int UNUSED written = 0;
4638 IADDR UNUSED pc = abuf->addr;
4639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4640
4641 {
4642 SI tmp_address;
4643 {
4644 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4645 {
4646 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4647 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4648 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4649 }
4650 }
4651 {
4652 SI opval = tmp_address;
4653 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4655 }
4656 frvbf_force_update (current_cpu);
4657 }
4658
4659 return vpc;
4660 #undef FLD
4661 }
4662
4663 /* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4664
4665 static SEM_PC
4666 SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4667 {
4668 #define FLD(f) abuf->fields.sfmt_lddcu.f
4669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4670 int UNUSED written = 0;
4671 IADDR UNUSED pc = abuf->addr;
4672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4673
4674 {
4675 SI tmp_address;
4676 {
4677 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4678 {
4679 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4680 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4681 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4682 }
4683 }
4684 {
4685 SI opval = tmp_address;
4686 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4687 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4688 }
4689 frvbf_force_update (current_cpu);
4690 }
4691
4692 return vpc;
4693 #undef FLD
4694 }
4695
4696 /* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4697
4698 static SEM_PC
4699 SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4700 {
4701 #define FLD(f) abuf->fields.sfmt_clddfu.f
4702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4703 int UNUSED written = 0;
4704 IADDR UNUSED pc = abuf->addr;
4705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4706
4707 {
4708 BI tmp_do_op;
4709 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4710 if (tmp_do_op) {
4711 {
4712 SI tmp_address;
4713 {
4714 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4715 {
4716 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4717 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4718 written |= (1 << 6);
4719 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4720 }
4721 }
4722 {
4723 SI opval = tmp_address;
4724 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4725 written |= (1 << 7);
4726 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4727 }
4728 frvbf_force_update (current_cpu);
4729 }
4730 }
4731 }
4732
4733 abuf->written = written;
4734 return vpc;
4735 #undef FLD
4736 }
4737
4738 /* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4739
4740 static SEM_PC
4741 SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4742 {
4743 #define FLD(f) abuf->fields.sfmt_cstdu.f
4744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4745 int UNUSED written = 0;
4746 IADDR UNUSED pc = abuf->addr;
4747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4748
4749 {
4750 SI tmp_address;
4751 {
4752 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4753 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4754 }
4755 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4756 {
4757 {
4758 SI opval = tmp_address;
4759 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4760 written |= (1 << 5);
4761 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4762 }
4763 frvbf_force_update (current_cpu);
4764 }
4765 }
4766 }
4767
4768 abuf->written = written;
4769 return vpc;
4770 #undef FLD
4771 }
4772
4773 /* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4774
4775 static SEM_PC
4776 SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4777 {
4778 #define FLD(f) abuf->fields.sfmt_cstdu.f
4779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4780 int UNUSED written = 0;
4781 IADDR UNUSED pc = abuf->addr;
4782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4783
4784 {
4785 BI tmp_do_op;
4786 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4787 if (tmp_do_op) {
4788 {
4789 SI tmp_address;
4790 {
4791 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4792 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4793 }
4794 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4795 {
4796 {
4797 SI opval = tmp_address;
4798 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4799 written |= (1 << 6);
4800 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4801 }
4802 frvbf_force_update (current_cpu);
4803 }
4804 }
4805 }
4806 }
4807 }
4808
4809 abuf->written = written;
4810 return vpc;
4811 #undef FLD
4812 }
4813
4814 /* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4815
4816 static SEM_PC
4817 SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4818 {
4819 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4821 int UNUSED written = 0;
4822 IADDR UNUSED pc = abuf->addr;
4823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4824
4825 {
4826 SI tmp_address;
4827 {
4828 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4829 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4830 }
4831 {
4832 SI opval = tmp_address;
4833 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4834 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4835 }
4836 frvbf_force_update (current_cpu);
4837 }
4838
4839 return vpc;
4840 #undef FLD
4841 }
4842
4843 /* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4844
4845 static SEM_PC
4846 SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4847 {
4848 #define FLD(f) abuf->fields.sfmt_stdcu.f
4849 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4850 int UNUSED written = 0;
4851 IADDR UNUSED pc = abuf->addr;
4852 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4853
4854 {
4855 SI tmp_address;
4856 {
4857 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4858 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4859 }
4860 {
4861 SI opval = tmp_address;
4862 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4863 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4864 }
4865 frvbf_force_update (current_cpu);
4866 }
4867
4868 return vpc;
4869 #undef FLD
4870 }
4871
4872 /* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4873
4874 static SEM_PC
4875 SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4876 {
4877 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4878 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4879 int UNUSED written = 0;
4880 IADDR UNUSED pc = abuf->addr;
4881 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4882
4883 {
4884 BI tmp_do_op;
4885 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4886 if (tmp_do_op) {
4887 {
4888 SI tmp_address;
4889 {
4890 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4891 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4892 }
4893 {
4894 SI opval = tmp_address;
4895 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4896 written |= (1 << 6);
4897 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4898 }
4899 frvbf_force_update (current_cpu);
4900 }
4901 }
4902 }
4903
4904 abuf->written = written;
4905 return vpc;
4906 #undef FLD
4907 }
4908
4909 /* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4910
4911 static SEM_PC
4912 SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4913 {
4914 #define FLD(f) abuf->fields.sfmt_swapi.f
4915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4916 int UNUSED written = 0;
4917 IADDR UNUSED pc = abuf->addr;
4918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4919
4920 {
4921 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4922 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4923 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4924 }
4925
4926 return vpc;
4927 #undef FLD
4928 }
4929
4930 /* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4931
4932 static SEM_PC
4933 SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4934 {
4935 #define FLD(f) abuf->fields.sfmt_swapi.f
4936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4937 int UNUSED written = 0;
4938 IADDR UNUSED pc = abuf->addr;
4939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4940
4941 {
4942 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4944 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4945 }
4946
4947 return vpc;
4948 #undef FLD
4949 }
4950
4951 /* ldi: ldi$pack @($GRi,$d12),$GRk */
4952
4953 static SEM_PC
4954 SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4955 {
4956 #define FLD(f) abuf->fields.sfmt_swapi.f
4957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4958 int UNUSED written = 0;
4959 IADDR UNUSED pc = abuf->addr;
4960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4961
4962 {
4963 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4964 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4965 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4966 }
4967
4968 return vpc;
4969 #undef FLD
4970 }
4971
4972 /* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4973
4974 static SEM_PC
4975 SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4976 {
4977 #define FLD(f) abuf->fields.sfmt_swapi.f
4978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4979 int UNUSED written = 0;
4980 IADDR UNUSED pc = abuf->addr;
4981 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4982
4983 {
4984 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4985 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4986 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4987 }
4988
4989 return vpc;
4990 #undef FLD
4991 }
4992
4993 /* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4994
4995 static SEM_PC
4996 SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4997 {
4998 #define FLD(f) abuf->fields.sfmt_swapi.f
4999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5000 int UNUSED written = 0;
5001 IADDR UNUSED pc = abuf->addr;
5002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5003
5004 {
5005 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5006 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5007 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5008 }
5009
5010 return vpc;
5011 #undef FLD
5012 }
5013
5014 /* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5015
5016 static SEM_PC
5017 SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5018 {
5019 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5020 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5021 int UNUSED written = 0;
5022 IADDR UNUSED pc = abuf->addr;
5023 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5024
5025 {
5026 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5027 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5028 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5029 }
5030
5031 return vpc;
5032 #undef FLD
5033 }
5034
5035 /* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5036
5037 static SEM_PC
5038 SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5039 {
5040 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5042 int UNUSED written = 0;
5043 IADDR UNUSED pc = abuf->addr;
5044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5045
5046 {
5047 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5048 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5049 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5050 }
5051
5052 return vpc;
5053 #undef FLD
5054 }
5055
5056 /* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5057
5058 static SEM_PC
5059 SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5060 {
5061 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5063 int UNUSED written = 0;
5064 IADDR UNUSED pc = abuf->addr;
5065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5066
5067 {
5068 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5069 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5070 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5071 }
5072
5073 return vpc;
5074 #undef FLD
5075 }
5076
5077 /* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5078
5079 static SEM_PC
5080 SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5081 {
5082 #define FLD(f) abuf->fields.sfmt_swapi.f
5083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5084 int UNUSED written = 0;
5085 IADDR UNUSED pc = abuf->addr;
5086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5087
5088 {
5089 BI tmp_do_op;
5090 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5091 if (tmp_do_op) {
5092 {
5093 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5094 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5095 written |= (1 << 5);
5096 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5097 }
5098 }
5099 }
5100
5101 abuf->written = written;
5102 return vpc;
5103 #undef FLD
5104 }
5105
5106 /* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5107
5108 static SEM_PC
5109 SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5110 {
5111 #define FLD(f) abuf->fields.sfmt_swapi.f
5112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5113 int UNUSED written = 0;
5114 IADDR UNUSED pc = abuf->addr;
5115 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5116
5117 {
5118 BI tmp_do_op;
5119 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5120 if (tmp_do_op) {
5121 {
5122 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5123 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5124 written |= (1 << 5);
5125 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5126 }
5127 }
5128 }
5129
5130 abuf->written = written;
5131 return vpc;
5132 #undef FLD
5133 }
5134
5135 /* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5136
5137 static SEM_PC
5138 SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5139 {
5140 #define FLD(f) abuf->fields.sfmt_swapi.f
5141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5142 int UNUSED written = 0;
5143 IADDR UNUSED pc = abuf->addr;
5144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5145
5146 {
5147 BI tmp_do_op;
5148 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5149 if (tmp_do_op) {
5150 {
5151 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5152 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5153 written |= (1 << 5);
5154 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5155 }
5156 }
5157 }
5158
5159 abuf->written = written;
5160 return vpc;
5161 #undef FLD
5162 }
5163
5164 /* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5165
5166 static SEM_PC
5167 SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5168 {
5169 #define FLD(f) abuf->fields.sfmt_swapi.f
5170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5171 int UNUSED written = 0;
5172 IADDR UNUSED pc = abuf->addr;
5173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5174
5175 {
5176 BI tmp_do_op;
5177 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5178 if (tmp_do_op) {
5179 {
5180 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5181 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5182 written |= (1 << 5);
5183 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5184 }
5185 }
5186 }
5187
5188 abuf->written = written;
5189 return vpc;
5190 #undef FLD
5191 }
5192
5193 /* nldi: nldi$pack @($GRi,$d12),$GRk */
5194
5195 static SEM_PC
5196 SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5197 {
5198 #define FLD(f) abuf->fields.sfmt_swapi.f
5199 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5200 int UNUSED written = 0;
5201 IADDR UNUSED pc = abuf->addr;
5202 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5203
5204 {
5205 BI tmp_do_op;
5206 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5207 if (tmp_do_op) {
5208 {
5209 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5210 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5211 written |= (1 << 5);
5212 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5213 }
5214 }
5215 }
5216
5217 abuf->written = written;
5218 return vpc;
5219 #undef FLD
5220 }
5221
5222 /* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5223
5224 static SEM_PC
5225 SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5226 {
5227 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5228 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5229 int UNUSED written = 0;
5230 IADDR UNUSED pc = abuf->addr;
5231 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5232
5233 {
5234 BI tmp_do_op;
5235 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5236 if (tmp_do_op) {
5237 {
5238 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5239 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5240 written |= (1 << 5);
5241 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5242 }
5243 }
5244 }
5245
5246 abuf->written = written;
5247 return vpc;
5248 #undef FLD
5249 }
5250
5251 /* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5252
5253 static SEM_PC
5254 SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5255 {
5256 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5258 int UNUSED written = 0;
5259 IADDR UNUSED pc = abuf->addr;
5260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5261
5262 {
5263 BI tmp_do_op;
5264 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5265 if (tmp_do_op) {
5266 {
5267 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5268 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5269 written |= (1 << 5);
5270 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5271 }
5272 }
5273 }
5274
5275 abuf->written = written;
5276 return vpc;
5277 #undef FLD
5278 }
5279
5280 /* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5281
5282 static SEM_PC
5283 SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5284 {
5285 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5286 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5287 int UNUSED written = 0;
5288 IADDR UNUSED pc = abuf->addr;
5289 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5290
5291 {
5292 BI tmp_do_op;
5293 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5294 if (tmp_do_op) {
5295 {
5296 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5297 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5298 written |= (1 << 5);
5299 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5300 }
5301 }
5302 }
5303
5304 abuf->written = written;
5305 return vpc;
5306 #undef FLD
5307 }
5308
5309 /* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5310
5311 static SEM_PC
5312 SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5313 {
5314 #define FLD(f) abuf->fields.sfmt_smuli.f
5315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5316 int UNUSED written = 0;
5317 IADDR UNUSED pc = abuf->addr;
5318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5319
5320 {
5321 SI tmp_address;
5322 if (NESI (FLD (f_GRk), 0)) {
5323 {
5324 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5325 {
5326 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5327 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5328 written |= (1 << 4);
5329 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5330 }
5331 }
5332 }
5333 }
5334
5335 abuf->written = written;
5336 return vpc;
5337 #undef FLD
5338 }
5339
5340 /* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5341
5342 static SEM_PC
5343 SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5344 {
5345 #define FLD(f) abuf->fields.sfmt_lddfi.f
5346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5347 int UNUSED written = 0;
5348 IADDR UNUSED pc = abuf->addr;
5349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5350
5351 {
5352 SI tmp_address;
5353 {
5354 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5355 {
5356 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5357 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5358 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5359 }
5360 }
5361 }
5362
5363 return vpc;
5364 #undef FLD
5365 }
5366
5367 /* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5368
5369 static SEM_PC
5370 SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5371 {
5372 #define FLD(f) abuf->fields.sfmt_smuli.f
5373 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5374 int UNUSED written = 0;
5375 IADDR UNUSED pc = abuf->addr;
5376 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5377
5378 {
5379 SI tmp_address;
5380 {
5381 BI tmp_do_op;
5382 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5383 if (tmp_do_op) {
5384 if (NESI (FLD (f_GRk), 0)) {
5385 {
5386 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5387 {
5388 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5389 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5390 written |= (1 << 5);
5391 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5392 }
5393 }
5394 }
5395 }
5396 }
5397 }
5398
5399 abuf->written = written;
5400 return vpc;
5401 #undef FLD
5402 }
5403
5404 /* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5405
5406 static SEM_PC
5407 SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5408 {
5409 #define FLD(f) abuf->fields.sfmt_lddfi.f
5410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5411 int UNUSED written = 0;
5412 IADDR UNUSED pc = abuf->addr;
5413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5414
5415 {
5416 SI tmp_address;
5417 {
5418 BI tmp_do_op;
5419 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5420 if (tmp_do_op) {
5421 {
5422 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5423 {
5424 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5425 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5426 written |= (1 << 5);
5427 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5428 }
5429 }
5430 }
5431 }
5432 }
5433
5434 abuf->written = written;
5435 return vpc;
5436 #undef FLD
5437 }
5438
5439 /* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5440
5441 static SEM_PC
5442 SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5443 {
5444 #define FLD(f) abuf->fields.sfmt_stdi.f
5445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5446 int UNUSED written = 0;
5447 IADDR UNUSED pc = abuf->addr;
5448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5449
5450 {
5451 SI tmp_address;
5452 {
5453 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5454 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5455 }
5456 }
5457
5458 return vpc;
5459 #undef FLD
5460 }
5461
5462 /* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5463
5464 static SEM_PC
5465 SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5466 {
5467 #define FLD(f) abuf->fields.sfmt_stdfi.f
5468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5469 int UNUSED written = 0;
5470 IADDR UNUSED pc = abuf->addr;
5471 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5472
5473 {
5474 SI tmp_address;
5475 {
5476 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5477 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5478 }
5479 }
5480
5481 return vpc;
5482 #undef FLD
5483 }
5484
5485 /* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5486
5487 static SEM_PC
5488 SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5489 {
5490 #define FLD(f) abuf->fields.sfmt_stdfi.f
5491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5492 int UNUSED written = 0;
5493 IADDR UNUSED pc = abuf->addr;
5494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5495
5496 {
5497 SI tmp_address;
5498 {
5499 BI tmp_do_op;
5500 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5501 if (tmp_do_op) {
5502 {
5503 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5504 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5505 }
5506 }
5507 }
5508 }
5509
5510 return vpc;
5511 #undef FLD
5512 }
5513
5514 /* stb: stb$pack $GRk,@($GRi,$GRj) */
5515
5516 static SEM_PC
5517 SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5518 {
5519 #define FLD(f) abuf->fields.sfmt_cswap.f
5520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5521 int UNUSED written = 0;
5522 IADDR UNUSED pc = abuf->addr;
5523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5524
5525 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)));
5526
5527 return vpc;
5528 #undef FLD
5529 }
5530
5531 /* sth: sth$pack $GRk,@($GRi,$GRj) */
5532
5533 static SEM_PC
5534 SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5535 {
5536 #define FLD(f) abuf->fields.sfmt_cswap.f
5537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5538 int UNUSED written = 0;
5539 IADDR UNUSED pc = abuf->addr;
5540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5541
5542 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)));
5543
5544 return vpc;
5545 #undef FLD
5546 }
5547
5548 /* st: st$pack $GRk,@($GRi,$GRj) */
5549
5550 static SEM_PC
5551 SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5552 {
5553 #define FLD(f) abuf->fields.sfmt_cswap.f
5554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5555 int UNUSED written = 0;
5556 IADDR UNUSED pc = abuf->addr;
5557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5558
5559 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)));
5560
5561 return vpc;
5562 #undef FLD
5563 }
5564
5565 /* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5566
5567 static SEM_PC
5568 SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5569 {
5570 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5572 int UNUSED written = 0;
5573 IADDR UNUSED pc = abuf->addr;
5574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5575
5576 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)));
5577
5578 return vpc;
5579 #undef FLD
5580 }
5581
5582 /* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5583
5584 static SEM_PC
5585 SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5586 {
5587 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5589 int UNUSED written = 0;
5590 IADDR UNUSED pc = abuf->addr;
5591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5592
5593 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)));
5594
5595 return vpc;
5596 #undef FLD
5597 }
5598
5599 /* stf: stf$pack $FRintk,@($GRi,$GRj) */
5600
5601 static SEM_PC
5602 SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5603 {
5604 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5606 int UNUSED written = 0;
5607 IADDR UNUSED pc = abuf->addr;
5608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5609
5610 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)));
5611
5612 return vpc;
5613 #undef FLD
5614 }
5615
5616 /* stc: stc$pack $CPRk,@($GRi,$GRj) */
5617
5618 static SEM_PC
5619 SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5620 {
5621 #define FLD(f) abuf->fields.sfmt_stcu.f
5622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5623 int UNUSED written = 0;
5624 IADDR UNUSED pc = abuf->addr;
5625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5626
5627 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)]));
5628
5629 return vpc;
5630 #undef FLD
5631 }
5632
5633 /* rstb: rstb$pack $GRk,@($GRi,$GRj) */
5634
5635 static SEM_PC
5636 SEM_FN_NAME (frvbf,rstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5637 {
5638 #define FLD(f) abuf->fields.sfmt_cswap.f
5639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5640 int UNUSED written = 0;
5641 IADDR UNUSED pc = abuf->addr;
5642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5643
5644 {
5645 SI tmp_address;
5646 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5647 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5648 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 1, 0);
5649 }
5650
5651 return vpc;
5652 #undef FLD
5653 }
5654
5655 /* rsth: rsth$pack $GRk,@($GRi,$GRj) */
5656
5657 static SEM_PC
5658 SEM_FN_NAME (frvbf,rsth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5659 {
5660 #define FLD(f) abuf->fields.sfmt_cswap.f
5661 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5662 int UNUSED written = 0;
5663 IADDR UNUSED pc = abuf->addr;
5664 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5665
5666 {
5667 SI tmp_address;
5668 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5669 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5670 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 2, 0);
5671 }
5672
5673 return vpc;
5674 #undef FLD
5675 }
5676
5677 /* rst: rst$pack $GRk,@($GRi,$GRj) */
5678
5679 static SEM_PC
5680 SEM_FN_NAME (frvbf,rst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5681 {
5682 #define FLD(f) abuf->fields.sfmt_cswap.f
5683 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5684 int UNUSED written = 0;
5685 IADDR UNUSED pc = abuf->addr;
5686 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5687
5688 {
5689 SI tmp_address;
5690 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5691 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5692 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 4, 0);
5693 }
5694
5695 return vpc;
5696 #undef FLD
5697 }
5698
5699 /* rstbf: rstbf$pack $FRintk,@($GRi,$GRj) */
5700
5701 static SEM_PC
5702 SEM_FN_NAME (frvbf,rstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5703 {
5704 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5706 int UNUSED written = 0;
5707 IADDR UNUSED pc = abuf->addr;
5708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5709
5710 {
5711 SI tmp_address;
5712 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5713 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5714 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 1, 1);
5715 }
5716
5717 return vpc;
5718 #undef FLD
5719 }
5720
5721 /* rsthf: rsthf$pack $FRintk,@($GRi,$GRj) */
5722
5723 static SEM_PC
5724 SEM_FN_NAME (frvbf,rsthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5725 {
5726 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5728 int UNUSED written = 0;
5729 IADDR UNUSED pc = abuf->addr;
5730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5731
5732 {
5733 SI tmp_address;
5734 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5735 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5736 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 2, 1);
5737 }
5738
5739 return vpc;
5740 #undef FLD
5741 }
5742
5743 /* rstf: rstf$pack $FRintk,@($GRi,$GRj) */
5744
5745 static SEM_PC
5746 SEM_FN_NAME (frvbf,rstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5747 {
5748 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5750 int UNUSED written = 0;
5751 IADDR UNUSED pc = abuf->addr;
5752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5753
5754 {
5755 SI tmp_address;
5756 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5757 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5758 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 4, 1);
5759 }
5760
5761 return vpc;
5762 #undef FLD
5763 }
5764
5765 /* std: std$pack $GRk,@($GRi,$GRj) */
5766
5767 static SEM_PC
5768 SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5769 {
5770 #define FLD(f) abuf->fields.sfmt_cstdu.f
5771 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5772 int UNUSED written = 0;
5773 IADDR UNUSED pc = abuf->addr;
5774 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5775
5776 {
5777 SI tmp_address;
5778 {
5779 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5780 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5781 }
5782 }
5783
5784 return vpc;
5785 #undef FLD
5786 }
5787
5788 /* stdf: stdf$pack $FRk,@($GRi,$GRj) */
5789
5790 static SEM_PC
5791 SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5792 {
5793 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5794 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5795 int UNUSED written = 0;
5796 IADDR UNUSED pc = abuf->addr;
5797 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5798
5799 {
5800 SI tmp_address;
5801 {
5802 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5803 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5804 }
5805 }
5806
5807 return vpc;
5808 #undef FLD
5809 }
5810
5811 /* stdc: stdc$pack $CPRk,@($GRi,$GRj) */
5812
5813 static SEM_PC
5814 SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5815 {
5816 #define FLD(f) abuf->fields.sfmt_stdcu.f
5817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5818 int UNUSED written = 0;
5819 IADDR UNUSED pc = abuf->addr;
5820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5821
5822 {
5823 SI tmp_address;
5824 {
5825 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5826 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5827 }
5828 }
5829
5830 return vpc;
5831 #undef FLD
5832 }
5833
5834 /* rstd: rstd$pack $GRk,@($GRi,$GRj) */
5835
5836 static SEM_PC
5837 SEM_FN_NAME (frvbf,rstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5838 {
5839 #define FLD(f) abuf->fields.sfmt_cstdu.f
5840 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5841 int UNUSED written = 0;
5842 IADDR UNUSED pc = abuf->addr;
5843 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5844
5845 {
5846 SI tmp_address;
5847 {
5848 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5849 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5850 }
5851 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 8, 0);
5852 }
5853
5854 return vpc;
5855 #undef FLD
5856 }
5857
5858 /* rstdf: rstdf$pack $FRk,@($GRi,$GRj) */
5859
5860 static SEM_PC
5861 SEM_FN_NAME (frvbf,rstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5862 {
5863 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5865 int UNUSED written = 0;
5866 IADDR UNUSED pc = abuf->addr;
5867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5868
5869 {
5870 SI tmp_address;
5871 {
5872 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5873 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5874 }
5875 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 8, 1);
5876 }
5877
5878 return vpc;
5879 #undef FLD
5880 }
5881
5882 /* stq: stq$pack $GRk,@($GRi,$GRj) */
5883
5884 static SEM_PC
5885 SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5886 {
5887 #define FLD(f) abuf->fields.sfmt_smulcc.f
5888 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5889 int UNUSED written = 0;
5890 IADDR UNUSED pc = abuf->addr;
5891 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5892
5893 {
5894 SI tmp_address;
5895 {
5896 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5897 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5898 }
5899 }
5900
5901 return vpc;
5902 #undef FLD
5903 }
5904
5905 /* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5906
5907 static SEM_PC
5908 SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5909 {
5910 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5912 int UNUSED written = 0;
5913 IADDR UNUSED pc = abuf->addr;
5914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5915
5916 {
5917 SI tmp_address;
5918 {
5919 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5920 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5921 }
5922 }
5923
5924 return vpc;
5925 #undef FLD
5926 }
5927
5928 /* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5929
5930 static SEM_PC
5931 SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5932 {
5933 #define FLD(f) abuf->fields.sfmt_stdcu.f
5934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5935 int UNUSED written = 0;
5936 IADDR UNUSED pc = abuf->addr;
5937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5938
5939 {
5940 SI tmp_address;
5941 {
5942 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5943 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5944 }
5945 }
5946
5947 return vpc;
5948 #undef FLD
5949 }
5950
5951 /* rstq: rstq$pack $GRk,@($GRi,$GRj) */
5952
5953 static SEM_PC
5954 SEM_FN_NAME (frvbf,rstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5955 {
5956 #define FLD(f) abuf->fields.sfmt_smulcc.f
5957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5958 int UNUSED written = 0;
5959 IADDR UNUSED pc = abuf->addr;
5960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5961
5962 {
5963 SI tmp_address;
5964 {
5965 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5966 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5967 }
5968 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_GRk), 16, 0);
5969 }
5970
5971 return vpc;
5972 #undef FLD
5973 }
5974
5975 /* rstqf: rstqf$pack $FRintk,@($GRi,$GRj) */
5976
5977 static SEM_PC
5978 SEM_FN_NAME (frvbf,rstqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5979 {
5980 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5982 int UNUSED written = 0;
5983 IADDR UNUSED pc = abuf->addr;
5984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5985
5986 {
5987 SI tmp_address;
5988 {
5989 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5990 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5991 }
5992 frvbf_check_recovering_store (current_cpu, tmp_address, FLD (f_FRk), 16, 1);
5993 }
5994
5995 return vpc;
5996 #undef FLD
5997 }
5998
5999 /* stbu: stbu$pack $GRk,@($GRi,$GRj) */
6000
6001 static SEM_PC
6002 SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6003 {
6004 #define FLD(f) abuf->fields.sfmt_cstbu.f
6005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6006 int UNUSED written = 0;
6007 IADDR UNUSED pc = abuf->addr;
6008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6009
6010 {
6011 USI tmp_address;
6012 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6013 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
6014 {
6015 SI opval = tmp_address;
6016 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6017 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6018 }
6019 }
6020
6021 return vpc;
6022 #undef FLD
6023 }
6024
6025 /* sthu: sthu$pack $GRk,@($GRi,$GRj) */
6026
6027 static SEM_PC
6028 SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6029 {
6030 #define FLD(f) abuf->fields.sfmt_cstbu.f
6031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6032 int UNUSED written = 0;
6033 IADDR UNUSED pc = abuf->addr;
6034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6035
6036 {
6037 USI tmp_address;
6038 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6039 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
6040 {
6041 SI opval = tmp_address;
6042 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6043 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6044 }
6045 }
6046
6047 return vpc;
6048 #undef FLD
6049 }
6050
6051 /* stu: stu$pack $GRk,@($GRi,$GRj) */
6052
6053 static SEM_PC
6054 SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6055 {
6056 #define FLD(f) abuf->fields.sfmt_cstbu.f
6057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6058 int UNUSED written = 0;
6059 IADDR UNUSED pc = abuf->addr;
6060 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6061
6062 {
6063 USI tmp_address;
6064 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6065 frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
6066 {
6067 SI opval = tmp_address;
6068 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6069 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6070 }
6071 }
6072
6073 return vpc;
6074 #undef FLD
6075 }
6076
6077 /* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
6078
6079 static SEM_PC
6080 SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6081 {
6082 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6084 int UNUSED written = 0;
6085 IADDR UNUSED pc = abuf->addr;
6086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6087
6088 {
6089 USI tmp_address;
6090 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6091 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
6092 {
6093 SI opval = tmp_address;
6094 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6095 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6096 }
6097 }
6098
6099 return vpc;
6100 #undef FLD
6101 }
6102
6103 /* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
6104
6105 static SEM_PC
6106 SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6107 {
6108 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6109 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6110 int UNUSED written = 0;
6111 IADDR UNUSED pc = abuf->addr;
6112 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6113
6114 {
6115 USI tmp_address;
6116 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6117 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
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 /* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
6130
6131 static SEM_PC
6132 SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6133 {
6134 #define FLD(f) abuf->fields.sfmt_cstbfu.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 USI tmp_address;
6142 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6143 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
6144 {
6145 SI opval = tmp_address;
6146 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6147 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6148 }
6149 }
6150
6151 return vpc;
6152 #undef FLD
6153 }
6154
6155 /* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
6156
6157 static SEM_PC
6158 SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6159 {
6160 #define FLD(f) abuf->fields.sfmt_stcu.f
6161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6162 int UNUSED written = 0;
6163 IADDR UNUSED pc = abuf->addr;
6164 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6165
6166 {
6167 USI tmp_address;
6168 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6169 frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
6170 {
6171 SI opval = tmp_address;
6172 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6173 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6174 }
6175 }
6176
6177 return vpc;
6178 #undef FLD
6179 }
6180
6181 /* stdu: stdu$pack $GRk,@($GRi,$GRj) */
6182
6183 static SEM_PC
6184 SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6185 {
6186 #define FLD(f) abuf->fields.sfmt_cstdu.f
6187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6188 int UNUSED written = 0;
6189 IADDR UNUSED pc = abuf->addr;
6190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6191
6192 {
6193 SI tmp_address;
6194 {
6195 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6196 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6197 }
6198 {
6199 SI opval = tmp_address;
6200 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6201 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6202 }
6203 }
6204
6205 return vpc;
6206 #undef FLD
6207 }
6208
6209 /* stdfu: stdfu$pack $FRk,@($GRi,$GRj) */
6210
6211 static SEM_PC
6212 SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6213 {
6214 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6216 int UNUSED written = 0;
6217 IADDR UNUSED pc = abuf->addr;
6218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6219
6220 {
6221 SI tmp_address;
6222 {
6223 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6224 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6225 }
6226 {
6227 SI opval = tmp_address;
6228 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6229 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6230 }
6231 }
6232
6233 return vpc;
6234 #undef FLD
6235 }
6236
6237 /* stdcu: stdcu$pack $CPRk,@($GRi,$GRj) */
6238
6239 static SEM_PC
6240 SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6241 {
6242 #define FLD(f) abuf->fields.sfmt_stdcu.f
6243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6244 int UNUSED written = 0;
6245 IADDR UNUSED pc = abuf->addr;
6246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6247
6248 {
6249 SI tmp_address;
6250 {
6251 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6252 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6253 }
6254 {
6255 SI opval = tmp_address;
6256 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6257 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6258 }
6259 }
6260
6261 return vpc;
6262 #undef FLD
6263 }
6264
6265 /* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6266
6267 static SEM_PC
6268 SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6269 {
6270 #define FLD(f) abuf->fields.sfmt_cstdu.f
6271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6272 int UNUSED written = 0;
6273 IADDR UNUSED pc = abuf->addr;
6274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6275
6276 {
6277 SI tmp_address;
6278 {
6279 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6280 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6281 }
6282 {
6283 SI opval = tmp_address;
6284 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6285 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6286 }
6287 }
6288
6289 return vpc;
6290 #undef FLD
6291 }
6292
6293 /* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6294
6295 static SEM_PC
6296 SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6297 {
6298 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6299 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6300 int UNUSED written = 0;
6301 IADDR UNUSED pc = abuf->addr;
6302 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6303
6304 {
6305 SI tmp_address;
6306 {
6307 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6308 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6309 }
6310 {
6311 SI opval = tmp_address;
6312 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6313 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6314 }
6315 }
6316
6317 return vpc;
6318 #undef FLD
6319 }
6320
6321 /* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6322
6323 static SEM_PC
6324 SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6325 {
6326 #define FLD(f) abuf->fields.sfmt_stdcu.f
6327 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6328 int UNUSED written = 0;
6329 IADDR UNUSED pc = abuf->addr;
6330 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6331
6332 {
6333 SI tmp_address;
6334 {
6335 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6336 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6337 }
6338 {
6339 SI opval = tmp_address;
6340 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6341 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6342 }
6343 }
6344
6345 return vpc;
6346 #undef FLD
6347 }
6348
6349 /* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6350
6351 static SEM_PC
6352 SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6353 {
6354 #define FLD(f) abuf->fields.sfmt_cswap.f
6355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6356 int UNUSED written = 0;
6357 IADDR UNUSED pc = abuf->addr;
6358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6359
6360 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6361 {
6362 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6363 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6364 written |= (1 << 5);
6365 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6366 }
6367 }
6368
6369 abuf->written = written;
6370 return vpc;
6371 #undef FLD
6372 }
6373
6374 /* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6375
6376 static SEM_PC
6377 SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6378 {
6379 #define FLD(f) abuf->fields.sfmt_cswap.f
6380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6381 int UNUSED written = 0;
6382 IADDR UNUSED pc = abuf->addr;
6383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6384
6385 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6386 {
6387 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6388 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6389 written |= (1 << 5);
6390 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6391 }
6392 }
6393
6394 abuf->written = written;
6395 return vpc;
6396 #undef FLD
6397 }
6398
6399 /* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6400
6401 static SEM_PC
6402 SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6403 {
6404 #define FLD(f) abuf->fields.sfmt_cswap.f
6405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6406 int UNUSED written = 0;
6407 IADDR UNUSED pc = abuf->addr;
6408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6409
6410 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6411 {
6412 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6413 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6414 written |= (1 << 5);
6415 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6416 }
6417 }
6418
6419 abuf->written = written;
6420 return vpc;
6421 #undef FLD
6422 }
6423
6424 /* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6425
6426 static SEM_PC
6427 SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6428 {
6429 #define FLD(f) abuf->fields.sfmt_cswap.f
6430 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6431 int UNUSED written = 0;
6432 IADDR UNUSED pc = abuf->addr;
6433 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6434
6435 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6436 {
6437 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6438 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6439 written |= (1 << 5);
6440 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6441 }
6442 }
6443
6444 abuf->written = written;
6445 return vpc;
6446 #undef FLD
6447 }
6448
6449 /* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6450
6451 static SEM_PC
6452 SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6453 {
6454 #define FLD(f) abuf->fields.sfmt_cswap.f
6455 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6456 int UNUSED written = 0;
6457 IADDR UNUSED pc = abuf->addr;
6458 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6459
6460 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6461 {
6462 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6463 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6464 written |= (1 << 5);
6465 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6466 }
6467 }
6468
6469 abuf->written = written;
6470 return vpc;
6471 #undef FLD
6472 }
6473
6474 /* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6475
6476 static SEM_PC
6477 SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6478 {
6479 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6481 int UNUSED written = 0;
6482 IADDR UNUSED pc = abuf->addr;
6483 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6484
6485 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6486 {
6487 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6488 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6489 written |= (1 << 5);
6490 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6491 }
6492 }
6493
6494 abuf->written = written;
6495 return vpc;
6496 #undef FLD
6497 }
6498
6499 /* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6500
6501 static SEM_PC
6502 SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6503 {
6504 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6506 int UNUSED written = 0;
6507 IADDR UNUSED pc = abuf->addr;
6508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6509
6510 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6511 {
6512 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6513 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6514 written |= (1 << 5);
6515 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6516 }
6517 }
6518
6519 abuf->written = written;
6520 return vpc;
6521 #undef FLD
6522 }
6523
6524 /* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6525
6526 static SEM_PC
6527 SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6528 {
6529 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6531 int UNUSED written = 0;
6532 IADDR UNUSED pc = abuf->addr;
6533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6534
6535 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6536 {
6537 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6538 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6539 written |= (1 << 5);
6540 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6541 }
6542 }
6543
6544 abuf->written = written;
6545 return vpc;
6546 #undef FLD
6547 }
6548
6549 /* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6550
6551 static SEM_PC
6552 SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6553 {
6554 #define FLD(f) abuf->fields.sfmt_clddu.f
6555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6556 int UNUSED written = 0;
6557 IADDR UNUSED pc = abuf->addr;
6558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6559
6560 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6561 {
6562 SI tmp_address;
6563 if (NESI (FLD (f_GRk), 0)) {
6564 {
6565 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6566 {
6567 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6568 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6569 written |= (1 << 6);
6570 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6571 }
6572 }
6573 }
6574 }
6575 }
6576
6577 abuf->written = written;
6578 return vpc;
6579 #undef FLD
6580 }
6581
6582 /* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6583
6584 static SEM_PC
6585 SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6586 {
6587 #define FLD(f) abuf->fields.sfmt_clddfu.f
6588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6589 int UNUSED written = 0;
6590 IADDR UNUSED pc = abuf->addr;
6591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6592
6593 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6594 {
6595 SI tmp_address;
6596 {
6597 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6598 {
6599 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6600 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6601 written |= (1 << 5);
6602 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6603 }
6604 }
6605 }
6606 }
6607
6608 abuf->written = written;
6609 return vpc;
6610 #undef FLD
6611 }
6612
6613 /* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6614
6615 static SEM_PC
6616 SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6617 {
6618 #define FLD(f) abuf->fields.sfmt_cswap.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 {
6628 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6629 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6630 }
6631 }
6632 }
6633
6634 return vpc;
6635 #undef FLD
6636 }
6637
6638 /* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6639
6640 static SEM_PC
6641 SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6642 {
6643 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6645 int UNUSED written = 0;
6646 IADDR UNUSED pc = abuf->addr;
6647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6648
6649 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6650 {
6651 SI tmp_address;
6652 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6653 {
6654 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6655 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6656 written |= (1 << 8);
6657 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6658 }
6659 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6660 {
6661 SI opval = tmp_address;
6662 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6663 written |= (1 << 7);
6664 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6665 }
6666 }
6667 }
6668 }
6669
6670 abuf->written = written;
6671 return vpc;
6672 #undef FLD
6673 }
6674
6675 /* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6676
6677 static SEM_PC
6678 SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6679 {
6680 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6682 int UNUSED written = 0;
6683 IADDR UNUSED pc = abuf->addr;
6684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6685
6686 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6687 {
6688 SI tmp_address;
6689 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6690 {
6691 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6692 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6693 written |= (1 << 8);
6694 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6695 }
6696 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6697 {
6698 SI opval = tmp_address;
6699 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6700 written |= (1 << 7);
6701 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6702 }
6703 }
6704 }
6705 }
6706
6707 abuf->written = written;
6708 return vpc;
6709 #undef FLD
6710 }
6711
6712 /* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6713
6714 static SEM_PC
6715 SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6716 {
6717 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6719 int UNUSED written = 0;
6720 IADDR UNUSED pc = abuf->addr;
6721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6722
6723 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6724 {
6725 SI tmp_address;
6726 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6727 {
6728 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6729 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6730 written |= (1 << 8);
6731 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6732 }
6733 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6734 {
6735 SI opval = tmp_address;
6736 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6737 written |= (1 << 7);
6738 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6739 }
6740 }
6741 }
6742 }
6743
6744 abuf->written = written;
6745 return vpc;
6746 #undef FLD
6747 }
6748
6749 /* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6750
6751 static SEM_PC
6752 SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6753 {
6754 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6756 int UNUSED written = 0;
6757 IADDR UNUSED pc = abuf->addr;
6758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6759
6760 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6761 {
6762 SI tmp_address;
6763 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6764 {
6765 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6766 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6767 written |= (1 << 8);
6768 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6769 }
6770 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6771 {
6772 SI opval = tmp_address;
6773 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6774 written |= (1 << 7);
6775 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6776 }
6777 }
6778 }
6779 }
6780
6781 abuf->written = written;
6782 return vpc;
6783 #undef FLD
6784 }
6785
6786 /* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6787
6788 static SEM_PC
6789 SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6790 {
6791 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6792 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6793 int UNUSED written = 0;
6794 IADDR UNUSED pc = abuf->addr;
6795 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6796
6797 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6798 {
6799 SI tmp_address;
6800 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6801 {
6802 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6803 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6804 written |= (1 << 8);
6805 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6806 }
6807 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6808 {
6809 SI opval = tmp_address;
6810 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6811 written |= (1 << 7);
6812 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6813 }
6814 }
6815 }
6816 }
6817
6818 abuf->written = written;
6819 return vpc;
6820 #undef FLD
6821 }
6822
6823 /* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6824
6825 static SEM_PC
6826 SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6827 {
6828 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6829 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6830 int UNUSED written = 0;
6831 IADDR UNUSED pc = abuf->addr;
6832 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6833
6834 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6835 {
6836 SI tmp_address;
6837 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6838 {
6839 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6840 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6841 written |= (1 << 5);
6842 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6843 }
6844 {
6845 SI opval = tmp_address;
6846 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6847 written |= (1 << 6);
6848 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6849 }
6850 }
6851 }
6852
6853 abuf->written = written;
6854 return vpc;
6855 #undef FLD
6856 }
6857
6858 /* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6859
6860 static SEM_PC
6861 SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6862 {
6863 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6865 int UNUSED written = 0;
6866 IADDR UNUSED pc = abuf->addr;
6867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6868
6869 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6870 {
6871 SI tmp_address;
6872 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6873 {
6874 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6875 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6876 written |= (1 << 5);
6877 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6878 }
6879 {
6880 SI opval = tmp_address;
6881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6882 written |= (1 << 6);
6883 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6884 }
6885 }
6886 }
6887
6888 abuf->written = written;
6889 return vpc;
6890 #undef FLD
6891 }
6892
6893 /* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6894
6895 static SEM_PC
6896 SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6897 {
6898 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6899 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6900 int UNUSED written = 0;
6901 IADDR UNUSED pc = abuf->addr;
6902 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6903
6904 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6905 {
6906 SI tmp_address;
6907 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6908 {
6909 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6910 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6911 written |= (1 << 5);
6912 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6913 }
6914 {
6915 SI opval = tmp_address;
6916 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6917 written |= (1 << 6);
6918 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6919 }
6920 }
6921 }
6922
6923 abuf->written = written;
6924 return vpc;
6925 #undef FLD
6926 }
6927
6928 /* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6929
6930 static SEM_PC
6931 SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6932 {
6933 #define FLD(f) abuf->fields.sfmt_clddu.f
6934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6935 int UNUSED written = 0;
6936 IADDR UNUSED pc = abuf->addr;
6937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6938
6939 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6940 {
6941 SI tmp_address;
6942 if (NESI (FLD (f_GRk), 0)) {
6943 {
6944 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6945 {
6946 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6947 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6948 written |= (1 << 7);
6949 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6950 }
6951 }
6952 }
6953 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6954 {
6955 SI opval = tmp_address;
6956 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6957 written |= (1 << 8);
6958 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6959 }
6960 }
6961 }
6962 }
6963
6964 abuf->written = written;
6965 return vpc;
6966 #undef FLD
6967 }
6968
6969 /* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6970
6971 static SEM_PC
6972 SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6973 {
6974 #define FLD(f) abuf->fields.sfmt_clddfu.f
6975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6976 int UNUSED written = 0;
6977 IADDR UNUSED pc = abuf->addr;
6978 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6979
6980 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6981 {
6982 SI tmp_address;
6983 {
6984 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6985 {
6986 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6987 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6988 written |= (1 << 5);
6989 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6990 }
6991 }
6992 {
6993 SI opval = tmp_address;
6994 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6995 written |= (1 << 6);
6996 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6997 }
6998 }
6999 }
7000
7001 abuf->written = written;
7002 return vpc;
7003 #undef FLD
7004 }
7005
7006 /* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7007
7008 static SEM_PC
7009 SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7010 {
7011 #define FLD(f) abuf->fields.sfmt_cstdu.f
7012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7013 int UNUSED written = 0;
7014 IADDR UNUSED pc = abuf->addr;
7015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7016
7017 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7018 {
7019 SI tmp_address;
7020 {
7021 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7022 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7023 }
7024 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
7025 {
7026 SI opval = tmp_address;
7027 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7028 written |= (1 << 7);
7029 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7030 }
7031 }
7032 }
7033 }
7034
7035 abuf->written = written;
7036 return vpc;
7037 #undef FLD
7038 }
7039
7040 /* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7041
7042 static SEM_PC
7043 SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7044 {
7045 #define FLD(f) abuf->fields.sfmt_cswap.f
7046 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7047 int UNUSED written = 0;
7048 IADDR UNUSED pc = abuf->addr;
7049 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7050
7051 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7052 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)));
7053 }
7054
7055 return vpc;
7056 #undef FLD
7057 }
7058
7059 /* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7060
7061 static SEM_PC
7062 SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7063 {
7064 #define FLD(f) abuf->fields.sfmt_cswap.f
7065 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7066 int UNUSED written = 0;
7067 IADDR UNUSED pc = abuf->addr;
7068 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7069
7070 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7071 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)));
7072 }
7073
7074 return vpc;
7075 #undef FLD
7076 }
7077
7078 /* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7079
7080 static SEM_PC
7081 SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7082 {
7083 #define FLD(f) abuf->fields.sfmt_cswap.f
7084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7085 int UNUSED written = 0;
7086 IADDR UNUSED pc = abuf->addr;
7087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7088
7089 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7090 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)));
7091 }
7092
7093 return vpc;
7094 #undef FLD
7095 }
7096
7097 /* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7098
7099 static SEM_PC
7100 SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7101 {
7102 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7104 int UNUSED written = 0;
7105 IADDR UNUSED pc = abuf->addr;
7106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7107
7108 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7109 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)));
7110 }
7111
7112 return vpc;
7113 #undef FLD
7114 }
7115
7116 /* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7117
7118 static SEM_PC
7119 SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7120 {
7121 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7123 int UNUSED written = 0;
7124 IADDR UNUSED pc = abuf->addr;
7125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7126
7127 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7128 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)));
7129 }
7130
7131 return vpc;
7132 #undef FLD
7133 }
7134
7135 /* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7136
7137 static SEM_PC
7138 SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7139 {
7140 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7142 int UNUSED written = 0;
7143 IADDR UNUSED pc = abuf->addr;
7144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7145
7146 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7147 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)));
7148 }
7149
7150 return vpc;
7151 #undef FLD
7152 }
7153
7154 /* cstd: cstd$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7155
7156 static SEM_PC
7157 SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7158 {
7159 #define FLD(f) abuf->fields.sfmt_cstdu.f
7160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7161 int UNUSED written = 0;
7162 IADDR UNUSED pc = abuf->addr;
7163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7164
7165 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7166 {
7167 SI tmp_address;
7168 {
7169 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7170 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7171 }
7172 }
7173 }
7174
7175 return vpc;
7176 #undef FLD
7177 }
7178
7179 /* cstdf: cstdf$pack $FRk,@($GRi,$GRj),$CCi,$cond */
7180
7181 static SEM_PC
7182 SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7183 {
7184 #define FLD(f) abuf->fields.sfmt_cstdfu.f
7185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7186 int UNUSED written = 0;
7187 IADDR UNUSED pc = abuf->addr;
7188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7189
7190 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7191 {
7192 SI tmp_address;
7193 {
7194 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7195 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7196 }
7197 }
7198 }
7199
7200 return vpc;
7201 #undef FLD
7202 }
7203
7204 /* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7205
7206 static SEM_PC
7207 SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7208 {
7209 #define FLD(f) abuf->fields.sfmt_cswap.f
7210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7211 int UNUSED written = 0;
7212 IADDR UNUSED pc = abuf->addr;
7213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7214
7215 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7216 {
7217 SI tmp_address;
7218 {
7219 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7220 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7221 }
7222 }
7223 }
7224
7225 return vpc;
7226 #undef FLD
7227 }
7228
7229 /* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7230
7231 static SEM_PC
7232 SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7233 {
7234 #define FLD(f) abuf->fields.sfmt_cstbu.f
7235 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7236 int UNUSED written = 0;
7237 IADDR UNUSED pc = abuf->addr;
7238 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7239
7240 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7241 {
7242 SI tmp_address;
7243 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7244 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7245 {
7246 SI opval = tmp_address;
7247 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7248 written |= (1 << 6);
7249 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7250 }
7251 }
7252 }
7253
7254 abuf->written = written;
7255 return vpc;
7256 #undef FLD
7257 }
7258
7259 /* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7260
7261 static SEM_PC
7262 SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7263 {
7264 #define FLD(f) abuf->fields.sfmt_cstbu.f
7265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7266 int UNUSED written = 0;
7267 IADDR UNUSED pc = abuf->addr;
7268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7269
7270 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7271 {
7272 SI tmp_address;
7273 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7274 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7275 {
7276 SI opval = tmp_address;
7277 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7278 written |= (1 << 6);
7279 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7280 }
7281 }
7282 }
7283
7284 abuf->written = written;
7285 return vpc;
7286 #undef FLD
7287 }
7288
7289 /* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7290
7291 static SEM_PC
7292 SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7293 {
7294 #define FLD(f) abuf->fields.sfmt_cstbu.f
7295 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7296 int UNUSED written = 0;
7297 IADDR UNUSED pc = abuf->addr;
7298 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7299
7300 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7301 {
7302 SI tmp_address;
7303 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7304 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7305 {
7306 SI opval = tmp_address;
7307 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7308 written |= (1 << 6);
7309 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7310 }
7311 }
7312 }
7313
7314 abuf->written = written;
7315 return vpc;
7316 #undef FLD
7317 }
7318
7319 /* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7320
7321 static SEM_PC
7322 SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7323 {
7324 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7325 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7326 int UNUSED written = 0;
7327 IADDR UNUSED pc = abuf->addr;
7328 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7329
7330 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7331 {
7332 SI tmp_address;
7333 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7334 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7335 {
7336 SI opval = tmp_address;
7337 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7338 written |= (1 << 6);
7339 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7340 }
7341 }
7342 }
7343
7344 abuf->written = written;
7345 return vpc;
7346 #undef FLD
7347 }
7348
7349 /* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7350
7351 static SEM_PC
7352 SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7353 {
7354 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7356 int UNUSED written = 0;
7357 IADDR UNUSED pc = abuf->addr;
7358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7359
7360 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7361 {
7362 SI tmp_address;
7363 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7364 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7365 {
7366 SI opval = tmp_address;
7367 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7368 written |= (1 << 6);
7369 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7370 }
7371 }
7372 }
7373
7374 abuf->written = written;
7375 return vpc;
7376 #undef FLD
7377 }
7378
7379 /* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7380
7381 static SEM_PC
7382 SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7383 {
7384 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7385 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7386 int UNUSED written = 0;
7387 IADDR UNUSED pc = abuf->addr;
7388 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7389
7390 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7391 {
7392 SI tmp_address;
7393 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7394 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7395 {
7396 SI opval = tmp_address;
7397 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7398 written |= (1 << 6);
7399 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7400 }
7401 }
7402 }
7403
7404 abuf->written = written;
7405 return vpc;
7406 #undef FLD
7407 }
7408
7409 /* cstdu: cstdu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7410
7411 static SEM_PC
7412 SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7413 {
7414 #define FLD(f) abuf->fields.sfmt_cstdu.f
7415 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7416 int UNUSED written = 0;
7417 IADDR UNUSED pc = abuf->addr;
7418 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7419
7420 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7421 {
7422 SI tmp_address;
7423 {
7424 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7425 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7426 }
7427 {
7428 SI opval = tmp_address;
7429 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7430 written |= (1 << 6);
7431 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7432 }
7433 }
7434 }
7435
7436 abuf->written = written;
7437 return vpc;
7438 #undef FLD
7439 }
7440
7441 /* cstdfu: cstdfu$pack $FRk,@($GRi,$GRj),$CCi,$cond */
7442
7443 static SEM_PC
7444 SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7445 {
7446 #define FLD(f) abuf->fields.sfmt_cstdfu.f
7447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7448 int UNUSED written = 0;
7449 IADDR UNUSED pc = abuf->addr;
7450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7451
7452 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7453 {
7454 SI tmp_address;
7455 {
7456 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7457 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7458 }
7459 {
7460 SI opval = tmp_address;
7461 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7462 written |= (1 << 6);
7463 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7464 }
7465 }
7466 }
7467
7468 abuf->written = written;
7469 return vpc;
7470 #undef FLD
7471 }
7472
7473 /* stbi: stbi$pack $GRk,@($GRi,$d12) */
7474
7475 static SEM_PC
7476 SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7477 {
7478 #define FLD(f) abuf->fields.sfmt_swapi.f
7479 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7480 int UNUSED written = 0;
7481 IADDR UNUSED pc = abuf->addr;
7482 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7483
7484 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7485
7486 return vpc;
7487 #undef FLD
7488 }
7489
7490 /* sthi: sthi$pack $GRk,@($GRi,$d12) */
7491
7492 static SEM_PC
7493 SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7494 {
7495 #define FLD(f) abuf->fields.sfmt_swapi.f
7496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7497 int UNUSED written = 0;
7498 IADDR UNUSED pc = abuf->addr;
7499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7500
7501 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7502
7503 return vpc;
7504 #undef FLD
7505 }
7506
7507 /* sti: sti$pack $GRk,@($GRi,$d12) */
7508
7509 static SEM_PC
7510 SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7511 {
7512 #define FLD(f) abuf->fields.sfmt_swapi.f
7513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7514 int UNUSED written = 0;
7515 IADDR UNUSED pc = abuf->addr;
7516 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7517
7518 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7519
7520 return vpc;
7521 #undef FLD
7522 }
7523
7524 /* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7525
7526 static SEM_PC
7527 SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7528 {
7529 #define FLD(f) abuf->fields.sfmt_stbfi.f
7530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7531 int UNUSED written = 0;
7532 IADDR UNUSED pc = abuf->addr;
7533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7534
7535 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7536
7537 return vpc;
7538 #undef FLD
7539 }
7540
7541 /* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7542
7543 static SEM_PC
7544 SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7545 {
7546 #define FLD(f) abuf->fields.sfmt_stbfi.f
7547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7548 int UNUSED written = 0;
7549 IADDR UNUSED pc = abuf->addr;
7550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7551
7552 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7553
7554 return vpc;
7555 #undef FLD
7556 }
7557
7558 /* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7559
7560 static SEM_PC
7561 SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7562 {
7563 #define FLD(f) abuf->fields.sfmt_stbfi.f
7564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7565 int UNUSED written = 0;
7566 IADDR UNUSED pc = abuf->addr;
7567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7568
7569 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7570
7571 return vpc;
7572 #undef FLD
7573 }
7574
7575 /* stdi: stdi$pack $GRk,@($GRi,$d12) */
7576
7577 static SEM_PC
7578 SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7579 {
7580 #define FLD(f) abuf->fields.sfmt_stdi.f
7581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7582 int UNUSED written = 0;
7583 IADDR UNUSED pc = abuf->addr;
7584 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7585
7586 {
7587 SI tmp_address;
7588 {
7589 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7590 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7591 }
7592 }
7593
7594 return vpc;
7595 #undef FLD
7596 }
7597
7598 /* stdfi: stdfi$pack $FRk,@($GRi,$d12) */
7599
7600 static SEM_PC
7601 SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7602 {
7603 #define FLD(f) abuf->fields.sfmt_stdfi.f
7604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7605 int UNUSED written = 0;
7606 IADDR UNUSED pc = abuf->addr;
7607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7608
7609 {
7610 SI tmp_address;
7611 {
7612 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7613 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7614 }
7615 }
7616
7617 return vpc;
7618 #undef FLD
7619 }
7620
7621 /* stqi: stqi$pack $GRk,@($GRi,$d12) */
7622
7623 static SEM_PC
7624 SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7625 {
7626 #define FLD(f) abuf->fields.sfmt_stdi.f
7627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7628 int UNUSED written = 0;
7629 IADDR UNUSED pc = abuf->addr;
7630 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7631
7632 {
7633 SI tmp_address;
7634 {
7635 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7636 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7637 }
7638 }
7639
7640 return vpc;
7641 #undef FLD
7642 }
7643
7644 /* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7645
7646 static SEM_PC
7647 SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7648 {
7649 #define FLD(f) abuf->fields.sfmt_stdfi.f
7650 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7651 int UNUSED written = 0;
7652 IADDR UNUSED pc = abuf->addr;
7653 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7654
7655 {
7656 SI tmp_address;
7657 {
7658 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7659 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7660 }
7661 }
7662
7663 return vpc;
7664 #undef FLD
7665 }
7666
7667 /* swap: swap$pack @($GRi,$GRj),$GRk */
7668
7669 static SEM_PC
7670 SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7671 {
7672 #define FLD(f) abuf->fields.sfmt_cswap.f
7673 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7674 int UNUSED written = 0;
7675 IADDR UNUSED pc = abuf->addr;
7676 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7677
7678 {
7679 SI tmp_tmp;
7680 SI tmp_address;
7681 tmp_tmp = GET_H_GR (FLD (f_GRk));
7682 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7683 frvbf_check_swap_address (current_cpu, tmp_address);
7684 {
7685 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7686 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7687 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7688 }
7689 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7690 }
7691
7692 return vpc;
7693 #undef FLD
7694 }
7695
7696 /* swapi: swapi$pack @($GRi,$d12),$GRk */
7697
7698 static SEM_PC
7699 SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7700 {
7701 #define FLD(f) abuf->fields.sfmt_swapi.f
7702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7703 int UNUSED written = 0;
7704 IADDR UNUSED pc = abuf->addr;
7705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7706
7707 {
7708 SI tmp_tmp;
7709 SI tmp_address;
7710 tmp_tmp = GET_H_GR (FLD (f_GRk));
7711 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7712 frvbf_check_swap_address (current_cpu, tmp_address);
7713 {
7714 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7715 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7716 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7717 }
7718 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7719 }
7720
7721 return vpc;
7722 #undef FLD
7723 }
7724
7725 /* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7726
7727 static SEM_PC
7728 SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7729 {
7730 #define FLD(f) abuf->fields.sfmt_cswap.f
7731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7732 int UNUSED written = 0;
7733 IADDR UNUSED pc = abuf->addr;
7734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7735
7736 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7737 {
7738 SI tmp_tmp;
7739 SI tmp_address;
7740 tmp_tmp = GET_H_GR (FLD (f_GRk));
7741 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7742 frvbf_check_swap_address (current_cpu, tmp_address);
7743 {
7744 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7745 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7746 written |= (1 << 6);
7747 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7748 }
7749 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7750 }
7751 }
7752
7753 abuf->written = written;
7754 return vpc;
7755 #undef FLD
7756 }
7757
7758 /* movgf: movgf$pack $GRj,$FRintk */
7759
7760 static SEM_PC
7761 SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7762 {
7763 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7764 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7765 int UNUSED written = 0;
7766 IADDR UNUSED pc = abuf->addr;
7767 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7768
7769 {
7770 SI opval = GET_H_GR (FLD (f_GRj));
7771 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7772 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7773 }
7774
7775 return vpc;
7776 #undef FLD
7777 }
7778
7779 /* movfg: movfg$pack $FRintk,$GRj */
7780
7781 static SEM_PC
7782 SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7783 {
7784 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7786 int UNUSED written = 0;
7787 IADDR UNUSED pc = abuf->addr;
7788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7789
7790 {
7791 SI opval = GET_H_FR_INT (FLD (f_FRk));
7792 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7793 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7794 }
7795
7796 return vpc;
7797 #undef FLD
7798 }
7799
7800 /* movgfd: movgfd$pack $GRj,$FRintk */
7801
7802 static SEM_PC
7803 SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7804 {
7805 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7807 int UNUSED written = 0;
7808 IADDR UNUSED pc = abuf->addr;
7809 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7810
7811 if (EQSI (FLD (f_GRj), 0)) {
7812 {
7813 {
7814 SI opval = 0;
7815 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7816 written |= (1 << 4);
7817 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7818 }
7819 {
7820 USI opval = 0;
7821 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7822 written |= (1 << 5);
7823 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7824 }
7825 }
7826 } else {
7827 {
7828 {
7829 SI opval = GET_H_GR (FLD (f_GRj));
7830 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7831 written |= (1 << 4);
7832 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7833 }
7834 {
7835 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7836 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7837 written |= (1 << 5);
7838 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7839 }
7840 }
7841 }
7842
7843 abuf->written = written;
7844 return vpc;
7845 #undef FLD
7846 }
7847
7848 /* movfgd: movfgd$pack $FRintk,$GRj */
7849
7850 static SEM_PC
7851 SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7852 {
7853 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7854 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7855 int UNUSED written = 0;
7856 IADDR UNUSED pc = abuf->addr;
7857 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7858
7859 if (NESI (FLD (f_GRj), 0)) {
7860 {
7861 {
7862 SI opval = GET_H_FR_INT (FLD (f_FRk));
7863 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7864 written |= (1 << 4);
7865 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7866 }
7867 {
7868 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7869 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7870 written |= (1 << 5);
7871 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7872 }
7873 }
7874 }
7875
7876 abuf->written = written;
7877 return vpc;
7878 #undef FLD
7879 }
7880
7881 /* movgfq: movgfq$pack $GRj,$FRintk */
7882
7883 static SEM_PC
7884 SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7885 {
7886 #define FLD(f) abuf->fields.sfmt_movgfq.f
7887 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7888 int UNUSED written = 0;
7889 IADDR UNUSED pc = abuf->addr;
7890 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7891
7892 if (EQSI (FLD (f_GRj), 0)) {
7893 {
7894 {
7895 SI opval = 0;
7896 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7897 written |= (1 << 6);
7898 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7899 }
7900 {
7901 USI opval = 0;
7902 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7903 written |= (1 << 7);
7904 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7905 }
7906 {
7907 USI opval = 0;
7908 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7909 written |= (1 << 8);
7910 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7911 }
7912 {
7913 USI opval = 0;
7914 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7915 written |= (1 << 9);
7916 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7917 }
7918 }
7919 } else {
7920 {
7921 {
7922 SI opval = GET_H_GR (FLD (f_GRj));
7923 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7924 written |= (1 << 6);
7925 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7926 }
7927 {
7928 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7929 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7930 written |= (1 << 7);
7931 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7932 }
7933 {
7934 USI opval = GET_H_GR (((FLD (f_GRj)) + (2)));
7935 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7936 written |= (1 << 8);
7937 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7938 }
7939 {
7940 USI opval = GET_H_GR (((FLD (f_GRj)) + (3)));
7941 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7942 written |= (1 << 9);
7943 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7944 }
7945 }
7946 }
7947
7948 abuf->written = written;
7949 return vpc;
7950 #undef FLD
7951 }
7952
7953 /* movfgq: movfgq$pack $FRintk,$GRj */
7954
7955 static SEM_PC
7956 SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7957 {
7958 #define FLD(f) abuf->fields.sfmt_movfgq.f
7959 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7960 int UNUSED written = 0;
7961 IADDR UNUSED pc = abuf->addr;
7962 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7963
7964 if (NESI (FLD (f_GRj), 0)) {
7965 {
7966 {
7967 SI opval = GET_H_FR_INT (FLD (f_FRk));
7968 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7969 written |= (1 << 6);
7970 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7971 }
7972 {
7973 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7974 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7975 written |= (1 << 7);
7976 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7977 }
7978 {
7979 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (2)));
7980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (2)), opval);
7981 written |= (1 << 8);
7982 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7983 }
7984 {
7985 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (3)));
7986 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (3)), opval);
7987 written |= (1 << 9);
7988 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7989 }
7990 }
7991 }
7992
7993 abuf->written = written;
7994 return vpc;
7995 #undef FLD
7996 }
7997
7998 /* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7999
8000 static SEM_PC
8001 SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8002 {
8003 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
8004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8005 int UNUSED written = 0;
8006 IADDR UNUSED pc = abuf->addr;
8007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8008
8009 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
8010 {
8011 SI opval = GET_H_GR (FLD (f_GRj));
8012 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
8013 written |= (1 << 3);
8014 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
8015 }
8016 }
8017
8018 abuf->written = written;
8019 return vpc;
8020 #undef FLD
8021 }
8022
8023 /* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
8024
8025 static SEM_PC
8026 SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8027 {
8028 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
8029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8030 int UNUSED written = 0;
8031 IADDR UNUSED pc = abuf->addr;
8032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8033
8034 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
8035 {
8036 SI opval = GET_H_FR_INT (FLD (f_FRk));
8037 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
8038 written |= (1 << 3);
8039 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8040 }
8041 }
8042
8043 abuf->written = written;
8044 return vpc;
8045 #undef FLD
8046 }
8047
8048 /* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
8049
8050 static SEM_PC
8051 SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8052 {
8053 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
8054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8055 int UNUSED written = 0;
8056 IADDR UNUSED pc = abuf->addr;
8057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8058
8059 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
8060 if (EQSI (FLD (f_GRj), 0)) {
8061 {
8062 {
8063 SI opval = 0;
8064 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
8065 written |= (1 << 6);
8066 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
8067 }
8068 {
8069 USI opval = 0;
8070 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
8071 written |= (1 << 7);
8072 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
8073 }
8074 }
8075 } else {
8076 {
8077 {
8078 SI opval = GET_H_GR (FLD (f_GRj));
8079 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
8080 written |= (1 << 6);
8081 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
8082 }
8083 {
8084 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
8085 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
8086 written |= (1 << 7);
8087 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
8088 }
8089 }
8090 }
8091 }
8092
8093 abuf->written = written;
8094 return vpc;
8095 #undef FLD
8096 }
8097
8098 /* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
8099
8100 static SEM_PC
8101 SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8102 {
8103 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
8104 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8105 int UNUSED written = 0;
8106 IADDR UNUSED pc = abuf->addr;
8107 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8108
8109 if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
8110 {
8111 {
8112 SI opval = GET_H_FR_INT (FLD (f_FRk));
8113 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
8114 written |= (1 << 6);
8115 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8116 }
8117 {
8118 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
8119 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
8120 written |= (1 << 7);
8121 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8122 }
8123 }
8124 }
8125
8126 abuf->written = written;
8127 return vpc;
8128 #undef FLD
8129 }
8130
8131 /* movgs: movgs$pack $GRj,$spr */
8132
8133 static SEM_PC
8134 SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8135 {
8136 #define FLD(f) abuf->fields.sfmt_movgs.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 USI opval = GET_H_GR (FLD (f_GRj));
8144 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
8145 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8146 }
8147
8148 return vpc;
8149 #undef FLD
8150 }
8151
8152 /* movsg: movsg$pack $spr,$GRj */
8153
8154 static SEM_PC
8155 SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8156 {
8157 #define FLD(f) abuf->fields.sfmt_movsg.f
8158 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8159 int UNUSED written = 0;
8160 IADDR UNUSED pc = abuf->addr;
8161 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8162
8163 {
8164 SI opval = GET_H_SPR (FLD (f_spr));
8165 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
8166 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8167 }
8168
8169 return vpc;
8170 #undef FLD
8171 }
8172
8173 /* bra: bra$pack $hint_taken$label16 */
8174
8175 static SEM_PC
8176 SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8177 {
8178 #define FLD(f) abuf->fields.sfmt_fbne.f
8179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8180 int UNUSED written = 0;
8181 IADDR UNUSED pc = abuf->addr;
8182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8183
8184 {
8185 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8186 {
8187 USI opval = FLD (i_label16);
8188 sim_queue_pc_write (current_cpu, opval);
8189 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8190 }
8191 }
8192
8193 return vpc;
8194 #undef FLD
8195 }
8196
8197 /* bno: bno$pack$hint_not_taken */
8198
8199 static SEM_PC
8200 SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8201 {
8202 #define FLD(f) abuf->fields.sfmt_fbne.f
8203 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8204 int UNUSED written = 0;
8205 IADDR UNUSED pc = abuf->addr;
8206 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8207
8208 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8209
8210 return vpc;
8211 #undef FLD
8212 }
8213
8214 /* beq: beq$pack $ICCi_2,$hint,$label16 */
8215
8216 static SEM_PC
8217 SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8218 {
8219 #define FLD(f) abuf->fields.sfmt_beq.f
8220 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8221 int UNUSED written = 0;
8222 IADDR UNUSED pc = abuf->addr;
8223 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8224
8225 {
8226 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8227 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8228 {
8229 USI opval = FLD (i_label16);
8230 sim_queue_pc_write (current_cpu, opval);
8231 written |= (1 << 3);
8232 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8233 }
8234 }
8235 }
8236
8237 abuf->written = written;
8238 return vpc;
8239 #undef FLD
8240 }
8241
8242 /* bne: bne$pack $ICCi_2,$hint,$label16 */
8243
8244 static SEM_PC
8245 SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8246 {
8247 #define FLD(f) abuf->fields.sfmt_beq.f
8248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8249 int UNUSED written = 0;
8250 IADDR UNUSED pc = abuf->addr;
8251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8252
8253 {
8254 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8255 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8256 {
8257 USI opval = FLD (i_label16);
8258 sim_queue_pc_write (current_cpu, opval);
8259 written |= (1 << 3);
8260 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8261 }
8262 }
8263 }
8264
8265 abuf->written = written;
8266 return vpc;
8267 #undef FLD
8268 }
8269
8270 /* ble: ble$pack $ICCi_2,$hint,$label16 */
8271
8272 static SEM_PC
8273 SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8274 {
8275 #define FLD(f) abuf->fields.sfmt_beq.f
8276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8277 int UNUSED written = 0;
8278 IADDR UNUSED pc = abuf->addr;
8279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8280
8281 {
8282 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8283 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))))) {
8284 {
8285 USI opval = FLD (i_label16);
8286 sim_queue_pc_write (current_cpu, opval);
8287 written |= (1 << 3);
8288 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8289 }
8290 }
8291 }
8292
8293 abuf->written = written;
8294 return vpc;
8295 #undef FLD
8296 }
8297
8298 /* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8299
8300 static SEM_PC
8301 SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8302 {
8303 #define FLD(f) abuf->fields.sfmt_beq.f
8304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8305 int UNUSED written = 0;
8306 IADDR UNUSED pc = abuf->addr;
8307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8308
8309 {
8310 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8311 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)))))) {
8312 {
8313 USI opval = FLD (i_label16);
8314 sim_queue_pc_write (current_cpu, opval);
8315 written |= (1 << 3);
8316 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8317 }
8318 }
8319 }
8320
8321 abuf->written = written;
8322 return vpc;
8323 #undef FLD
8324 }
8325
8326 /* blt: blt$pack $ICCi_2,$hint,$label16 */
8327
8328 static SEM_PC
8329 SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8330 {
8331 #define FLD(f) abuf->fields.sfmt_beq.f
8332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8333 int UNUSED written = 0;
8334 IADDR UNUSED pc = abuf->addr;
8335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8336
8337 {
8338 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8339 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)))) {
8340 {
8341 USI opval = FLD (i_label16);
8342 sim_queue_pc_write (current_cpu, opval);
8343 written |= (1 << 3);
8344 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8345 }
8346 }
8347 }
8348
8349 abuf->written = written;
8350 return vpc;
8351 #undef FLD
8352 }
8353
8354 /* bge: bge$pack $ICCi_2,$hint,$label16 */
8355
8356 static SEM_PC
8357 SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8358 {
8359 #define FLD(f) abuf->fields.sfmt_beq.f
8360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8361 int UNUSED written = 0;
8362 IADDR UNUSED pc = abuf->addr;
8363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8364
8365 {
8366 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8367 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))))) {
8368 {
8369 USI opval = FLD (i_label16);
8370 sim_queue_pc_write (current_cpu, opval);
8371 written |= (1 << 3);
8372 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8373 }
8374 }
8375 }
8376
8377 abuf->written = written;
8378 return vpc;
8379 #undef FLD
8380 }
8381
8382 /* bls: bls$pack $ICCi_2,$hint,$label16 */
8383
8384 static SEM_PC
8385 SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8386 {
8387 #define FLD(f) abuf->fields.sfmt_beq.f
8388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8389 int UNUSED written = 0;
8390 IADDR UNUSED pc = abuf->addr;
8391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8392
8393 {
8394 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8395 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8396 {
8397 USI opval = FLD (i_label16);
8398 sim_queue_pc_write (current_cpu, opval);
8399 written |= (1 << 3);
8400 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8401 }
8402 }
8403 }
8404
8405 abuf->written = written;
8406 return vpc;
8407 #undef FLD
8408 }
8409
8410 /* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8411
8412 static SEM_PC
8413 SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8414 {
8415 #define FLD(f) abuf->fields.sfmt_beq.f
8416 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8417 int UNUSED written = 0;
8418 IADDR UNUSED pc = abuf->addr;
8419 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8420
8421 {
8422 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8423 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))))) {
8424 {
8425 USI opval = FLD (i_label16);
8426 sim_queue_pc_write (current_cpu, opval);
8427 written |= (1 << 3);
8428 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8429 }
8430 }
8431 }
8432
8433 abuf->written = written;
8434 return vpc;
8435 #undef FLD
8436 }
8437
8438 /* bc: bc$pack $ICCi_2,$hint,$label16 */
8439
8440 static SEM_PC
8441 SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8442 {
8443 #define FLD(f) abuf->fields.sfmt_beq.f
8444 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8445 int UNUSED written = 0;
8446 IADDR UNUSED pc = abuf->addr;
8447 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8448
8449 {
8450 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8451 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8452 {
8453 USI opval = FLD (i_label16);
8454 sim_queue_pc_write (current_cpu, opval);
8455 written |= (1 << 3);
8456 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8457 }
8458 }
8459 }
8460
8461 abuf->written = written;
8462 return vpc;
8463 #undef FLD
8464 }
8465
8466 /* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8467
8468 static SEM_PC
8469 SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8470 {
8471 #define FLD(f) abuf->fields.sfmt_beq.f
8472 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8473 int UNUSED written = 0;
8474 IADDR UNUSED pc = abuf->addr;
8475 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8476
8477 {
8478 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8479 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8480 {
8481 USI opval = FLD (i_label16);
8482 sim_queue_pc_write (current_cpu, opval);
8483 written |= (1 << 3);
8484 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8485 }
8486 }
8487 }
8488
8489 abuf->written = written;
8490 return vpc;
8491 #undef FLD
8492 }
8493
8494 /* bn: bn$pack $ICCi_2,$hint,$label16 */
8495
8496 static SEM_PC
8497 SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8498 {
8499 #define FLD(f) abuf->fields.sfmt_beq.f
8500 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8501 int UNUSED written = 0;
8502 IADDR UNUSED pc = abuf->addr;
8503 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8504
8505 {
8506 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8507 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8508 {
8509 USI opval = FLD (i_label16);
8510 sim_queue_pc_write (current_cpu, opval);
8511 written |= (1 << 3);
8512 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8513 }
8514 }
8515 }
8516
8517 abuf->written = written;
8518 return vpc;
8519 #undef FLD
8520 }
8521
8522 /* bp: bp$pack $ICCi_2,$hint,$label16 */
8523
8524 static SEM_PC
8525 SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8526 {
8527 #define FLD(f) abuf->fields.sfmt_beq.f
8528 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8529 int UNUSED written = 0;
8530 IADDR UNUSED pc = abuf->addr;
8531 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8532
8533 {
8534 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8535 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8536 {
8537 USI opval = FLD (i_label16);
8538 sim_queue_pc_write (current_cpu, opval);
8539 written |= (1 << 3);
8540 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8541 }
8542 }
8543 }
8544
8545 abuf->written = written;
8546 return vpc;
8547 #undef FLD
8548 }
8549
8550 /* bv: bv$pack $ICCi_2,$hint,$label16 */
8551
8552 static SEM_PC
8553 SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8554 {
8555 #define FLD(f) abuf->fields.sfmt_beq.f
8556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8557 int UNUSED written = 0;
8558 IADDR UNUSED pc = abuf->addr;
8559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8560
8561 {
8562 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8563 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8564 {
8565 USI opval = FLD (i_label16);
8566 sim_queue_pc_write (current_cpu, opval);
8567 written |= (1 << 3);
8568 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8569 }
8570 }
8571 }
8572
8573 abuf->written = written;
8574 return vpc;
8575 #undef FLD
8576 }
8577
8578 /* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8579
8580 static SEM_PC
8581 SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8582 {
8583 #define FLD(f) abuf->fields.sfmt_beq.f
8584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8585 int UNUSED written = 0;
8586 IADDR UNUSED pc = abuf->addr;
8587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8588
8589 {
8590 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8591 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8592 {
8593 USI opval = FLD (i_label16);
8594 sim_queue_pc_write (current_cpu, opval);
8595 written |= (1 << 3);
8596 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8597 }
8598 }
8599 }
8600
8601 abuf->written = written;
8602 return vpc;
8603 #undef FLD
8604 }
8605
8606 /* fbra: fbra$pack $hint_taken$label16 */
8607
8608 static SEM_PC
8609 SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8610 {
8611 #define FLD(f) abuf->fields.sfmt_fbne.f
8612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8613 int UNUSED written = 0;
8614 IADDR UNUSED pc = abuf->addr;
8615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8616
8617 {
8618 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8619 {
8620 USI opval = FLD (i_label16);
8621 sim_queue_pc_write (current_cpu, opval);
8622 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8623 }
8624 }
8625
8626 return vpc;
8627 #undef FLD
8628 }
8629
8630 /* fbno: fbno$pack$hint_not_taken */
8631
8632 static SEM_PC
8633 SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8634 {
8635 #define FLD(f) abuf->fields.sfmt_fbne.f
8636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8637 int UNUSED written = 0;
8638 IADDR UNUSED pc = abuf->addr;
8639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8640
8641 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8642
8643 return vpc;
8644 #undef FLD
8645 }
8646
8647 /* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8648
8649 static SEM_PC
8650 SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8651 {
8652 #define FLD(f) abuf->fields.sfmt_fbne.f
8653 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8654 int UNUSED written = 0;
8655 IADDR UNUSED pc = abuf->addr;
8656 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8657
8658 {
8659 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8660 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))))) {
8661 {
8662 USI opval = FLD (i_label16);
8663 sim_queue_pc_write (current_cpu, opval);
8664 written |= (1 << 3);
8665 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8666 }
8667 }
8668 }
8669
8670 abuf->written = written;
8671 return vpc;
8672 #undef FLD
8673 }
8674
8675 /* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8676
8677 static SEM_PC
8678 SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8679 {
8680 #define FLD(f) abuf->fields.sfmt_fbne.f
8681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8682 int UNUSED written = 0;
8683 IADDR UNUSED pc = abuf->addr;
8684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8685
8686 {
8687 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8688 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8689 {
8690 USI opval = FLD (i_label16);
8691 sim_queue_pc_write (current_cpu, opval);
8692 written |= (1 << 3);
8693 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8694 }
8695 }
8696 }
8697
8698 abuf->written = written;
8699 return vpc;
8700 #undef FLD
8701 }
8702
8703 /* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8704
8705 static SEM_PC
8706 SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8707 {
8708 #define FLD(f) abuf->fields.sfmt_fbne.f
8709 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8710 int UNUSED written = 0;
8711 IADDR UNUSED pc = abuf->addr;
8712 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8713
8714 {
8715 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8716 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)))) {
8717 {
8718 USI opval = FLD (i_label16);
8719 sim_queue_pc_write (current_cpu, opval);
8720 written |= (1 << 3);
8721 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8722 }
8723 }
8724 }
8725
8726 abuf->written = written;
8727 return vpc;
8728 #undef FLD
8729 }
8730
8731 /* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8732
8733 static SEM_PC
8734 SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8735 {
8736 #define FLD(f) abuf->fields.sfmt_fbne.f
8737 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8738 int UNUSED written = 0;
8739 IADDR UNUSED pc = abuf->addr;
8740 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8741
8742 {
8743 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8744 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8745 {
8746 USI opval = FLD (i_label16);
8747 sim_queue_pc_write (current_cpu, opval);
8748 written |= (1 << 3);
8749 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8750 }
8751 }
8752 }
8753
8754 abuf->written = written;
8755 return vpc;
8756 #undef FLD
8757 }
8758
8759 /* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8760
8761 static SEM_PC
8762 SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8763 {
8764 #define FLD(f) abuf->fields.sfmt_fbne.f
8765 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8766 int UNUSED written = 0;
8767 IADDR UNUSED pc = abuf->addr;
8768 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8769
8770 {
8771 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8772 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8773 {
8774 USI opval = FLD (i_label16);
8775 sim_queue_pc_write (current_cpu, opval);
8776 written |= (1 << 3);
8777 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8778 }
8779 }
8780 }
8781
8782 abuf->written = written;
8783 return vpc;
8784 #undef FLD
8785 }
8786
8787 /* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8788
8789 static SEM_PC
8790 SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8791 {
8792 #define FLD(f) abuf->fields.sfmt_fbne.f
8793 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8794 int UNUSED written = 0;
8795 IADDR UNUSED pc = abuf->addr;
8796 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8797
8798 {
8799 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8800 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)))) {
8801 {
8802 USI opval = FLD (i_label16);
8803 sim_queue_pc_write (current_cpu, opval);
8804 written |= (1 << 3);
8805 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8806 }
8807 }
8808 }
8809
8810 abuf->written = written;
8811 return vpc;
8812 #undef FLD
8813 }
8814
8815 /* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8816
8817 static SEM_PC
8818 SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8819 {
8820 #define FLD(f) abuf->fields.sfmt_fbne.f
8821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8822 int UNUSED written = 0;
8823 IADDR UNUSED pc = abuf->addr;
8824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8825
8826 {
8827 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8828 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8829 {
8830 USI opval = FLD (i_label16);
8831 sim_queue_pc_write (current_cpu, opval);
8832 written |= (1 << 3);
8833 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8834 }
8835 }
8836 }
8837
8838 abuf->written = written;
8839 return vpc;
8840 #undef FLD
8841 }
8842
8843 /* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8844
8845 static SEM_PC
8846 SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8847 {
8848 #define FLD(f) abuf->fields.sfmt_fbne.f
8849 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8850 int UNUSED written = 0;
8851 IADDR UNUSED pc = abuf->addr;
8852 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8853
8854 {
8855 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8856 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))))) {
8857 {
8858 USI opval = FLD (i_label16);
8859 sim_queue_pc_write (current_cpu, opval);
8860 written |= (1 << 3);
8861 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8862 }
8863 }
8864 }
8865
8866 abuf->written = written;
8867 return vpc;
8868 #undef FLD
8869 }
8870
8871 /* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8872
8873 static SEM_PC
8874 SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8875 {
8876 #define FLD(f) abuf->fields.sfmt_fbne.f
8877 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8878 int UNUSED written = 0;
8879 IADDR UNUSED pc = abuf->addr;
8880 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8881
8882 {
8883 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8884 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8885 {
8886 USI opval = FLD (i_label16);
8887 sim_queue_pc_write (current_cpu, opval);
8888 written |= (1 << 3);
8889 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8890 }
8891 }
8892 }
8893
8894 abuf->written = written;
8895 return vpc;
8896 #undef FLD
8897 }
8898
8899 /* fble: fble$pack $FCCi_2,$hint,$label16 */
8900
8901 static SEM_PC
8902 SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8903 {
8904 #define FLD(f) abuf->fields.sfmt_fbne.f
8905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8906 int UNUSED written = 0;
8907 IADDR UNUSED pc = abuf->addr;
8908 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8909
8910 {
8911 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8912 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)))) {
8913 {
8914 USI opval = FLD (i_label16);
8915 sim_queue_pc_write (current_cpu, opval);
8916 written |= (1 << 3);
8917 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8918 }
8919 }
8920 }
8921
8922 abuf->written = written;
8923 return vpc;
8924 #undef FLD
8925 }
8926
8927 /* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8928
8929 static SEM_PC
8930 SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8931 {
8932 #define FLD(f) abuf->fields.sfmt_fbne.f
8933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8934 int UNUSED written = 0;
8935 IADDR UNUSED pc = abuf->addr;
8936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8937
8938 {
8939 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8940 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8941 {
8942 USI opval = FLD (i_label16);
8943 sim_queue_pc_write (current_cpu, opval);
8944 written |= (1 << 3);
8945 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8946 }
8947 }
8948 }
8949
8950 abuf->written = written;
8951 return vpc;
8952 #undef FLD
8953 }
8954
8955 /* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8956
8957 static SEM_PC
8958 SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8959 {
8960 #define FLD(f) abuf->fields.sfmt_fbne.f
8961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8962 int UNUSED written = 0;
8963 IADDR UNUSED pc = abuf->addr;
8964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8965
8966 {
8967 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8968 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))))) {
8969 {
8970 USI opval = FLD (i_label16);
8971 sim_queue_pc_write (current_cpu, opval);
8972 written |= (1 << 3);
8973 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8974 }
8975 }
8976 }
8977
8978 abuf->written = written;
8979 return vpc;
8980 #undef FLD
8981 }
8982
8983 /* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8984
8985 static SEM_PC
8986 SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8987 {
8988 #define FLD(f) abuf->fields.sfmt_fbne.f
8989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8990 int UNUSED written = 0;
8991 IADDR UNUSED pc = abuf->addr;
8992 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8993
8994 {
8995 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8996 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8997 {
8998 USI opval = FLD (i_label16);
8999 sim_queue_pc_write (current_cpu, opval);
9000 written |= (1 << 3);
9001 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9002 }
9003 }
9004 }
9005
9006 abuf->written = written;
9007 return vpc;
9008 #undef FLD
9009 }
9010
9011 /* fbo: fbo$pack $FCCi_2,$hint,$label16 */
9012
9013 static SEM_PC
9014 SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9015 {
9016 #define FLD(f) abuf->fields.sfmt_fbne.f
9017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9018 int UNUSED written = 0;
9019 IADDR UNUSED pc = abuf->addr;
9020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9021
9022 {
9023 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
9024 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))))) {
9025 {
9026 USI opval = FLD (i_label16);
9027 sim_queue_pc_write (current_cpu, opval);
9028 written |= (1 << 3);
9029 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9030 }
9031 }
9032 }
9033
9034 abuf->written = written;
9035 return vpc;
9036 #undef FLD
9037 }
9038
9039 /* bctrlr: bctrlr$pack $ccond,$hint */
9040
9041 static SEM_PC
9042 SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9043 {
9044 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9046 int UNUSED written = 0;
9047 IADDR UNUSED pc = abuf->addr;
9048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9049
9050 {
9051 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9052 {
9053 SI tmp_tmp;
9054 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9055 {
9056 USI opval = tmp_tmp;
9057 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9058 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9059 }
9060 if (EQSI (FLD (f_ccond), 0)) {
9061 if (NESI (tmp_tmp, 0)) {
9062 {
9063 USI opval = GET_H_SPR (((UINT) 272));
9064 sim_queue_pc_write (current_cpu, opval);
9065 written |= (1 << 5);
9066 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9067 }
9068 }
9069 } else {
9070 if (EQSI (tmp_tmp, 0)) {
9071 {
9072 USI opval = GET_H_SPR (((UINT) 272));
9073 sim_queue_pc_write (current_cpu, opval);
9074 written |= (1 << 5);
9075 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9076 }
9077 }
9078 }
9079 }
9080 }
9081
9082 abuf->written = written;
9083 return vpc;
9084 #undef FLD
9085 }
9086
9087 /* bralr: bralr$pack$hint_taken */
9088
9089 static SEM_PC
9090 SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9091 {
9092 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9093 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9094 int UNUSED written = 0;
9095 IADDR UNUSED pc = abuf->addr;
9096 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9097
9098 {
9099 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9100 {
9101 USI opval = GET_H_SPR (((UINT) 272));
9102 sim_queue_pc_write (current_cpu, opval);
9103 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9104 }
9105 }
9106
9107 return vpc;
9108 #undef FLD
9109 }
9110
9111 /* bnolr: bnolr$pack$hint_not_taken */
9112
9113 static SEM_PC
9114 SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9115 {
9116 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9117 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9118 int UNUSED written = 0;
9119 IADDR UNUSED pc = abuf->addr;
9120 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9121
9122 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9123
9124 return vpc;
9125 #undef FLD
9126 }
9127
9128 /* beqlr: beqlr$pack $ICCi_2,$hint */
9129
9130 static SEM_PC
9131 SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9132 {
9133 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9135 int UNUSED written = 0;
9136 IADDR UNUSED pc = abuf->addr;
9137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9138
9139 {
9140 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9141 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9142 {
9143 USI opval = GET_H_SPR (((UINT) 272));
9144 sim_queue_pc_write (current_cpu, opval);
9145 written |= (1 << 3);
9146 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9147 }
9148 }
9149 }
9150
9151 abuf->written = written;
9152 return vpc;
9153 #undef FLD
9154 }
9155
9156 /* bnelr: bnelr$pack $ICCi_2,$hint */
9157
9158 static SEM_PC
9159 SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9160 {
9161 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9162 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9163 int UNUSED written = 0;
9164 IADDR UNUSED pc = abuf->addr;
9165 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9166
9167 {
9168 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9169 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9170 {
9171 USI opval = GET_H_SPR (((UINT) 272));
9172 sim_queue_pc_write (current_cpu, opval);
9173 written |= (1 << 3);
9174 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9175 }
9176 }
9177 }
9178
9179 abuf->written = written;
9180 return vpc;
9181 #undef FLD
9182 }
9183
9184 /* blelr: blelr$pack $ICCi_2,$hint */
9185
9186 static SEM_PC
9187 SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9188 {
9189 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9190 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9191 int UNUSED written = 0;
9192 IADDR UNUSED pc = abuf->addr;
9193 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9194
9195 {
9196 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9197 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))))) {
9198 {
9199 USI opval = GET_H_SPR (((UINT) 272));
9200 sim_queue_pc_write (current_cpu, opval);
9201 written |= (1 << 3);
9202 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9203 }
9204 }
9205 }
9206
9207 abuf->written = written;
9208 return vpc;
9209 #undef FLD
9210 }
9211
9212 /* bgtlr: bgtlr$pack $ICCi_2,$hint */
9213
9214 static SEM_PC
9215 SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9216 {
9217 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9219 int UNUSED written = 0;
9220 IADDR UNUSED pc = abuf->addr;
9221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9222
9223 {
9224 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9225 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)))))) {
9226 {
9227 USI opval = GET_H_SPR (((UINT) 272));
9228 sim_queue_pc_write (current_cpu, opval);
9229 written |= (1 << 3);
9230 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9231 }
9232 }
9233 }
9234
9235 abuf->written = written;
9236 return vpc;
9237 #undef FLD
9238 }
9239
9240 /* bltlr: bltlr$pack $ICCi_2,$hint */
9241
9242 static SEM_PC
9243 SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9244 {
9245 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9246 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9247 int UNUSED written = 0;
9248 IADDR UNUSED pc = abuf->addr;
9249 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9250
9251 {
9252 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9253 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)))) {
9254 {
9255 USI opval = GET_H_SPR (((UINT) 272));
9256 sim_queue_pc_write (current_cpu, opval);
9257 written |= (1 << 3);
9258 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9259 }
9260 }
9261 }
9262
9263 abuf->written = written;
9264 return vpc;
9265 #undef FLD
9266 }
9267
9268 /* bgelr: bgelr$pack $ICCi_2,$hint */
9269
9270 static SEM_PC
9271 SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9272 {
9273 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9275 int UNUSED written = 0;
9276 IADDR UNUSED pc = abuf->addr;
9277 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9278
9279 {
9280 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9281 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))))) {
9282 {
9283 USI opval = GET_H_SPR (((UINT) 272));
9284 sim_queue_pc_write (current_cpu, opval);
9285 written |= (1 << 3);
9286 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9287 }
9288 }
9289 }
9290
9291 abuf->written = written;
9292 return vpc;
9293 #undef FLD
9294 }
9295
9296 /* blslr: blslr$pack $ICCi_2,$hint */
9297
9298 static SEM_PC
9299 SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9300 {
9301 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9303 int UNUSED written = 0;
9304 IADDR UNUSED pc = abuf->addr;
9305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9306
9307 {
9308 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9309 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9310 {
9311 USI opval = GET_H_SPR (((UINT) 272));
9312 sim_queue_pc_write (current_cpu, opval);
9313 written |= (1 << 3);
9314 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9315 }
9316 }
9317 }
9318
9319 abuf->written = written;
9320 return vpc;
9321 #undef FLD
9322 }
9323
9324 /* bhilr: bhilr$pack $ICCi_2,$hint */
9325
9326 static SEM_PC
9327 SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9328 {
9329 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9330 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9331 int UNUSED written = 0;
9332 IADDR UNUSED pc = abuf->addr;
9333 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9334
9335 {
9336 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9337 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))))) {
9338 {
9339 USI opval = GET_H_SPR (((UINT) 272));
9340 sim_queue_pc_write (current_cpu, opval);
9341 written |= (1 << 3);
9342 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9343 }
9344 }
9345 }
9346
9347 abuf->written = written;
9348 return vpc;
9349 #undef FLD
9350 }
9351
9352 /* bclr: bclr$pack $ICCi_2,$hint */
9353
9354 static SEM_PC
9355 SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9356 {
9357 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9358 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9359 int UNUSED written = 0;
9360 IADDR UNUSED pc = abuf->addr;
9361 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9362
9363 {
9364 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9365 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9366 {
9367 USI opval = GET_H_SPR (((UINT) 272));
9368 sim_queue_pc_write (current_cpu, opval);
9369 written |= (1 << 3);
9370 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9371 }
9372 }
9373 }
9374
9375 abuf->written = written;
9376 return vpc;
9377 #undef FLD
9378 }
9379
9380 /* bnclr: bnclr$pack $ICCi_2,$hint */
9381
9382 static SEM_PC
9383 SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9384 {
9385 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9387 int UNUSED written = 0;
9388 IADDR UNUSED pc = abuf->addr;
9389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9390
9391 {
9392 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9393 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9394 {
9395 USI opval = GET_H_SPR (((UINT) 272));
9396 sim_queue_pc_write (current_cpu, opval);
9397 written |= (1 << 3);
9398 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9399 }
9400 }
9401 }
9402
9403 abuf->written = written;
9404 return vpc;
9405 #undef FLD
9406 }
9407
9408 /* bnlr: bnlr$pack $ICCi_2,$hint */
9409
9410 static SEM_PC
9411 SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9412 {
9413 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9414 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9415 int UNUSED written = 0;
9416 IADDR UNUSED pc = abuf->addr;
9417 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9418
9419 {
9420 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9421 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9422 {
9423 USI opval = GET_H_SPR (((UINT) 272));
9424 sim_queue_pc_write (current_cpu, opval);
9425 written |= (1 << 3);
9426 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9427 }
9428 }
9429 }
9430
9431 abuf->written = written;
9432 return vpc;
9433 #undef FLD
9434 }
9435
9436 /* bplr: bplr$pack $ICCi_2,$hint */
9437
9438 static SEM_PC
9439 SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9440 {
9441 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9443 int UNUSED written = 0;
9444 IADDR UNUSED pc = abuf->addr;
9445 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9446
9447 {
9448 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9449 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9450 {
9451 USI opval = GET_H_SPR (((UINT) 272));
9452 sim_queue_pc_write (current_cpu, opval);
9453 written |= (1 << 3);
9454 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9455 }
9456 }
9457 }
9458
9459 abuf->written = written;
9460 return vpc;
9461 #undef FLD
9462 }
9463
9464 /* bvlr: bvlr$pack $ICCi_2,$hint */
9465
9466 static SEM_PC
9467 SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9468 {
9469 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9471 int UNUSED written = 0;
9472 IADDR UNUSED pc = abuf->addr;
9473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9474
9475 {
9476 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9477 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9478 {
9479 USI opval = GET_H_SPR (((UINT) 272));
9480 sim_queue_pc_write (current_cpu, opval);
9481 written |= (1 << 3);
9482 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9483 }
9484 }
9485 }
9486
9487 abuf->written = written;
9488 return vpc;
9489 #undef FLD
9490 }
9491
9492 /* bnvlr: bnvlr$pack $ICCi_2,$hint */
9493
9494 static SEM_PC
9495 SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9496 {
9497 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9498 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9499 int UNUSED written = 0;
9500 IADDR UNUSED pc = abuf->addr;
9501 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9502
9503 {
9504 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9505 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9506 {
9507 USI opval = GET_H_SPR (((UINT) 272));
9508 sim_queue_pc_write (current_cpu, opval);
9509 written |= (1 << 3);
9510 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9511 }
9512 }
9513 }
9514
9515 abuf->written = written;
9516 return vpc;
9517 #undef FLD
9518 }
9519
9520 /* fbralr: fbralr$pack$hint_taken */
9521
9522 static SEM_PC
9523 SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9524 {
9525 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9527 int UNUSED written = 0;
9528 IADDR UNUSED pc = abuf->addr;
9529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9530
9531 {
9532 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9533 {
9534 USI opval = GET_H_SPR (((UINT) 272));
9535 sim_queue_pc_write (current_cpu, opval);
9536 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9537 }
9538 }
9539
9540 return vpc;
9541 #undef FLD
9542 }
9543
9544 /* fbnolr: fbnolr$pack$hint_not_taken */
9545
9546 static SEM_PC
9547 SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9548 {
9549 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9551 int UNUSED written = 0;
9552 IADDR UNUSED pc = abuf->addr;
9553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9554
9555 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9556
9557 return vpc;
9558 #undef FLD
9559 }
9560
9561 /* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9562
9563 static SEM_PC
9564 SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9565 {
9566 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9568 int UNUSED written = 0;
9569 IADDR UNUSED pc = abuf->addr;
9570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9571
9572 {
9573 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9574 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9575 {
9576 USI opval = GET_H_SPR (((UINT) 272));
9577 sim_queue_pc_write (current_cpu, opval);
9578 written |= (1 << 3);
9579 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9580 }
9581 }
9582 }
9583
9584 abuf->written = written;
9585 return vpc;
9586 #undef FLD
9587 }
9588
9589 /* fbnelr: fbnelr$pack $FCCi_2,$hint */
9590
9591 static SEM_PC
9592 SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9593 {
9594 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9595 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9596 int UNUSED written = 0;
9597 IADDR UNUSED pc = abuf->addr;
9598 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9599
9600 {
9601 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9602 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))))) {
9603 {
9604 USI opval = GET_H_SPR (((UINT) 272));
9605 sim_queue_pc_write (current_cpu, opval);
9606 written |= (1 << 3);
9607 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9608 }
9609 }
9610 }
9611
9612 abuf->written = written;
9613 return vpc;
9614 #undef FLD
9615 }
9616
9617 /* fblglr: fblglr$pack $FCCi_2,$hint */
9618
9619 static SEM_PC
9620 SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9621 {
9622 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9623 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9624 int UNUSED written = 0;
9625 IADDR UNUSED pc = abuf->addr;
9626 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9627
9628 {
9629 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9630 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)))) {
9631 {
9632 USI opval = GET_H_SPR (((UINT) 272));
9633 sim_queue_pc_write (current_cpu, opval);
9634 written |= (1 << 3);
9635 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9636 }
9637 }
9638 }
9639
9640 abuf->written = written;
9641 return vpc;
9642 #undef FLD
9643 }
9644
9645 /* fbuelr: fbuelr$pack $FCCi_2,$hint */
9646
9647 static SEM_PC
9648 SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9649 {
9650 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9652 int UNUSED written = 0;
9653 IADDR UNUSED pc = abuf->addr;
9654 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9655
9656 {
9657 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9658 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9659 {
9660 USI opval = GET_H_SPR (((UINT) 272));
9661 sim_queue_pc_write (current_cpu, opval);
9662 written |= (1 << 3);
9663 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9664 }
9665 }
9666 }
9667
9668 abuf->written = written;
9669 return vpc;
9670 #undef FLD
9671 }
9672
9673 /* fbullr: fbullr$pack $FCCi_2,$hint */
9674
9675 static SEM_PC
9676 SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9677 {
9678 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9679 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9680 int UNUSED written = 0;
9681 IADDR UNUSED pc = abuf->addr;
9682 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9683
9684 {
9685 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9686 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9687 {
9688 USI opval = GET_H_SPR (((UINT) 272));
9689 sim_queue_pc_write (current_cpu, opval);
9690 written |= (1 << 3);
9691 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9692 }
9693 }
9694 }
9695
9696 abuf->written = written;
9697 return vpc;
9698 #undef FLD
9699 }
9700
9701 /* fbgelr: fbgelr$pack $FCCi_2,$hint */
9702
9703 static SEM_PC
9704 SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9705 {
9706 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9708 int UNUSED written = 0;
9709 IADDR UNUSED pc = abuf->addr;
9710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9711
9712 {
9713 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9714 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)))) {
9715 {
9716 USI opval = GET_H_SPR (((UINT) 272));
9717 sim_queue_pc_write (current_cpu, opval);
9718 written |= (1 << 3);
9719 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9720 }
9721 }
9722 }
9723
9724 abuf->written = written;
9725 return vpc;
9726 #undef FLD
9727 }
9728
9729 /* fbltlr: fbltlr$pack $FCCi_2,$hint */
9730
9731 static SEM_PC
9732 SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9733 {
9734 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9736 int UNUSED written = 0;
9737 IADDR UNUSED pc = abuf->addr;
9738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9739
9740 {
9741 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9742 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9743 {
9744 USI opval = GET_H_SPR (((UINT) 272));
9745 sim_queue_pc_write (current_cpu, opval);
9746 written |= (1 << 3);
9747 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9748 }
9749 }
9750 }
9751
9752 abuf->written = written;
9753 return vpc;
9754 #undef FLD
9755 }
9756
9757 /* fbugelr: fbugelr$pack $FCCi_2,$hint */
9758
9759 static SEM_PC
9760 SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9761 {
9762 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9763 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9764 int UNUSED written = 0;
9765 IADDR UNUSED pc = abuf->addr;
9766 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9767
9768 {
9769 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9770 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))))) {
9771 {
9772 USI opval = GET_H_SPR (((UINT) 272));
9773 sim_queue_pc_write (current_cpu, opval);
9774 written |= (1 << 3);
9775 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9776 }
9777 }
9778 }
9779
9780 abuf->written = written;
9781 return vpc;
9782 #undef FLD
9783 }
9784
9785 /* fbuglr: fbuglr$pack $FCCi_2,$hint */
9786
9787 static SEM_PC
9788 SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9789 {
9790 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9792 int UNUSED written = 0;
9793 IADDR UNUSED pc = abuf->addr;
9794 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9795
9796 {
9797 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9798 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9799 {
9800 USI opval = GET_H_SPR (((UINT) 272));
9801 sim_queue_pc_write (current_cpu, opval);
9802 written |= (1 << 3);
9803 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9804 }
9805 }
9806 }
9807
9808 abuf->written = written;
9809 return vpc;
9810 #undef FLD
9811 }
9812
9813 /* fblelr: fblelr$pack $FCCi_2,$hint */
9814
9815 static SEM_PC
9816 SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9817 {
9818 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9820 int UNUSED written = 0;
9821 IADDR UNUSED pc = abuf->addr;
9822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9823
9824 {
9825 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9826 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)))) {
9827 {
9828 USI opval = GET_H_SPR (((UINT) 272));
9829 sim_queue_pc_write (current_cpu, opval);
9830 written |= (1 << 3);
9831 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9832 }
9833 }
9834 }
9835
9836 abuf->written = written;
9837 return vpc;
9838 #undef FLD
9839 }
9840
9841 /* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9842
9843 static SEM_PC
9844 SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9845 {
9846 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9848 int UNUSED written = 0;
9849 IADDR UNUSED pc = abuf->addr;
9850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9851
9852 {
9853 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9854 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9855 {
9856 USI opval = GET_H_SPR (((UINT) 272));
9857 sim_queue_pc_write (current_cpu, opval);
9858 written |= (1 << 3);
9859 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9860 }
9861 }
9862 }
9863
9864 abuf->written = written;
9865 return vpc;
9866 #undef FLD
9867 }
9868
9869 /* fbulelr: fbulelr$pack $FCCi_2,$hint */
9870
9871 static SEM_PC
9872 SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9873 {
9874 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9876 int UNUSED written = 0;
9877 IADDR UNUSED pc = abuf->addr;
9878 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9879
9880 {
9881 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9882 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))))) {
9883 {
9884 USI opval = GET_H_SPR (((UINT) 272));
9885 sim_queue_pc_write (current_cpu, opval);
9886 written |= (1 << 3);
9887 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9888 }
9889 }
9890 }
9891
9892 abuf->written = written;
9893 return vpc;
9894 #undef FLD
9895 }
9896
9897 /* fbulr: fbulr$pack $FCCi_2,$hint */
9898
9899 static SEM_PC
9900 SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9901 {
9902 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9904 int UNUSED written = 0;
9905 IADDR UNUSED pc = abuf->addr;
9906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9907
9908 {
9909 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9910 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9911 {
9912 USI opval = GET_H_SPR (((UINT) 272));
9913 sim_queue_pc_write (current_cpu, opval);
9914 written |= (1 << 3);
9915 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9916 }
9917 }
9918 }
9919
9920 abuf->written = written;
9921 return vpc;
9922 #undef FLD
9923 }
9924
9925 /* fbolr: fbolr$pack $FCCi_2,$hint */
9926
9927 static SEM_PC
9928 SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9929 {
9930 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9932 int UNUSED written = 0;
9933 IADDR UNUSED pc = abuf->addr;
9934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9935
9936 {
9937 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9938 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))))) {
9939 {
9940 USI opval = GET_H_SPR (((UINT) 272));
9941 sim_queue_pc_write (current_cpu, opval);
9942 written |= (1 << 3);
9943 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9944 }
9945 }
9946 }
9947
9948 abuf->written = written;
9949 return vpc;
9950 #undef FLD
9951 }
9952
9953 /* bcralr: bcralr$pack $ccond$hint_taken */
9954
9955 static SEM_PC
9956 SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9957 {
9958 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9959 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9960 int UNUSED written = 0;
9961 IADDR UNUSED pc = abuf->addr;
9962 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9963
9964 {
9965 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9966 {
9967 SI tmp_tmp;
9968 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9969 {
9970 USI opval = tmp_tmp;
9971 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9972 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9973 }
9974 if (EQSI (FLD (f_ccond), 0)) {
9975 if (NESI (tmp_tmp, 0)) {
9976 {
9977 USI opval = GET_H_SPR (((UINT) 272));
9978 sim_queue_pc_write (current_cpu, opval);
9979 written |= (1 << 5);
9980 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9981 }
9982 }
9983 } else {
9984 if (EQSI (tmp_tmp, 0)) {
9985 {
9986 USI opval = GET_H_SPR (((UINT) 272));
9987 sim_queue_pc_write (current_cpu, opval);
9988 written |= (1 << 5);
9989 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9990 }
9991 }
9992 }
9993 }
9994 }
9995
9996 abuf->written = written;
9997 return vpc;
9998 #undef FLD
9999 }
10000
10001 /* bcnolr: bcnolr$pack$hint_not_taken */
10002
10003 static SEM_PC
10004 SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10005 {
10006 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10008 int UNUSED written = 0;
10009 IADDR UNUSED pc = abuf->addr;
10010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10011
10012 {
10013 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10014 {
10015 SI tmp_tmp;
10016 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10017 {
10018 USI opval = tmp_tmp;
10019 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10020 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10021 }
10022 ((void) 0); /*nop*/
10023 }
10024 }
10025
10026 return vpc;
10027 #undef FLD
10028 }
10029
10030 /* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
10031
10032 static SEM_PC
10033 SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10034 {
10035 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10037 int UNUSED written = 0;
10038 IADDR UNUSED pc = abuf->addr;
10039 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10040
10041 {
10042 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10043 {
10044 SI tmp_tmp;
10045 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10046 {
10047 USI opval = tmp_tmp;
10048 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10049 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10050 }
10051 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
10052 if (EQSI (FLD (f_ccond), 0)) {
10053 if (NESI (tmp_tmp, 0)) {
10054 {
10055 USI opval = GET_H_SPR (((UINT) 272));
10056 sim_queue_pc_write (current_cpu, opval);
10057 written |= (1 << 6);
10058 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10059 }
10060 }
10061 } else {
10062 if (EQSI (tmp_tmp, 0)) {
10063 {
10064 USI opval = GET_H_SPR (((UINT) 272));
10065 sim_queue_pc_write (current_cpu, opval);
10066 written |= (1 << 6);
10067 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10068 }
10069 }
10070 }
10071 }
10072 }
10073 }
10074
10075 abuf->written = written;
10076 return vpc;
10077 #undef FLD
10078 }
10079
10080 /* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
10081
10082 static SEM_PC
10083 SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10084 {
10085 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10086 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10087 int UNUSED written = 0;
10088 IADDR UNUSED pc = abuf->addr;
10089 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10090
10091 {
10092 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10093 {
10094 SI tmp_tmp;
10095 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10096 {
10097 USI opval = tmp_tmp;
10098 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10099 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10100 }
10101 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10102 if (EQSI (FLD (f_ccond), 0)) {
10103 if (NESI (tmp_tmp, 0)) {
10104 {
10105 USI opval = GET_H_SPR (((UINT) 272));
10106 sim_queue_pc_write (current_cpu, opval);
10107 written |= (1 << 6);
10108 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10109 }
10110 }
10111 } else {
10112 if (EQSI (tmp_tmp, 0)) {
10113 {
10114 USI opval = GET_H_SPR (((UINT) 272));
10115 sim_queue_pc_write (current_cpu, opval);
10116 written |= (1 << 6);
10117 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10118 }
10119 }
10120 }
10121 }
10122 }
10123 }
10124
10125 abuf->written = written;
10126 return vpc;
10127 #undef FLD
10128 }
10129
10130 /* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
10131
10132 static SEM_PC
10133 SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10134 {
10135 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10137 int UNUSED written = 0;
10138 IADDR UNUSED pc = abuf->addr;
10139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10140
10141 {
10142 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10143 {
10144 SI tmp_tmp;
10145 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10146 {
10147 USI opval = tmp_tmp;
10148 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10149 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10150 }
10151 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))))) {
10152 if (EQSI (FLD (f_ccond), 0)) {
10153 if (NESI (tmp_tmp, 0)) {
10154 {
10155 USI opval = GET_H_SPR (((UINT) 272));
10156 sim_queue_pc_write (current_cpu, opval);
10157 written |= (1 << 6);
10158 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10159 }
10160 }
10161 } else {
10162 if (EQSI (tmp_tmp, 0)) {
10163 {
10164 USI opval = GET_H_SPR (((UINT) 272));
10165 sim_queue_pc_write (current_cpu, opval);
10166 written |= (1 << 6);
10167 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10168 }
10169 }
10170 }
10171 }
10172 }
10173 }
10174
10175 abuf->written = written;
10176 return vpc;
10177 #undef FLD
10178 }
10179
10180 /* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
10181
10182 static SEM_PC
10183 SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10184 {
10185 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10187 int UNUSED written = 0;
10188 IADDR UNUSED pc = abuf->addr;
10189 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10190
10191 {
10192 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10193 {
10194 SI tmp_tmp;
10195 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10196 {
10197 USI opval = tmp_tmp;
10198 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10199 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10200 }
10201 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)))))) {
10202 if (EQSI (FLD (f_ccond), 0)) {
10203 if (NESI (tmp_tmp, 0)) {
10204 {
10205 USI opval = GET_H_SPR (((UINT) 272));
10206 sim_queue_pc_write (current_cpu, opval);
10207 written |= (1 << 6);
10208 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10209 }
10210 }
10211 } else {
10212 if (EQSI (tmp_tmp, 0)) {
10213 {
10214 USI opval = GET_H_SPR (((UINT) 272));
10215 sim_queue_pc_write (current_cpu, opval);
10216 written |= (1 << 6);
10217 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10218 }
10219 }
10220 }
10221 }
10222 }
10223 }
10224
10225 abuf->written = written;
10226 return vpc;
10227 #undef FLD
10228 }
10229
10230 /* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
10231
10232 static SEM_PC
10233 SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10234 {
10235 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10237 int UNUSED written = 0;
10238 IADDR UNUSED pc = abuf->addr;
10239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10240
10241 {
10242 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10243 {
10244 SI tmp_tmp;
10245 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10246 {
10247 USI opval = tmp_tmp;
10248 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10249 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10250 }
10251 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)))) {
10252 if (EQSI (FLD (f_ccond), 0)) {
10253 if (NESI (tmp_tmp, 0)) {
10254 {
10255 USI opval = GET_H_SPR (((UINT) 272));
10256 sim_queue_pc_write (current_cpu, opval);
10257 written |= (1 << 6);
10258 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10259 }
10260 }
10261 } else {
10262 if (EQSI (tmp_tmp, 0)) {
10263 {
10264 USI opval = GET_H_SPR (((UINT) 272));
10265 sim_queue_pc_write (current_cpu, opval);
10266 written |= (1 << 6);
10267 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10268 }
10269 }
10270 }
10271 }
10272 }
10273 }
10274
10275 abuf->written = written;
10276 return vpc;
10277 #undef FLD
10278 }
10279
10280 /* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10281
10282 static SEM_PC
10283 SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10284 {
10285 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10286 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10287 int UNUSED written = 0;
10288 IADDR UNUSED pc = abuf->addr;
10289 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10290
10291 {
10292 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10293 {
10294 SI tmp_tmp;
10295 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10296 {
10297 USI opval = tmp_tmp;
10298 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10299 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10300 }
10301 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))))) {
10302 if (EQSI (FLD (f_ccond), 0)) {
10303 if (NESI (tmp_tmp, 0)) {
10304 {
10305 USI opval = GET_H_SPR (((UINT) 272));
10306 sim_queue_pc_write (current_cpu, opval);
10307 written |= (1 << 6);
10308 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10309 }
10310 }
10311 } else {
10312 if (EQSI (tmp_tmp, 0)) {
10313 {
10314 USI opval = GET_H_SPR (((UINT) 272));
10315 sim_queue_pc_write (current_cpu, opval);
10316 written |= (1 << 6);
10317 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10318 }
10319 }
10320 }
10321 }
10322 }
10323 }
10324
10325 abuf->written = written;
10326 return vpc;
10327 #undef FLD
10328 }
10329
10330 /* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10331
10332 static SEM_PC
10333 SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10334 {
10335 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10337 int UNUSED written = 0;
10338 IADDR UNUSED pc = abuf->addr;
10339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10340
10341 {
10342 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10343 {
10344 SI tmp_tmp;
10345 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10346 {
10347 USI opval = tmp_tmp;
10348 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10349 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10350 }
10351 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10352 if (EQSI (FLD (f_ccond), 0)) {
10353 if (NESI (tmp_tmp, 0)) {
10354 {
10355 USI opval = GET_H_SPR (((UINT) 272));
10356 sim_queue_pc_write (current_cpu, opval);
10357 written |= (1 << 6);
10358 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10359 }
10360 }
10361 } else {
10362 if (EQSI (tmp_tmp, 0)) {
10363 {
10364 USI opval = GET_H_SPR (((UINT) 272));
10365 sim_queue_pc_write (current_cpu, opval);
10366 written |= (1 << 6);
10367 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10368 }
10369 }
10370 }
10371 }
10372 }
10373 }
10374
10375 abuf->written = written;
10376 return vpc;
10377 #undef FLD
10378 }
10379
10380 /* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10381
10382 static SEM_PC
10383 SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10384 {
10385 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10387 int UNUSED written = 0;
10388 IADDR UNUSED pc = abuf->addr;
10389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10390
10391 {
10392 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10393 {
10394 SI tmp_tmp;
10395 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10396 {
10397 USI opval = tmp_tmp;
10398 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10399 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10400 }
10401 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))))) {
10402 if (EQSI (FLD (f_ccond), 0)) {
10403 if (NESI (tmp_tmp, 0)) {
10404 {
10405 USI opval = GET_H_SPR (((UINT) 272));
10406 sim_queue_pc_write (current_cpu, opval);
10407 written |= (1 << 6);
10408 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10409 }
10410 }
10411 } else {
10412 if (EQSI (tmp_tmp, 0)) {
10413 {
10414 USI opval = GET_H_SPR (((UINT) 272));
10415 sim_queue_pc_write (current_cpu, opval);
10416 written |= (1 << 6);
10417 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10418 }
10419 }
10420 }
10421 }
10422 }
10423 }
10424
10425 abuf->written = written;
10426 return vpc;
10427 #undef FLD
10428 }
10429
10430 /* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10431
10432 static SEM_PC
10433 SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10434 {
10435 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10437 int UNUSED written = 0;
10438 IADDR UNUSED pc = abuf->addr;
10439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10440
10441 {
10442 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10443 {
10444 SI tmp_tmp;
10445 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10446 {
10447 USI opval = tmp_tmp;
10448 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10449 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10450 }
10451 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10452 if (EQSI (FLD (f_ccond), 0)) {
10453 if (NESI (tmp_tmp, 0)) {
10454 {
10455 USI opval = GET_H_SPR (((UINT) 272));
10456 sim_queue_pc_write (current_cpu, opval);
10457 written |= (1 << 6);
10458 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10459 }
10460 }
10461 } else {
10462 if (EQSI (tmp_tmp, 0)) {
10463 {
10464 USI opval = GET_H_SPR (((UINT) 272));
10465 sim_queue_pc_write (current_cpu, opval);
10466 written |= (1 << 6);
10467 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10468 }
10469 }
10470 }
10471 }
10472 }
10473 }
10474
10475 abuf->written = written;
10476 return vpc;
10477 #undef FLD
10478 }
10479
10480 /* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10481
10482 static SEM_PC
10483 SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10484 {
10485 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10487 int UNUSED written = 0;
10488 IADDR UNUSED pc = abuf->addr;
10489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10490
10491 {
10492 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10493 {
10494 SI tmp_tmp;
10495 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10496 {
10497 USI opval = tmp_tmp;
10498 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10499 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10500 }
10501 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10502 if (EQSI (FLD (f_ccond), 0)) {
10503 if (NESI (tmp_tmp, 0)) {
10504 {
10505 USI opval = GET_H_SPR (((UINT) 272));
10506 sim_queue_pc_write (current_cpu, opval);
10507 written |= (1 << 6);
10508 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10509 }
10510 }
10511 } else {
10512 if (EQSI (tmp_tmp, 0)) {
10513 {
10514 USI opval = GET_H_SPR (((UINT) 272));
10515 sim_queue_pc_write (current_cpu, opval);
10516 written |= (1 << 6);
10517 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10518 }
10519 }
10520 }
10521 }
10522 }
10523 }
10524
10525 abuf->written = written;
10526 return vpc;
10527 #undef FLD
10528 }
10529
10530 /* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10531
10532 static SEM_PC
10533 SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10534 {
10535 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10537 int UNUSED written = 0;
10538 IADDR UNUSED pc = abuf->addr;
10539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10540
10541 {
10542 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10543 {
10544 SI tmp_tmp;
10545 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10546 {
10547 USI opval = tmp_tmp;
10548 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10549 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10550 }
10551 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10552 if (EQSI (FLD (f_ccond), 0)) {
10553 if (NESI (tmp_tmp, 0)) {
10554 {
10555 USI opval = GET_H_SPR (((UINT) 272));
10556 sim_queue_pc_write (current_cpu, opval);
10557 written |= (1 << 6);
10558 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10559 }
10560 }
10561 } else {
10562 if (EQSI (tmp_tmp, 0)) {
10563 {
10564 USI opval = GET_H_SPR (((UINT) 272));
10565 sim_queue_pc_write (current_cpu, opval);
10566 written |= (1 << 6);
10567 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10568 }
10569 }
10570 }
10571 }
10572 }
10573 }
10574
10575 abuf->written = written;
10576 return vpc;
10577 #undef FLD
10578 }
10579
10580 /* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10581
10582 static SEM_PC
10583 SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10584 {
10585 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10586 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10587 int UNUSED written = 0;
10588 IADDR UNUSED pc = abuf->addr;
10589 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10590
10591 {
10592 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10593 {
10594 SI tmp_tmp;
10595 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10596 {
10597 USI opval = tmp_tmp;
10598 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10599 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10600 }
10601 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10602 if (EQSI (FLD (f_ccond), 0)) {
10603 if (NESI (tmp_tmp, 0)) {
10604 {
10605 USI opval = GET_H_SPR (((UINT) 272));
10606 sim_queue_pc_write (current_cpu, opval);
10607 written |= (1 << 6);
10608 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10609 }
10610 }
10611 } else {
10612 if (EQSI (tmp_tmp, 0)) {
10613 {
10614 USI opval = GET_H_SPR (((UINT) 272));
10615 sim_queue_pc_write (current_cpu, opval);
10616 written |= (1 << 6);
10617 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10618 }
10619 }
10620 }
10621 }
10622 }
10623 }
10624
10625 abuf->written = written;
10626 return vpc;
10627 #undef FLD
10628 }
10629
10630 /* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10631
10632 static SEM_PC
10633 SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10634 {
10635 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10637 int UNUSED written = 0;
10638 IADDR UNUSED pc = abuf->addr;
10639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10640
10641 {
10642 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10643 {
10644 SI tmp_tmp;
10645 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10646 {
10647 USI opval = tmp_tmp;
10648 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10649 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10650 }
10651 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10652 if (EQSI (FLD (f_ccond), 0)) {
10653 if (NESI (tmp_tmp, 0)) {
10654 {
10655 USI opval = GET_H_SPR (((UINT) 272));
10656 sim_queue_pc_write (current_cpu, opval);
10657 written |= (1 << 6);
10658 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10659 }
10660 }
10661 } else {
10662 if (EQSI (tmp_tmp, 0)) {
10663 {
10664 USI opval = GET_H_SPR (((UINT) 272));
10665 sim_queue_pc_write (current_cpu, opval);
10666 written |= (1 << 6);
10667 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10668 }
10669 }
10670 }
10671 }
10672 }
10673 }
10674
10675 abuf->written = written;
10676 return vpc;
10677 #undef FLD
10678 }
10679
10680 /* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10681
10682 static SEM_PC
10683 SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10684 {
10685 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10686 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10687 int UNUSED written = 0;
10688 IADDR UNUSED pc = abuf->addr;
10689 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10690
10691 {
10692 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10693 {
10694 SI tmp_tmp;
10695 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10696 {
10697 USI opval = tmp_tmp;
10698 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10699 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10700 }
10701 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10702 if (EQSI (FLD (f_ccond), 0)) {
10703 if (NESI (tmp_tmp, 0)) {
10704 {
10705 USI opval = GET_H_SPR (((UINT) 272));
10706 sim_queue_pc_write (current_cpu, opval);
10707 written |= (1 << 6);
10708 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10709 }
10710 }
10711 } else {
10712 if (EQSI (tmp_tmp, 0)) {
10713 {
10714 USI opval = GET_H_SPR (((UINT) 272));
10715 sim_queue_pc_write (current_cpu, opval);
10716 written |= (1 << 6);
10717 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10718 }
10719 }
10720 }
10721 }
10722 }
10723 }
10724
10725 abuf->written = written;
10726 return vpc;
10727 #undef FLD
10728 }
10729
10730 /* fcbralr: fcbralr$pack $ccond$hint_taken */
10731
10732 static SEM_PC
10733 SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10734 {
10735 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10737 int UNUSED written = 0;
10738 IADDR UNUSED pc = abuf->addr;
10739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10740
10741 {
10742 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10743 {
10744 SI tmp_tmp;
10745 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10746 {
10747 USI opval = tmp_tmp;
10748 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10749 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10750 }
10751 if (EQSI (FLD (f_ccond), 0)) {
10752 if (NESI (tmp_tmp, 0)) {
10753 {
10754 USI opval = GET_H_SPR (((UINT) 272));
10755 sim_queue_pc_write (current_cpu, opval);
10756 written |= (1 << 5);
10757 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10758 }
10759 }
10760 } else {
10761 if (EQSI (tmp_tmp, 0)) {
10762 {
10763 USI opval = GET_H_SPR (((UINT) 272));
10764 sim_queue_pc_write (current_cpu, opval);
10765 written |= (1 << 5);
10766 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10767 }
10768 }
10769 }
10770 }
10771 }
10772
10773 abuf->written = written;
10774 return vpc;
10775 #undef FLD
10776 }
10777
10778 /* fcbnolr: fcbnolr$pack$hint_not_taken */
10779
10780 static SEM_PC
10781 SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10782 {
10783 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10785 int UNUSED written = 0;
10786 IADDR UNUSED pc = abuf->addr;
10787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10788
10789 {
10790 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10791 {
10792 SI tmp_tmp;
10793 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10794 {
10795 USI opval = tmp_tmp;
10796 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10797 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10798 }
10799 ((void) 0); /*nop*/
10800 }
10801 }
10802
10803 return vpc;
10804 #undef FLD
10805 }
10806
10807 /* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10808
10809 static SEM_PC
10810 SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10811 {
10812 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10814 int UNUSED written = 0;
10815 IADDR UNUSED pc = abuf->addr;
10816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10817
10818 {
10819 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10820 {
10821 SI tmp_tmp;
10822 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10823 {
10824 USI opval = tmp_tmp;
10825 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10826 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10827 }
10828 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10829 if (EQSI (FLD (f_ccond), 0)) {
10830 if (NESI (tmp_tmp, 0)) {
10831 {
10832 USI opval = GET_H_SPR (((UINT) 272));
10833 sim_queue_pc_write (current_cpu, opval);
10834 written |= (1 << 6);
10835 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10836 }
10837 }
10838 } else {
10839 if (EQSI (tmp_tmp, 0)) {
10840 {
10841 USI opval = GET_H_SPR (((UINT) 272));
10842 sim_queue_pc_write (current_cpu, opval);
10843 written |= (1 << 6);
10844 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10845 }
10846 }
10847 }
10848 }
10849 }
10850 }
10851
10852 abuf->written = written;
10853 return vpc;
10854 #undef FLD
10855 }
10856
10857 /* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10858
10859 static SEM_PC
10860 SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10861 {
10862 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10864 int UNUSED written = 0;
10865 IADDR UNUSED pc = abuf->addr;
10866 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10867
10868 {
10869 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10870 {
10871 SI tmp_tmp;
10872 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10873 {
10874 USI opval = tmp_tmp;
10875 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10876 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10877 }
10878 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))))) {
10879 if (EQSI (FLD (f_ccond), 0)) {
10880 if (NESI (tmp_tmp, 0)) {
10881 {
10882 USI opval = GET_H_SPR (((UINT) 272));
10883 sim_queue_pc_write (current_cpu, opval);
10884 written |= (1 << 6);
10885 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10886 }
10887 }
10888 } else {
10889 if (EQSI (tmp_tmp, 0)) {
10890 {
10891 USI opval = GET_H_SPR (((UINT) 272));
10892 sim_queue_pc_write (current_cpu, opval);
10893 written |= (1 << 6);
10894 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10895 }
10896 }
10897 }
10898 }
10899 }
10900 }
10901
10902 abuf->written = written;
10903 return vpc;
10904 #undef FLD
10905 }
10906
10907 /* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10908
10909 static SEM_PC
10910 SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10911 {
10912 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10914 int UNUSED written = 0;
10915 IADDR UNUSED pc = abuf->addr;
10916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10917
10918 {
10919 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10920 {
10921 SI tmp_tmp;
10922 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10923 {
10924 USI opval = tmp_tmp;
10925 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10926 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10927 }
10928 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)))) {
10929 if (EQSI (FLD (f_ccond), 0)) {
10930 if (NESI (tmp_tmp, 0)) {
10931 {
10932 USI opval = GET_H_SPR (((UINT) 272));
10933 sim_queue_pc_write (current_cpu, opval);
10934 written |= (1 << 6);
10935 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10936 }
10937 }
10938 } else {
10939 if (EQSI (tmp_tmp, 0)) {
10940 {
10941 USI opval = GET_H_SPR (((UINT) 272));
10942 sim_queue_pc_write (current_cpu, opval);
10943 written |= (1 << 6);
10944 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10945 }
10946 }
10947 }
10948 }
10949 }
10950 }
10951
10952 abuf->written = written;
10953 return vpc;
10954 #undef FLD
10955 }
10956
10957 /* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10958
10959 static SEM_PC
10960 SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10961 {
10962 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10963 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10964 int UNUSED written = 0;
10965 IADDR UNUSED pc = abuf->addr;
10966 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10967
10968 {
10969 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10970 {
10971 SI tmp_tmp;
10972 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10973 {
10974 USI opval = tmp_tmp;
10975 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10976 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10977 }
10978 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10979 if (EQSI (FLD (f_ccond), 0)) {
10980 if (NESI (tmp_tmp, 0)) {
10981 {
10982 USI opval = GET_H_SPR (((UINT) 272));
10983 sim_queue_pc_write (current_cpu, opval);
10984 written |= (1 << 6);
10985 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10986 }
10987 }
10988 } else {
10989 if (EQSI (tmp_tmp, 0)) {
10990 {
10991 USI opval = GET_H_SPR (((UINT) 272));
10992 sim_queue_pc_write (current_cpu, opval);
10993 written |= (1 << 6);
10994 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10995 }
10996 }
10997 }
10998 }
10999 }
11000 }
11001
11002 abuf->written = written;
11003 return vpc;
11004 #undef FLD
11005 }
11006
11007 /* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
11008
11009 static SEM_PC
11010 SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11011 {
11012 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11013 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11014 int UNUSED written = 0;
11015 IADDR UNUSED pc = abuf->addr;
11016 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11017
11018 {
11019 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11020 {
11021 SI tmp_tmp;
11022 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11023 {
11024 USI opval = tmp_tmp;
11025 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11026 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11027 }
11028 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
11029 if (EQSI (FLD (f_ccond), 0)) {
11030 if (NESI (tmp_tmp, 0)) {
11031 {
11032 USI opval = GET_H_SPR (((UINT) 272));
11033 sim_queue_pc_write (current_cpu, opval);
11034 written |= (1 << 6);
11035 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11036 }
11037 }
11038 } else {
11039 if (EQSI (tmp_tmp, 0)) {
11040 {
11041 USI opval = GET_H_SPR (((UINT) 272));
11042 sim_queue_pc_write (current_cpu, opval);
11043 written |= (1 << 6);
11044 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11045 }
11046 }
11047 }
11048 }
11049 }
11050 }
11051
11052 abuf->written = written;
11053 return vpc;
11054 #undef FLD
11055 }
11056
11057 /* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
11058
11059 static SEM_PC
11060 SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11061 {
11062 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11064 int UNUSED written = 0;
11065 IADDR UNUSED pc = abuf->addr;
11066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11067
11068 {
11069 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11070 {
11071 SI tmp_tmp;
11072 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11073 {
11074 USI opval = tmp_tmp;
11075 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11076 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11077 }
11078 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)))) {
11079 if (EQSI (FLD (f_ccond), 0)) {
11080 if (NESI (tmp_tmp, 0)) {
11081 {
11082 USI opval = GET_H_SPR (((UINT) 272));
11083 sim_queue_pc_write (current_cpu, opval);
11084 written |= (1 << 6);
11085 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11086 }
11087 }
11088 } else {
11089 if (EQSI (tmp_tmp, 0)) {
11090 {
11091 USI opval = GET_H_SPR (((UINT) 272));
11092 sim_queue_pc_write (current_cpu, opval);
11093 written |= (1 << 6);
11094 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11095 }
11096 }
11097 }
11098 }
11099 }
11100 }
11101
11102 abuf->written = written;
11103 return vpc;
11104 #undef FLD
11105 }
11106
11107 /* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
11108
11109 static SEM_PC
11110 SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11111 {
11112 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11113 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11114 int UNUSED written = 0;
11115 IADDR UNUSED pc = abuf->addr;
11116 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11117
11118 {
11119 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11120 {
11121 SI tmp_tmp;
11122 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11123 {
11124 USI opval = tmp_tmp;
11125 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11126 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11127 }
11128 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
11129 if (EQSI (FLD (f_ccond), 0)) {
11130 if (NESI (tmp_tmp, 0)) {
11131 {
11132 USI opval = GET_H_SPR (((UINT) 272));
11133 sim_queue_pc_write (current_cpu, opval);
11134 written |= (1 << 6);
11135 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11136 }
11137 }
11138 } else {
11139 if (EQSI (tmp_tmp, 0)) {
11140 {
11141 USI opval = GET_H_SPR (((UINT) 272));
11142 sim_queue_pc_write (current_cpu, opval);
11143 written |= (1 << 6);
11144 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11145 }
11146 }
11147 }
11148 }
11149 }
11150 }
11151
11152 abuf->written = written;
11153 return vpc;
11154 #undef FLD
11155 }
11156
11157 /* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
11158
11159 static SEM_PC
11160 SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11161 {
11162 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11163 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11164 int UNUSED written = 0;
11165 IADDR UNUSED pc = abuf->addr;
11166 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11167
11168 {
11169 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11170 {
11171 SI tmp_tmp;
11172 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11173 {
11174 USI opval = tmp_tmp;
11175 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11176 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11177 }
11178 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))))) {
11179 if (EQSI (FLD (f_ccond), 0)) {
11180 if (NESI (tmp_tmp, 0)) {
11181 {
11182 USI opval = GET_H_SPR (((UINT) 272));
11183 sim_queue_pc_write (current_cpu, opval);
11184 written |= (1 << 6);
11185 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11186 }
11187 }
11188 } else {
11189 if (EQSI (tmp_tmp, 0)) {
11190 {
11191 USI opval = GET_H_SPR (((UINT) 272));
11192 sim_queue_pc_write (current_cpu, opval);
11193 written |= (1 << 6);
11194 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11195 }
11196 }
11197 }
11198 }
11199 }
11200 }
11201
11202 abuf->written = written;
11203 return vpc;
11204 #undef FLD
11205 }
11206
11207 /* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
11208
11209 static SEM_PC
11210 SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11211 {
11212 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11214 int UNUSED written = 0;
11215 IADDR UNUSED pc = abuf->addr;
11216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11217
11218 {
11219 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11220 {
11221 SI tmp_tmp;
11222 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11223 {
11224 USI opval = tmp_tmp;
11225 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11226 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11227 }
11228 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
11229 if (EQSI (FLD (f_ccond), 0)) {
11230 if (NESI (tmp_tmp, 0)) {
11231 {
11232 USI opval = GET_H_SPR (((UINT) 272));
11233 sim_queue_pc_write (current_cpu, opval);
11234 written |= (1 << 6);
11235 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11236 }
11237 }
11238 } else {
11239 if (EQSI (tmp_tmp, 0)) {
11240 {
11241 USI opval = GET_H_SPR (((UINT) 272));
11242 sim_queue_pc_write (current_cpu, opval);
11243 written |= (1 << 6);
11244 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11245 }
11246 }
11247 }
11248 }
11249 }
11250 }
11251
11252 abuf->written = written;
11253 return vpc;
11254 #undef FLD
11255 }
11256
11257 /* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11258
11259 static SEM_PC
11260 SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11261 {
11262 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11263 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11264 int UNUSED written = 0;
11265 IADDR UNUSED pc = abuf->addr;
11266 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11267
11268 {
11269 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11270 {
11271 SI tmp_tmp;
11272 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11273 {
11274 USI opval = tmp_tmp;
11275 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11276 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11277 }
11278 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)))) {
11279 if (EQSI (FLD (f_ccond), 0)) {
11280 if (NESI (tmp_tmp, 0)) {
11281 {
11282 USI opval = GET_H_SPR (((UINT) 272));
11283 sim_queue_pc_write (current_cpu, opval);
11284 written |= (1 << 6);
11285 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11286 }
11287 }
11288 } else {
11289 if (EQSI (tmp_tmp, 0)) {
11290 {
11291 USI opval = GET_H_SPR (((UINT) 272));
11292 sim_queue_pc_write (current_cpu, opval);
11293 written |= (1 << 6);
11294 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11295 }
11296 }
11297 }
11298 }
11299 }
11300 }
11301
11302 abuf->written = written;
11303 return vpc;
11304 #undef FLD
11305 }
11306
11307 /* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11308
11309 static SEM_PC
11310 SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11311 {
11312 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11313 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11314 int UNUSED written = 0;
11315 IADDR UNUSED pc = abuf->addr;
11316 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11317
11318 {
11319 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11320 {
11321 SI tmp_tmp;
11322 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11323 {
11324 USI opval = tmp_tmp;
11325 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11326 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11327 }
11328 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11329 if (EQSI (FLD (f_ccond), 0)) {
11330 if (NESI (tmp_tmp, 0)) {
11331 {
11332 USI opval = GET_H_SPR (((UINT) 272));
11333 sim_queue_pc_write (current_cpu, opval);
11334 written |= (1 << 6);
11335 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11336 }
11337 }
11338 } else {
11339 if (EQSI (tmp_tmp, 0)) {
11340 {
11341 USI opval = GET_H_SPR (((UINT) 272));
11342 sim_queue_pc_write (current_cpu, opval);
11343 written |= (1 << 6);
11344 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11345 }
11346 }
11347 }
11348 }
11349 }
11350 }
11351
11352 abuf->written = written;
11353 return vpc;
11354 #undef FLD
11355 }
11356
11357 /* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11358
11359 static SEM_PC
11360 SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11361 {
11362 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11364 int UNUSED written = 0;
11365 IADDR UNUSED pc = abuf->addr;
11366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11367
11368 {
11369 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11370 {
11371 SI tmp_tmp;
11372 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11373 {
11374 USI opval = tmp_tmp;
11375 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11376 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11377 }
11378 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))))) {
11379 if (EQSI (FLD (f_ccond), 0)) {
11380 if (NESI (tmp_tmp, 0)) {
11381 {
11382 USI opval = GET_H_SPR (((UINT) 272));
11383 sim_queue_pc_write (current_cpu, opval);
11384 written |= (1 << 6);
11385 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11386 }
11387 }
11388 } else {
11389 if (EQSI (tmp_tmp, 0)) {
11390 {
11391 USI opval = GET_H_SPR (((UINT) 272));
11392 sim_queue_pc_write (current_cpu, opval);
11393 written |= (1 << 6);
11394 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11395 }
11396 }
11397 }
11398 }
11399 }
11400 }
11401
11402 abuf->written = written;
11403 return vpc;
11404 #undef FLD
11405 }
11406
11407 /* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11408
11409 static SEM_PC
11410 SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11411 {
11412 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11414 int UNUSED written = 0;
11415 IADDR UNUSED pc = abuf->addr;
11416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11417
11418 {
11419 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11420 {
11421 SI tmp_tmp;
11422 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11423 {
11424 USI opval = tmp_tmp;
11425 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11426 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11427 }
11428 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11429 if (EQSI (FLD (f_ccond), 0)) {
11430 if (NESI (tmp_tmp, 0)) {
11431 {
11432 USI opval = GET_H_SPR (((UINT) 272));
11433 sim_queue_pc_write (current_cpu, opval);
11434 written |= (1 << 6);
11435 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11436 }
11437 }
11438 } else {
11439 if (EQSI (tmp_tmp, 0)) {
11440 {
11441 USI opval = GET_H_SPR (((UINT) 272));
11442 sim_queue_pc_write (current_cpu, opval);
11443 written |= (1 << 6);
11444 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11445 }
11446 }
11447 }
11448 }
11449 }
11450 }
11451
11452 abuf->written = written;
11453 return vpc;
11454 #undef FLD
11455 }
11456
11457 /* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11458
11459 static SEM_PC
11460 SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11461 {
11462 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11464 int UNUSED written = 0;
11465 IADDR UNUSED pc = abuf->addr;
11466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11467
11468 {
11469 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11470 {
11471 SI tmp_tmp;
11472 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11473 {
11474 USI opval = tmp_tmp;
11475 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11476 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11477 }
11478 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))))) {
11479 if (EQSI (FLD (f_ccond), 0)) {
11480 if (NESI (tmp_tmp, 0)) {
11481 {
11482 USI opval = GET_H_SPR (((UINT) 272));
11483 sim_queue_pc_write (current_cpu, opval);
11484 written |= (1 << 6);
11485 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11486 }
11487 }
11488 } else {
11489 if (EQSI (tmp_tmp, 0)) {
11490 {
11491 USI opval = GET_H_SPR (((UINT) 272));
11492 sim_queue_pc_write (current_cpu, opval);
11493 written |= (1 << 6);
11494 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11495 }
11496 }
11497 }
11498 }
11499 }
11500 }
11501
11502 abuf->written = written;
11503 return vpc;
11504 #undef FLD
11505 }
11506
11507 /* jmpl: jmpl$pack @($GRi,$GRj) */
11508
11509 static SEM_PC
11510 SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11511 {
11512 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11514 int UNUSED written = 0;
11515 IADDR UNUSED pc = abuf->addr;
11516 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11517
11518 {
11519 if (EQSI (FLD (f_LI), 1)) {
11520 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11521 }
11522 {
11523 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11524 sim_queue_pc_write (current_cpu, opval);
11525 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11526 }
11527 frvbf_model_branch (current_cpu, pc, 2);
11528 }
11529
11530 return vpc;
11531 #undef FLD
11532 }
11533
11534 /* calll: calll$pack @($GRi,$GRj) */
11535
11536 static SEM_PC
11537 SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11538 {
11539 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11540 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11541 int UNUSED written = 0;
11542 IADDR UNUSED pc = abuf->addr;
11543 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11544
11545 {
11546 if (EQSI (FLD (f_LI), 1)) {
11547 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11548 }
11549 {
11550 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11551 sim_queue_pc_write (current_cpu, opval);
11552 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11553 }
11554 frvbf_model_branch (current_cpu, pc, 2);
11555 }
11556
11557 return vpc;
11558 #undef FLD
11559 }
11560
11561 /* jmpil: jmpil$pack @($GRi,$s12) */
11562
11563 static SEM_PC
11564 SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11565 {
11566 #define FLD(f) abuf->fields.sfmt_jmpil.f
11567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11568 int UNUSED written = 0;
11569 IADDR UNUSED pc = abuf->addr;
11570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11571
11572 {
11573 if (EQSI (FLD (f_LI), 1)) {
11574 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11575 }
11576 {
11577 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11578 sim_queue_pc_write (current_cpu, opval);
11579 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11580 }
11581 frvbf_model_branch (current_cpu, pc, 2);
11582 }
11583
11584 return vpc;
11585 #undef FLD
11586 }
11587
11588 /* callil: callil$pack @($GRi,$s12) */
11589
11590 static SEM_PC
11591 SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11592 {
11593 #define FLD(f) abuf->fields.sfmt_jmpil.f
11594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11595 int UNUSED written = 0;
11596 IADDR UNUSED pc = abuf->addr;
11597 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11598
11599 {
11600 if (EQSI (FLD (f_LI), 1)) {
11601 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11602 }
11603 {
11604 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11605 sim_queue_pc_write (current_cpu, opval);
11606 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11607 }
11608 frvbf_model_branch (current_cpu, pc, 2);
11609 }
11610
11611 return vpc;
11612 #undef FLD
11613 }
11614
11615 /* call: call$pack $label24 */
11616
11617 static SEM_PC
11618 SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11619 {
11620 #define FLD(f) abuf->fields.sfmt_call.f
11621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11622 int UNUSED written = 0;
11623 IADDR UNUSED pc = abuf->addr;
11624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11625
11626 {
11627 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11628 {
11629 USI opval = FLD (i_label24);
11630 sim_queue_pc_write (current_cpu, opval);
11631 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11632 }
11633 frvbf_model_branch (current_cpu, pc, 2);
11634 }
11635
11636 return vpc;
11637 #undef FLD
11638 }
11639
11640 /* rett: rett$pack $debug */
11641
11642 static SEM_PC
11643 SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11644 {
11645 #define FLD(f) abuf->fields.sfmt_rett.f
11646 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11647 int UNUSED written = 0;
11648 IADDR UNUSED pc = abuf->addr;
11649 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11650
11651 {
11652 {
11653 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11654 sim_queue_pc_write (current_cpu, opval);
11655 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11656 }
11657 frvbf_model_branch (current_cpu, pc, 2);
11658 }
11659
11660 return vpc;
11661 #undef FLD
11662 }
11663
11664 /* rei: rei$pack $eir */
11665
11666 static SEM_PC
11667 SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11668 {
11669 #define FLD(f) abuf->fields.fmt_empty.f
11670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11671 int UNUSED written = 0;
11672 IADDR UNUSED pc = abuf->addr;
11673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11674
11675 ((void) 0); /*nop*/
11676
11677 return vpc;
11678 #undef FLD
11679 }
11680
11681 /* tra: tra$pack $GRi,$GRj */
11682
11683 static SEM_PC
11684 SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11685 {
11686 #define FLD(f) abuf->fields.sfmt_ftne.f
11687 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11688 int UNUSED written = 0;
11689 IADDR UNUSED pc = abuf->addr;
11690 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11691
11692 {
11693 ; /*clobber*/
11694 ; /*clobber*/
11695 ; /*clobber*/
11696 ; /*clobber*/
11697 if (NEBI (CPU (h_psr_esr), 0)) {
11698 {
11699 ; /*clobber*/
11700 ; /*clobber*/
11701 ; /*clobber*/
11702 ; /*clobber*/
11703 }
11704 }
11705 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11706 }
11707
11708 abuf->written = written;
11709 return vpc;
11710 #undef FLD
11711 }
11712
11713 /* tno: tno$pack */
11714
11715 static SEM_PC
11716 SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11717 {
11718 #define FLD(f) abuf->fields.fmt_empty.f
11719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11720 int UNUSED written = 0;
11721 IADDR UNUSED pc = abuf->addr;
11722 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11723
11724 ((void) 0); /*nop*/
11725
11726 return vpc;
11727 #undef FLD
11728 }
11729
11730 /* teq: teq$pack $ICCi_2,$GRi,$GRj */
11731
11732 static SEM_PC
11733 SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11734 {
11735 #define FLD(f) abuf->fields.sfmt_teq.f
11736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11737 int UNUSED written = 0;
11738 IADDR UNUSED pc = abuf->addr;
11739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11740
11741 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11742 {
11743 ; /*clobber*/
11744 ; /*clobber*/
11745 ; /*clobber*/
11746 ; /*clobber*/
11747 if (NEBI (CPU (h_psr_esr), 0)) {
11748 {
11749 ; /*clobber*/
11750 ; /*clobber*/
11751 ; /*clobber*/
11752 ; /*clobber*/
11753 }
11754 }
11755 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11756 }
11757 }
11758
11759 abuf->written = written;
11760 return vpc;
11761 #undef FLD
11762 }
11763
11764 /* tne: tne$pack $ICCi_2,$GRi,$GRj */
11765
11766 static SEM_PC
11767 SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11768 {
11769 #define FLD(f) abuf->fields.sfmt_teq.f
11770 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11771 int UNUSED written = 0;
11772 IADDR UNUSED pc = abuf->addr;
11773 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11774
11775 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11776 {
11777 ; /*clobber*/
11778 ; /*clobber*/
11779 ; /*clobber*/
11780 ; /*clobber*/
11781 if (NEBI (CPU (h_psr_esr), 0)) {
11782 {
11783 ; /*clobber*/
11784 ; /*clobber*/
11785 ; /*clobber*/
11786 ; /*clobber*/
11787 }
11788 }
11789 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11790 }
11791 }
11792
11793 abuf->written = written;
11794 return vpc;
11795 #undef FLD
11796 }
11797
11798 /* tle: tle$pack $ICCi_2,$GRi,$GRj */
11799
11800 static SEM_PC
11801 SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11802 {
11803 #define FLD(f) abuf->fields.sfmt_teq.f
11804 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11805 int UNUSED written = 0;
11806 IADDR UNUSED pc = abuf->addr;
11807 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11808
11809 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))))) {
11810 {
11811 ; /*clobber*/
11812 ; /*clobber*/
11813 ; /*clobber*/
11814 ; /*clobber*/
11815 if (NEBI (CPU (h_psr_esr), 0)) {
11816 {
11817 ; /*clobber*/
11818 ; /*clobber*/
11819 ; /*clobber*/
11820 ; /*clobber*/
11821 }
11822 }
11823 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11824 }
11825 }
11826
11827 abuf->written = written;
11828 return vpc;
11829 #undef FLD
11830 }
11831
11832 /* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11833
11834 static SEM_PC
11835 SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11836 {
11837 #define FLD(f) abuf->fields.sfmt_teq.f
11838 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11839 int UNUSED written = 0;
11840 IADDR UNUSED pc = abuf->addr;
11841 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11842
11843 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)))))) {
11844 {
11845 ; /*clobber*/
11846 ; /*clobber*/
11847 ; /*clobber*/
11848 ; /*clobber*/
11849 if (NEBI (CPU (h_psr_esr), 0)) {
11850 {
11851 ; /*clobber*/
11852 ; /*clobber*/
11853 ; /*clobber*/
11854 ; /*clobber*/
11855 }
11856 }
11857 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11858 }
11859 }
11860
11861 abuf->written = written;
11862 return vpc;
11863 #undef FLD
11864 }
11865
11866 /* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11867
11868 static SEM_PC
11869 SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11870 {
11871 #define FLD(f) abuf->fields.sfmt_teq.f
11872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11873 int UNUSED written = 0;
11874 IADDR UNUSED pc = abuf->addr;
11875 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11876
11877 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)))) {
11878 {
11879 ; /*clobber*/
11880 ; /*clobber*/
11881 ; /*clobber*/
11882 ; /*clobber*/
11883 if (NEBI (CPU (h_psr_esr), 0)) {
11884 {
11885 ; /*clobber*/
11886 ; /*clobber*/
11887 ; /*clobber*/
11888 ; /*clobber*/
11889 }
11890 }
11891 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11892 }
11893 }
11894
11895 abuf->written = written;
11896 return vpc;
11897 #undef FLD
11898 }
11899
11900 /* tge: tge$pack $ICCi_2,$GRi,$GRj */
11901
11902 static SEM_PC
11903 SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11904 {
11905 #define FLD(f) abuf->fields.sfmt_teq.f
11906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11907 int UNUSED written = 0;
11908 IADDR UNUSED pc = abuf->addr;
11909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11910
11911 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))))) {
11912 {
11913 ; /*clobber*/
11914 ; /*clobber*/
11915 ; /*clobber*/
11916 ; /*clobber*/
11917 if (NEBI (CPU (h_psr_esr), 0)) {
11918 {
11919 ; /*clobber*/
11920 ; /*clobber*/
11921 ; /*clobber*/
11922 ; /*clobber*/
11923 }
11924 }
11925 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11926 }
11927 }
11928
11929 abuf->written = written;
11930 return vpc;
11931 #undef FLD
11932 }
11933
11934 /* tls: tls$pack $ICCi_2,$GRi,$GRj */
11935
11936 static SEM_PC
11937 SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11938 {
11939 #define FLD(f) abuf->fields.sfmt_teq.f
11940 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11941 int UNUSED written = 0;
11942 IADDR UNUSED pc = abuf->addr;
11943 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11944
11945 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11946 {
11947 ; /*clobber*/
11948 ; /*clobber*/
11949 ; /*clobber*/
11950 ; /*clobber*/
11951 if (NEBI (CPU (h_psr_esr), 0)) {
11952 {
11953 ; /*clobber*/
11954 ; /*clobber*/
11955 ; /*clobber*/
11956 ; /*clobber*/
11957 }
11958 }
11959 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11960 }
11961 }
11962
11963 abuf->written = written;
11964 return vpc;
11965 #undef FLD
11966 }
11967
11968 /* thi: thi$pack $ICCi_2,$GRi,$GRj */
11969
11970 static SEM_PC
11971 SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11972 {
11973 #define FLD(f) abuf->fields.sfmt_teq.f
11974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11975 int UNUSED written = 0;
11976 IADDR UNUSED pc = abuf->addr;
11977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11978
11979 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))))) {
11980 {
11981 ; /*clobber*/
11982 ; /*clobber*/
11983 ; /*clobber*/
11984 ; /*clobber*/
11985 if (NEBI (CPU (h_psr_esr), 0)) {
11986 {
11987 ; /*clobber*/
11988 ; /*clobber*/
11989 ; /*clobber*/
11990 ; /*clobber*/
11991 }
11992 }
11993 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11994 }
11995 }
11996
11997 abuf->written = written;
11998 return vpc;
11999 #undef FLD
12000 }
12001
12002 /* tc: tc$pack $ICCi_2,$GRi,$GRj */
12003
12004 static SEM_PC
12005 SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12006 {
12007 #define FLD(f) abuf->fields.sfmt_teq.f
12008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12009 int UNUSED written = 0;
12010 IADDR UNUSED pc = abuf->addr;
12011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12012
12013 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12014 {
12015 ; /*clobber*/
12016 ; /*clobber*/
12017 ; /*clobber*/
12018 ; /*clobber*/
12019 if (NEBI (CPU (h_psr_esr), 0)) {
12020 {
12021 ; /*clobber*/
12022 ; /*clobber*/
12023 ; /*clobber*/
12024 ; /*clobber*/
12025 }
12026 }
12027 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12028 }
12029 }
12030
12031 abuf->written = written;
12032 return vpc;
12033 #undef FLD
12034 }
12035
12036 /* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
12037
12038 static SEM_PC
12039 SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12040 {
12041 #define FLD(f) abuf->fields.sfmt_teq.f
12042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12043 int UNUSED written = 0;
12044 IADDR UNUSED pc = abuf->addr;
12045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12046
12047 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12048 {
12049 ; /*clobber*/
12050 ; /*clobber*/
12051 ; /*clobber*/
12052 ; /*clobber*/
12053 if (NEBI (CPU (h_psr_esr), 0)) {
12054 {
12055 ; /*clobber*/
12056 ; /*clobber*/
12057 ; /*clobber*/
12058 ; /*clobber*/
12059 }
12060 }
12061 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12062 }
12063 }
12064
12065 abuf->written = written;
12066 return vpc;
12067 #undef FLD
12068 }
12069
12070 /* tn: tn$pack $ICCi_2,$GRi,$GRj */
12071
12072 static SEM_PC
12073 SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12074 {
12075 #define FLD(f) abuf->fields.sfmt_teq.f
12076 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12077 int UNUSED written = 0;
12078 IADDR UNUSED pc = abuf->addr;
12079 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12080
12081 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12082 {
12083 ; /*clobber*/
12084 ; /*clobber*/
12085 ; /*clobber*/
12086 ; /*clobber*/
12087 if (NEBI (CPU (h_psr_esr), 0)) {
12088 {
12089 ; /*clobber*/
12090 ; /*clobber*/
12091 ; /*clobber*/
12092 ; /*clobber*/
12093 }
12094 }
12095 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12096 }
12097 }
12098
12099 abuf->written = written;
12100 return vpc;
12101 #undef FLD
12102 }
12103
12104 /* tp: tp$pack $ICCi_2,$GRi,$GRj */
12105
12106 static SEM_PC
12107 SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12108 {
12109 #define FLD(f) abuf->fields.sfmt_teq.f
12110 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12111 int UNUSED written = 0;
12112 IADDR UNUSED pc = abuf->addr;
12113 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12114
12115 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12116 {
12117 ; /*clobber*/
12118 ; /*clobber*/
12119 ; /*clobber*/
12120 ; /*clobber*/
12121 if (NEBI (CPU (h_psr_esr), 0)) {
12122 {
12123 ; /*clobber*/
12124 ; /*clobber*/
12125 ; /*clobber*/
12126 ; /*clobber*/
12127 }
12128 }
12129 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12130 }
12131 }
12132
12133 abuf->written = written;
12134 return vpc;
12135 #undef FLD
12136 }
12137
12138 /* tv: tv$pack $ICCi_2,$GRi,$GRj */
12139
12140 static SEM_PC
12141 SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12142 {
12143 #define FLD(f) abuf->fields.sfmt_teq.f
12144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12145 int UNUSED written = 0;
12146 IADDR UNUSED pc = abuf->addr;
12147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12148
12149 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12150 {
12151 ; /*clobber*/
12152 ; /*clobber*/
12153 ; /*clobber*/
12154 ; /*clobber*/
12155 if (NEBI (CPU (h_psr_esr), 0)) {
12156 {
12157 ; /*clobber*/
12158 ; /*clobber*/
12159 ; /*clobber*/
12160 ; /*clobber*/
12161 }
12162 }
12163 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12164 }
12165 }
12166
12167 abuf->written = written;
12168 return vpc;
12169 #undef FLD
12170 }
12171
12172 /* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
12173
12174 static SEM_PC
12175 SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12176 {
12177 #define FLD(f) abuf->fields.sfmt_teq.f
12178 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12179 int UNUSED written = 0;
12180 IADDR UNUSED pc = abuf->addr;
12181 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12182
12183 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
12184 {
12185 ; /*clobber*/
12186 ; /*clobber*/
12187 ; /*clobber*/
12188 ; /*clobber*/
12189 if (NEBI (CPU (h_psr_esr), 0)) {
12190 {
12191 ; /*clobber*/
12192 ; /*clobber*/
12193 ; /*clobber*/
12194 ; /*clobber*/
12195 }
12196 }
12197 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12198 }
12199 }
12200
12201 abuf->written = written;
12202 return vpc;
12203 #undef FLD
12204 }
12205
12206 /* ftra: ftra$pack $GRi,$GRj */
12207
12208 static SEM_PC
12209 SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12210 {
12211 #define FLD(f) abuf->fields.sfmt_ftne.f
12212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12213 int UNUSED written = 0;
12214 IADDR UNUSED pc = abuf->addr;
12215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12216
12217 {
12218 ; /*clobber*/
12219 ; /*clobber*/
12220 ; /*clobber*/
12221 ; /*clobber*/
12222 if (NEBI (CPU (h_psr_esr), 0)) {
12223 {
12224 ; /*clobber*/
12225 ; /*clobber*/
12226 ; /*clobber*/
12227 ; /*clobber*/
12228 }
12229 }
12230 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12231 }
12232
12233 abuf->written = written;
12234 return vpc;
12235 #undef FLD
12236 }
12237
12238 /* ftno: ftno$pack */
12239
12240 static SEM_PC
12241 SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12242 {
12243 #define FLD(f) abuf->fields.fmt_empty.f
12244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12245 int UNUSED written = 0;
12246 IADDR UNUSED pc = abuf->addr;
12247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12248
12249 ((void) 0); /*nop*/
12250
12251 return vpc;
12252 #undef FLD
12253 }
12254
12255 /* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12256
12257 static SEM_PC
12258 SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12259 {
12260 #define FLD(f) abuf->fields.sfmt_ftne.f
12261 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12262 int UNUSED written = 0;
12263 IADDR UNUSED pc = abuf->addr;
12264 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12265
12266 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))))) {
12267 {
12268 ; /*clobber*/
12269 ; /*clobber*/
12270 ; /*clobber*/
12271 ; /*clobber*/
12272 if (NEBI (CPU (h_psr_esr), 0)) {
12273 {
12274 ; /*clobber*/
12275 ; /*clobber*/
12276 ; /*clobber*/
12277 ; /*clobber*/
12278 }
12279 }
12280 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12281 }
12282 }
12283
12284 abuf->written = written;
12285 return vpc;
12286 #undef FLD
12287 }
12288
12289 /* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12290
12291 static SEM_PC
12292 SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12293 {
12294 #define FLD(f) abuf->fields.sfmt_ftne.f
12295 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12296 int UNUSED written = 0;
12297 IADDR UNUSED pc = abuf->addr;
12298 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12299
12300 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12301 {
12302 ; /*clobber*/
12303 ; /*clobber*/
12304 ; /*clobber*/
12305 ; /*clobber*/
12306 if (NEBI (CPU (h_psr_esr), 0)) {
12307 {
12308 ; /*clobber*/
12309 ; /*clobber*/
12310 ; /*clobber*/
12311 ; /*clobber*/
12312 }
12313 }
12314 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12315 }
12316 }
12317
12318 abuf->written = written;
12319 return vpc;
12320 #undef FLD
12321 }
12322
12323 /* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12324
12325 static SEM_PC
12326 SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12327 {
12328 #define FLD(f) abuf->fields.sfmt_ftne.f
12329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12330 int UNUSED written = 0;
12331 IADDR UNUSED pc = abuf->addr;
12332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12333
12334 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)))) {
12335 {
12336 ; /*clobber*/
12337 ; /*clobber*/
12338 ; /*clobber*/
12339 ; /*clobber*/
12340 if (NEBI (CPU (h_psr_esr), 0)) {
12341 {
12342 ; /*clobber*/
12343 ; /*clobber*/
12344 ; /*clobber*/
12345 ; /*clobber*/
12346 }
12347 }
12348 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12349 }
12350 }
12351
12352 abuf->written = written;
12353 return vpc;
12354 #undef FLD
12355 }
12356
12357 /* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12358
12359 static SEM_PC
12360 SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12361 {
12362 #define FLD(f) abuf->fields.sfmt_ftne.f
12363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12364 int UNUSED written = 0;
12365 IADDR UNUSED pc = abuf->addr;
12366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12367
12368 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12369 {
12370 ; /*clobber*/
12371 ; /*clobber*/
12372 ; /*clobber*/
12373 ; /*clobber*/
12374 if (NEBI (CPU (h_psr_esr), 0)) {
12375 {
12376 ; /*clobber*/
12377 ; /*clobber*/
12378 ; /*clobber*/
12379 ; /*clobber*/
12380 }
12381 }
12382 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12383 }
12384 }
12385
12386 abuf->written = written;
12387 return vpc;
12388 #undef FLD
12389 }
12390
12391 /* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12392
12393 static SEM_PC
12394 SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12395 {
12396 #define FLD(f) abuf->fields.sfmt_ftne.f
12397 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12398 int UNUSED written = 0;
12399 IADDR UNUSED pc = abuf->addr;
12400 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12401
12402 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12403 {
12404 ; /*clobber*/
12405 ; /*clobber*/
12406 ; /*clobber*/
12407 ; /*clobber*/
12408 if (NEBI (CPU (h_psr_esr), 0)) {
12409 {
12410 ; /*clobber*/
12411 ; /*clobber*/
12412 ; /*clobber*/
12413 ; /*clobber*/
12414 }
12415 }
12416 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12417 }
12418 }
12419
12420 abuf->written = written;
12421 return vpc;
12422 #undef FLD
12423 }
12424
12425 /* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12426
12427 static SEM_PC
12428 SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12429 {
12430 #define FLD(f) abuf->fields.sfmt_ftne.f
12431 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12432 int UNUSED written = 0;
12433 IADDR UNUSED pc = abuf->addr;
12434 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12435
12436 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)))) {
12437 {
12438 ; /*clobber*/
12439 ; /*clobber*/
12440 ; /*clobber*/
12441 ; /*clobber*/
12442 if (NEBI (CPU (h_psr_esr), 0)) {
12443 {
12444 ; /*clobber*/
12445 ; /*clobber*/
12446 ; /*clobber*/
12447 ; /*clobber*/
12448 }
12449 }
12450 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12451 }
12452 }
12453
12454 abuf->written = written;
12455 return vpc;
12456 #undef FLD
12457 }
12458
12459 /* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12460
12461 static SEM_PC
12462 SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12463 {
12464 #define FLD(f) abuf->fields.sfmt_ftne.f
12465 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12466 int UNUSED written = 0;
12467 IADDR UNUSED pc = abuf->addr;
12468 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12469
12470 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12471 {
12472 ; /*clobber*/
12473 ; /*clobber*/
12474 ; /*clobber*/
12475 ; /*clobber*/
12476 if (NEBI (CPU (h_psr_esr), 0)) {
12477 {
12478 ; /*clobber*/
12479 ; /*clobber*/
12480 ; /*clobber*/
12481 ; /*clobber*/
12482 }
12483 }
12484 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12485 }
12486 }
12487
12488 abuf->written = written;
12489 return vpc;
12490 #undef FLD
12491 }
12492
12493 /* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12494
12495 static SEM_PC
12496 SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12497 {
12498 #define FLD(f) abuf->fields.sfmt_ftne.f
12499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12500 int UNUSED written = 0;
12501 IADDR UNUSED pc = abuf->addr;
12502 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12503
12504 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))))) {
12505 {
12506 ; /*clobber*/
12507 ; /*clobber*/
12508 ; /*clobber*/
12509 ; /*clobber*/
12510 if (NEBI (CPU (h_psr_esr), 0)) {
12511 {
12512 ; /*clobber*/
12513 ; /*clobber*/
12514 ; /*clobber*/
12515 ; /*clobber*/
12516 }
12517 }
12518 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12519 }
12520 }
12521
12522 abuf->written = written;
12523 return vpc;
12524 #undef FLD
12525 }
12526
12527 /* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12528
12529 static SEM_PC
12530 SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12531 {
12532 #define FLD(f) abuf->fields.sfmt_ftne.f
12533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12534 int UNUSED written = 0;
12535 IADDR UNUSED pc = abuf->addr;
12536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12537
12538 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12539 {
12540 ; /*clobber*/
12541 ; /*clobber*/
12542 ; /*clobber*/
12543 ; /*clobber*/
12544 if (NEBI (CPU (h_psr_esr), 0)) {
12545 {
12546 ; /*clobber*/
12547 ; /*clobber*/
12548 ; /*clobber*/
12549 ; /*clobber*/
12550 }
12551 }
12552 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12553 }
12554 }
12555
12556 abuf->written = written;
12557 return vpc;
12558 #undef FLD
12559 }
12560
12561 /* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12562
12563 static SEM_PC
12564 SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12565 {
12566 #define FLD(f) abuf->fields.sfmt_ftne.f
12567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12568 int UNUSED written = 0;
12569 IADDR UNUSED pc = abuf->addr;
12570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12571
12572 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)))) {
12573 {
12574 ; /*clobber*/
12575 ; /*clobber*/
12576 ; /*clobber*/
12577 ; /*clobber*/
12578 if (NEBI (CPU (h_psr_esr), 0)) {
12579 {
12580 ; /*clobber*/
12581 ; /*clobber*/
12582 ; /*clobber*/
12583 ; /*clobber*/
12584 }
12585 }
12586 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12587 }
12588 }
12589
12590 abuf->written = written;
12591 return vpc;
12592 #undef FLD
12593 }
12594
12595 /* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12596
12597 static SEM_PC
12598 SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12599 {
12600 #define FLD(f) abuf->fields.sfmt_ftne.f
12601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12602 int UNUSED written = 0;
12603 IADDR UNUSED pc = abuf->addr;
12604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12605
12606 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12607 {
12608 ; /*clobber*/
12609 ; /*clobber*/
12610 ; /*clobber*/
12611 ; /*clobber*/
12612 if (NEBI (CPU (h_psr_esr), 0)) {
12613 {
12614 ; /*clobber*/
12615 ; /*clobber*/
12616 ; /*clobber*/
12617 ; /*clobber*/
12618 }
12619 }
12620 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12621 }
12622 }
12623
12624 abuf->written = written;
12625 return vpc;
12626 #undef FLD
12627 }
12628
12629 /* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12630
12631 static SEM_PC
12632 SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12633 {
12634 #define FLD(f) abuf->fields.sfmt_ftne.f
12635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12636 int UNUSED written = 0;
12637 IADDR UNUSED pc = abuf->addr;
12638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12639
12640 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))))) {
12641 {
12642 ; /*clobber*/
12643 ; /*clobber*/
12644 ; /*clobber*/
12645 ; /*clobber*/
12646 if (NEBI (CPU (h_psr_esr), 0)) {
12647 {
12648 ; /*clobber*/
12649 ; /*clobber*/
12650 ; /*clobber*/
12651 ; /*clobber*/
12652 }
12653 }
12654 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12655 }
12656 }
12657
12658 abuf->written = written;
12659 return vpc;
12660 #undef FLD
12661 }
12662
12663 /* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12664
12665 static SEM_PC
12666 SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12667 {
12668 #define FLD(f) abuf->fields.sfmt_ftne.f
12669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12670 int UNUSED written = 0;
12671 IADDR UNUSED pc = abuf->addr;
12672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12673
12674 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12675 {
12676 ; /*clobber*/
12677 ; /*clobber*/
12678 ; /*clobber*/
12679 ; /*clobber*/
12680 if (NEBI (CPU (h_psr_esr), 0)) {
12681 {
12682 ; /*clobber*/
12683 ; /*clobber*/
12684 ; /*clobber*/
12685 ; /*clobber*/
12686 }
12687 }
12688 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12689 }
12690 }
12691
12692 abuf->written = written;
12693 return vpc;
12694 #undef FLD
12695 }
12696
12697 /* fto: fto$pack $FCCi_2,$GRi,$GRj */
12698
12699 static SEM_PC
12700 SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12701 {
12702 #define FLD(f) abuf->fields.sfmt_ftne.f
12703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12704 int UNUSED written = 0;
12705 IADDR UNUSED pc = abuf->addr;
12706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12707
12708 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))))) {
12709 {
12710 ; /*clobber*/
12711 ; /*clobber*/
12712 ; /*clobber*/
12713 ; /*clobber*/
12714 if (NEBI (CPU (h_psr_esr), 0)) {
12715 {
12716 ; /*clobber*/
12717 ; /*clobber*/
12718 ; /*clobber*/
12719 ; /*clobber*/
12720 }
12721 }
12722 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12723 }
12724 }
12725
12726 abuf->written = written;
12727 return vpc;
12728 #undef FLD
12729 }
12730
12731 /* tira: tira$pack $GRi,$s12 */
12732
12733 static SEM_PC
12734 SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12735 {
12736 #define FLD(f) abuf->fields.sfmt_ftine.f
12737 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12738 int UNUSED written = 0;
12739 IADDR UNUSED pc = abuf->addr;
12740 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12741
12742 {
12743 ; /*clobber*/
12744 ; /*clobber*/
12745 ; /*clobber*/
12746 ; /*clobber*/
12747 if (NEBI (CPU (h_psr_esr), 0)) {
12748 {
12749 ; /*clobber*/
12750 ; /*clobber*/
12751 ; /*clobber*/
12752 ; /*clobber*/
12753 }
12754 }
12755 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12756 }
12757
12758 abuf->written = written;
12759 return vpc;
12760 #undef FLD
12761 }
12762
12763 /* tino: tino$pack */
12764
12765 static SEM_PC
12766 SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12767 {
12768 #define FLD(f) abuf->fields.fmt_empty.f
12769 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12770 int UNUSED written = 0;
12771 IADDR UNUSED pc = abuf->addr;
12772 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12773
12774 ((void) 0); /*nop*/
12775
12776 return vpc;
12777 #undef FLD
12778 }
12779
12780 /* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12781
12782 static SEM_PC
12783 SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12784 {
12785 #define FLD(f) abuf->fields.sfmt_tieq.f
12786 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12787 int UNUSED written = 0;
12788 IADDR UNUSED pc = abuf->addr;
12789 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12790
12791 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12792 {
12793 ; /*clobber*/
12794 ; /*clobber*/
12795 ; /*clobber*/
12796 ; /*clobber*/
12797 if (NEBI (CPU (h_psr_esr), 0)) {
12798 {
12799 ; /*clobber*/
12800 ; /*clobber*/
12801 ; /*clobber*/
12802 ; /*clobber*/
12803 }
12804 }
12805 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12806 }
12807 }
12808
12809 abuf->written = written;
12810 return vpc;
12811 #undef FLD
12812 }
12813
12814 /* tine: tine$pack $ICCi_2,$GRi,$s12 */
12815
12816 static SEM_PC
12817 SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12818 {
12819 #define FLD(f) abuf->fields.sfmt_tieq.f
12820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12821 int UNUSED written = 0;
12822 IADDR UNUSED pc = abuf->addr;
12823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12824
12825 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12826 {
12827 ; /*clobber*/
12828 ; /*clobber*/
12829 ; /*clobber*/
12830 ; /*clobber*/
12831 if (NEBI (CPU (h_psr_esr), 0)) {
12832 {
12833 ; /*clobber*/
12834 ; /*clobber*/
12835 ; /*clobber*/
12836 ; /*clobber*/
12837 }
12838 }
12839 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12840 }
12841 }
12842
12843 abuf->written = written;
12844 return vpc;
12845 #undef FLD
12846 }
12847
12848 /* tile: tile$pack $ICCi_2,$GRi,$s12 */
12849
12850 static SEM_PC
12851 SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12852 {
12853 #define FLD(f) abuf->fields.sfmt_tieq.f
12854 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12855 int UNUSED written = 0;
12856 IADDR UNUSED pc = abuf->addr;
12857 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12858
12859 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))))) {
12860 {
12861 ; /*clobber*/
12862 ; /*clobber*/
12863 ; /*clobber*/
12864 ; /*clobber*/
12865 if (NEBI (CPU (h_psr_esr), 0)) {
12866 {
12867 ; /*clobber*/
12868 ; /*clobber*/
12869 ; /*clobber*/
12870 ; /*clobber*/
12871 }
12872 }
12873 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12874 }
12875 }
12876
12877 abuf->written = written;
12878 return vpc;
12879 #undef FLD
12880 }
12881
12882 /* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12883
12884 static SEM_PC
12885 SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12886 {
12887 #define FLD(f) abuf->fields.sfmt_tieq.f
12888 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12889 int UNUSED written = 0;
12890 IADDR UNUSED pc = abuf->addr;
12891 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12892
12893 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)))))) {
12894 {
12895 ; /*clobber*/
12896 ; /*clobber*/
12897 ; /*clobber*/
12898 ; /*clobber*/
12899 if (NEBI (CPU (h_psr_esr), 0)) {
12900 {
12901 ; /*clobber*/
12902 ; /*clobber*/
12903 ; /*clobber*/
12904 ; /*clobber*/
12905 }
12906 }
12907 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12908 }
12909 }
12910
12911 abuf->written = written;
12912 return vpc;
12913 #undef FLD
12914 }
12915
12916 /* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12917
12918 static SEM_PC
12919 SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12920 {
12921 #define FLD(f) abuf->fields.sfmt_tieq.f
12922 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12923 int UNUSED written = 0;
12924 IADDR UNUSED pc = abuf->addr;
12925 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12926
12927 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)))) {
12928 {
12929 ; /*clobber*/
12930 ; /*clobber*/
12931 ; /*clobber*/
12932 ; /*clobber*/
12933 if (NEBI (CPU (h_psr_esr), 0)) {
12934 {
12935 ; /*clobber*/
12936 ; /*clobber*/
12937 ; /*clobber*/
12938 ; /*clobber*/
12939 }
12940 }
12941 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12942 }
12943 }
12944
12945 abuf->written = written;
12946 return vpc;
12947 #undef FLD
12948 }
12949
12950 /* tige: tige$pack $ICCi_2,$GRi,$s12 */
12951
12952 static SEM_PC
12953 SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12954 {
12955 #define FLD(f) abuf->fields.sfmt_tieq.f
12956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12957 int UNUSED written = 0;
12958 IADDR UNUSED pc = abuf->addr;
12959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12960
12961 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))))) {
12962 {
12963 ; /*clobber*/
12964 ; /*clobber*/
12965 ; /*clobber*/
12966 ; /*clobber*/
12967 if (NEBI (CPU (h_psr_esr), 0)) {
12968 {
12969 ; /*clobber*/
12970 ; /*clobber*/
12971 ; /*clobber*/
12972 ; /*clobber*/
12973 }
12974 }
12975 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12976 }
12977 }
12978
12979 abuf->written = written;
12980 return vpc;
12981 #undef FLD
12982 }
12983
12984 /* tils: tils$pack $ICCi_2,$GRi,$s12 */
12985
12986 static SEM_PC
12987 SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12988 {
12989 #define FLD(f) abuf->fields.sfmt_tieq.f
12990 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12991 int UNUSED written = 0;
12992 IADDR UNUSED pc = abuf->addr;
12993 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12994
12995 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12996 {
12997 ; /*clobber*/
12998 ; /*clobber*/
12999 ; /*clobber*/
13000 ; /*clobber*/
13001 if (NEBI (CPU (h_psr_esr), 0)) {
13002 {
13003 ; /*clobber*/
13004 ; /*clobber*/
13005 ; /*clobber*/
13006 ; /*clobber*/
13007 }
13008 }
13009 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13010 }
13011 }
13012
13013 abuf->written = written;
13014 return vpc;
13015 #undef FLD
13016 }
13017
13018 /* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
13019
13020 static SEM_PC
13021 SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13022 {
13023 #define FLD(f) abuf->fields.sfmt_tieq.f
13024 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13025 int UNUSED written = 0;
13026 IADDR UNUSED pc = abuf->addr;
13027 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13028
13029 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))))) {
13030 {
13031 ; /*clobber*/
13032 ; /*clobber*/
13033 ; /*clobber*/
13034 ; /*clobber*/
13035 if (NEBI (CPU (h_psr_esr), 0)) {
13036 {
13037 ; /*clobber*/
13038 ; /*clobber*/
13039 ; /*clobber*/
13040 ; /*clobber*/
13041 }
13042 }
13043 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13044 }
13045 }
13046
13047 abuf->written = written;
13048 return vpc;
13049 #undef FLD
13050 }
13051
13052 /* tic: tic$pack $ICCi_2,$GRi,$s12 */
13053
13054 static SEM_PC
13055 SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13056 {
13057 #define FLD(f) abuf->fields.sfmt_tieq.f
13058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13059 int UNUSED written = 0;
13060 IADDR UNUSED pc = abuf->addr;
13061 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13062
13063 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
13064 {
13065 ; /*clobber*/
13066 ; /*clobber*/
13067 ; /*clobber*/
13068 ; /*clobber*/
13069 if (NEBI (CPU (h_psr_esr), 0)) {
13070 {
13071 ; /*clobber*/
13072 ; /*clobber*/
13073 ; /*clobber*/
13074 ; /*clobber*/
13075 }
13076 }
13077 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13078 }
13079 }
13080
13081 abuf->written = written;
13082 return vpc;
13083 #undef FLD
13084 }
13085
13086 /* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
13087
13088 static SEM_PC
13089 SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13090 {
13091 #define FLD(f) abuf->fields.sfmt_tieq.f
13092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13093 int UNUSED written = 0;
13094 IADDR UNUSED pc = abuf->addr;
13095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13096
13097 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
13098 {
13099 ; /*clobber*/
13100 ; /*clobber*/
13101 ; /*clobber*/
13102 ; /*clobber*/
13103 if (NEBI (CPU (h_psr_esr), 0)) {
13104 {
13105 ; /*clobber*/
13106 ; /*clobber*/
13107 ; /*clobber*/
13108 ; /*clobber*/
13109 }
13110 }
13111 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13112 }
13113 }
13114
13115 abuf->written = written;
13116 return vpc;
13117 #undef FLD
13118 }
13119
13120 /* tin: tin$pack $ICCi_2,$GRi,$s12 */
13121
13122 static SEM_PC
13123 SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13124 {
13125 #define FLD(f) abuf->fields.sfmt_tieq.f
13126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13127 int UNUSED written = 0;
13128 IADDR UNUSED pc = abuf->addr;
13129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13130
13131 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
13132 {
13133 ; /*clobber*/
13134 ; /*clobber*/
13135 ; /*clobber*/
13136 ; /*clobber*/
13137 if (NEBI (CPU (h_psr_esr), 0)) {
13138 {
13139 ; /*clobber*/
13140 ; /*clobber*/
13141 ; /*clobber*/
13142 ; /*clobber*/
13143 }
13144 }
13145 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13146 }
13147 }
13148
13149 abuf->written = written;
13150 return vpc;
13151 #undef FLD
13152 }
13153
13154 /* tip: tip$pack $ICCi_2,$GRi,$s12 */
13155
13156 static SEM_PC
13157 SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13158 {
13159 #define FLD(f) abuf->fields.sfmt_tieq.f
13160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13161 int UNUSED written = 0;
13162 IADDR UNUSED pc = abuf->addr;
13163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13164
13165 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
13166 {
13167 ; /*clobber*/
13168 ; /*clobber*/
13169 ; /*clobber*/
13170 ; /*clobber*/
13171 if (NEBI (CPU (h_psr_esr), 0)) {
13172 {
13173 ; /*clobber*/
13174 ; /*clobber*/
13175 ; /*clobber*/
13176 ; /*clobber*/
13177 }
13178 }
13179 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13180 }
13181 }
13182
13183 abuf->written = written;
13184 return vpc;
13185 #undef FLD
13186 }
13187
13188 /* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
13189
13190 static SEM_PC
13191 SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13192 {
13193 #define FLD(f) abuf->fields.sfmt_tieq.f
13194 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13195 int UNUSED written = 0;
13196 IADDR UNUSED pc = abuf->addr;
13197 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13198
13199 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
13200 {
13201 ; /*clobber*/
13202 ; /*clobber*/
13203 ; /*clobber*/
13204 ; /*clobber*/
13205 if (NEBI (CPU (h_psr_esr), 0)) {
13206 {
13207 ; /*clobber*/
13208 ; /*clobber*/
13209 ; /*clobber*/
13210 ; /*clobber*/
13211 }
13212 }
13213 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13214 }
13215 }
13216
13217 abuf->written = written;
13218 return vpc;
13219 #undef FLD
13220 }
13221
13222 /* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
13223
13224 static SEM_PC
13225 SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13226 {
13227 #define FLD(f) abuf->fields.sfmt_tieq.f
13228 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13229 int UNUSED written = 0;
13230 IADDR UNUSED pc = abuf->addr;
13231 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13232
13233 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13234 {
13235 ; /*clobber*/
13236 ; /*clobber*/
13237 ; /*clobber*/
13238 ; /*clobber*/
13239 if (NEBI (CPU (h_psr_esr), 0)) {
13240 {
13241 ; /*clobber*/
13242 ; /*clobber*/
13243 ; /*clobber*/
13244 ; /*clobber*/
13245 }
13246 }
13247 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13248 }
13249 }
13250
13251 abuf->written = written;
13252 return vpc;
13253 #undef FLD
13254 }
13255
13256 /* ftira: ftira$pack $GRi,$s12 */
13257
13258 static SEM_PC
13259 SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13260 {
13261 #define FLD(f) abuf->fields.sfmt_ftine.f
13262 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13263 int UNUSED written = 0;
13264 IADDR UNUSED pc = abuf->addr;
13265 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13266
13267 {
13268 ; /*clobber*/
13269 ; /*clobber*/
13270 ; /*clobber*/
13271 ; /*clobber*/
13272 if (NEBI (CPU (h_psr_esr), 0)) {
13273 {
13274 ; /*clobber*/
13275 ; /*clobber*/
13276 ; /*clobber*/
13277 ; /*clobber*/
13278 }
13279 }
13280 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13281 }
13282
13283 abuf->written = written;
13284 return vpc;
13285 #undef FLD
13286 }
13287
13288 /* ftino: ftino$pack */
13289
13290 static SEM_PC
13291 SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13292 {
13293 #define FLD(f) abuf->fields.fmt_empty.f
13294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13295 int UNUSED written = 0;
13296 IADDR UNUSED pc = abuf->addr;
13297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13298
13299 ((void) 0); /*nop*/
13300
13301 return vpc;
13302 #undef FLD
13303 }
13304
13305 /* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13306
13307 static SEM_PC
13308 SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13309 {
13310 #define FLD(f) abuf->fields.sfmt_ftine.f
13311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13312 int UNUSED written = 0;
13313 IADDR UNUSED pc = abuf->addr;
13314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13315
13316 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))))) {
13317 {
13318 ; /*clobber*/
13319 ; /*clobber*/
13320 ; /*clobber*/
13321 ; /*clobber*/
13322 if (NEBI (CPU (h_psr_esr), 0)) {
13323 {
13324 ; /*clobber*/
13325 ; /*clobber*/
13326 ; /*clobber*/
13327 ; /*clobber*/
13328 }
13329 }
13330 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13331 }
13332 }
13333
13334 abuf->written = written;
13335 return vpc;
13336 #undef FLD
13337 }
13338
13339 /* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13340
13341 static SEM_PC
13342 SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13343 {
13344 #define FLD(f) abuf->fields.sfmt_ftine.f
13345 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13346 int UNUSED written = 0;
13347 IADDR UNUSED pc = abuf->addr;
13348 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13349
13350 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13351 {
13352 ; /*clobber*/
13353 ; /*clobber*/
13354 ; /*clobber*/
13355 ; /*clobber*/
13356 if (NEBI (CPU (h_psr_esr), 0)) {
13357 {
13358 ; /*clobber*/
13359 ; /*clobber*/
13360 ; /*clobber*/
13361 ; /*clobber*/
13362 }
13363 }
13364 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13365 }
13366 }
13367
13368 abuf->written = written;
13369 return vpc;
13370 #undef FLD
13371 }
13372
13373 /* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13374
13375 static SEM_PC
13376 SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13377 {
13378 #define FLD(f) abuf->fields.sfmt_ftine.f
13379 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13380 int UNUSED written = 0;
13381 IADDR UNUSED pc = abuf->addr;
13382 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13383
13384 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)))) {
13385 {
13386 ; /*clobber*/
13387 ; /*clobber*/
13388 ; /*clobber*/
13389 ; /*clobber*/
13390 if (NEBI (CPU (h_psr_esr), 0)) {
13391 {
13392 ; /*clobber*/
13393 ; /*clobber*/
13394 ; /*clobber*/
13395 ; /*clobber*/
13396 }
13397 }
13398 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13399 }
13400 }
13401
13402 abuf->written = written;
13403 return vpc;
13404 #undef FLD
13405 }
13406
13407 /* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13408
13409 static SEM_PC
13410 SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13411 {
13412 #define FLD(f) abuf->fields.sfmt_ftine.f
13413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13414 int UNUSED written = 0;
13415 IADDR UNUSED pc = abuf->addr;
13416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13417
13418 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13419 {
13420 ; /*clobber*/
13421 ; /*clobber*/
13422 ; /*clobber*/
13423 ; /*clobber*/
13424 if (NEBI (CPU (h_psr_esr), 0)) {
13425 {
13426 ; /*clobber*/
13427 ; /*clobber*/
13428 ; /*clobber*/
13429 ; /*clobber*/
13430 }
13431 }
13432 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13433 }
13434 }
13435
13436 abuf->written = written;
13437 return vpc;
13438 #undef FLD
13439 }
13440
13441 /* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13442
13443 static SEM_PC
13444 SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13445 {
13446 #define FLD(f) abuf->fields.sfmt_ftine.f
13447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13448 int UNUSED written = 0;
13449 IADDR UNUSED pc = abuf->addr;
13450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13451
13452 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13453 {
13454 ; /*clobber*/
13455 ; /*clobber*/
13456 ; /*clobber*/
13457 ; /*clobber*/
13458 if (NEBI (CPU (h_psr_esr), 0)) {
13459 {
13460 ; /*clobber*/
13461 ; /*clobber*/
13462 ; /*clobber*/
13463 ; /*clobber*/
13464 }
13465 }
13466 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13467 }
13468 }
13469
13470 abuf->written = written;
13471 return vpc;
13472 #undef FLD
13473 }
13474
13475 /* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13476
13477 static SEM_PC
13478 SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13479 {
13480 #define FLD(f) abuf->fields.sfmt_ftine.f
13481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13482 int UNUSED written = 0;
13483 IADDR UNUSED pc = abuf->addr;
13484 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13485
13486 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)))) {
13487 {
13488 ; /*clobber*/
13489 ; /*clobber*/
13490 ; /*clobber*/
13491 ; /*clobber*/
13492 if (NEBI (CPU (h_psr_esr), 0)) {
13493 {
13494 ; /*clobber*/
13495 ; /*clobber*/
13496 ; /*clobber*/
13497 ; /*clobber*/
13498 }
13499 }
13500 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13501 }
13502 }
13503
13504 abuf->written = written;
13505 return vpc;
13506 #undef FLD
13507 }
13508
13509 /* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13510
13511 static SEM_PC
13512 SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13513 {
13514 #define FLD(f) abuf->fields.sfmt_ftine.f
13515 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13516 int UNUSED written = 0;
13517 IADDR UNUSED pc = abuf->addr;
13518 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13519
13520 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13521 {
13522 ; /*clobber*/
13523 ; /*clobber*/
13524 ; /*clobber*/
13525 ; /*clobber*/
13526 if (NEBI (CPU (h_psr_esr), 0)) {
13527 {
13528 ; /*clobber*/
13529 ; /*clobber*/
13530 ; /*clobber*/
13531 ; /*clobber*/
13532 }
13533 }
13534 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13535 }
13536 }
13537
13538 abuf->written = written;
13539 return vpc;
13540 #undef FLD
13541 }
13542
13543 /* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13544
13545 static SEM_PC
13546 SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13547 {
13548 #define FLD(f) abuf->fields.sfmt_ftine.f
13549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13550 int UNUSED written = 0;
13551 IADDR UNUSED pc = abuf->addr;
13552 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13553
13554 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))))) {
13555 {
13556 ; /*clobber*/
13557 ; /*clobber*/
13558 ; /*clobber*/
13559 ; /*clobber*/
13560 if (NEBI (CPU (h_psr_esr), 0)) {
13561 {
13562 ; /*clobber*/
13563 ; /*clobber*/
13564 ; /*clobber*/
13565 ; /*clobber*/
13566 }
13567 }
13568 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13569 }
13570 }
13571
13572 abuf->written = written;
13573 return vpc;
13574 #undef FLD
13575 }
13576
13577 /* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13578
13579 static SEM_PC
13580 SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13581 {
13582 #define FLD(f) abuf->fields.sfmt_ftine.f
13583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13584 int UNUSED written = 0;
13585 IADDR UNUSED pc = abuf->addr;
13586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13587
13588 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13589 {
13590 ; /*clobber*/
13591 ; /*clobber*/
13592 ; /*clobber*/
13593 ; /*clobber*/
13594 if (NEBI (CPU (h_psr_esr), 0)) {
13595 {
13596 ; /*clobber*/
13597 ; /*clobber*/
13598 ; /*clobber*/
13599 ; /*clobber*/
13600 }
13601 }
13602 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13603 }
13604 }
13605
13606 abuf->written = written;
13607 return vpc;
13608 #undef FLD
13609 }
13610
13611 /* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13612
13613 static SEM_PC
13614 SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13615 {
13616 #define FLD(f) abuf->fields.sfmt_ftine.f
13617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13618 int UNUSED written = 0;
13619 IADDR UNUSED pc = abuf->addr;
13620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13621
13622 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)))) {
13623 {
13624 ; /*clobber*/
13625 ; /*clobber*/
13626 ; /*clobber*/
13627 ; /*clobber*/
13628 if (NEBI (CPU (h_psr_esr), 0)) {
13629 {
13630 ; /*clobber*/
13631 ; /*clobber*/
13632 ; /*clobber*/
13633 ; /*clobber*/
13634 }
13635 }
13636 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13637 }
13638 }
13639
13640 abuf->written = written;
13641 return vpc;
13642 #undef FLD
13643 }
13644
13645 /* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13646
13647 static SEM_PC
13648 SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13649 {
13650 #define FLD(f) abuf->fields.sfmt_ftine.f
13651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13652 int UNUSED written = 0;
13653 IADDR UNUSED pc = abuf->addr;
13654 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13655
13656 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13657 {
13658 ; /*clobber*/
13659 ; /*clobber*/
13660 ; /*clobber*/
13661 ; /*clobber*/
13662 if (NEBI (CPU (h_psr_esr), 0)) {
13663 {
13664 ; /*clobber*/
13665 ; /*clobber*/
13666 ; /*clobber*/
13667 ; /*clobber*/
13668 }
13669 }
13670 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13671 }
13672 }
13673
13674 abuf->written = written;
13675 return vpc;
13676 #undef FLD
13677 }
13678
13679 /* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13680
13681 static SEM_PC
13682 SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13683 {
13684 #define FLD(f) abuf->fields.sfmt_ftine.f
13685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13686 int UNUSED written = 0;
13687 IADDR UNUSED pc = abuf->addr;
13688 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13689
13690 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))))) {
13691 {
13692 ; /*clobber*/
13693 ; /*clobber*/
13694 ; /*clobber*/
13695 ; /*clobber*/
13696 if (NEBI (CPU (h_psr_esr), 0)) {
13697 {
13698 ; /*clobber*/
13699 ; /*clobber*/
13700 ; /*clobber*/
13701 ; /*clobber*/
13702 }
13703 }
13704 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13705 }
13706 }
13707
13708 abuf->written = written;
13709 return vpc;
13710 #undef FLD
13711 }
13712
13713 /* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13714
13715 static SEM_PC
13716 SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13717 {
13718 #define FLD(f) abuf->fields.sfmt_ftine.f
13719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13720 int UNUSED written = 0;
13721 IADDR UNUSED pc = abuf->addr;
13722 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13723
13724 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13725 {
13726 ; /*clobber*/
13727 ; /*clobber*/
13728 ; /*clobber*/
13729 ; /*clobber*/
13730 if (NEBI (CPU (h_psr_esr), 0)) {
13731 {
13732 ; /*clobber*/
13733 ; /*clobber*/
13734 ; /*clobber*/
13735 ; /*clobber*/
13736 }
13737 }
13738 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13739 }
13740 }
13741
13742 abuf->written = written;
13743 return vpc;
13744 #undef FLD
13745 }
13746
13747 /* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13748
13749 static SEM_PC
13750 SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13751 {
13752 #define FLD(f) abuf->fields.sfmt_ftine.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 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))))) {
13759 {
13760 ; /*clobber*/
13761 ; /*clobber*/
13762 ; /*clobber*/
13763 ; /*clobber*/
13764 if (NEBI (CPU (h_psr_esr), 0)) {
13765 {
13766 ; /*clobber*/
13767 ; /*clobber*/
13768 ; /*clobber*/
13769 ; /*clobber*/
13770 }
13771 }
13772 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13773 }
13774 }
13775
13776 abuf->written = written;
13777 return vpc;
13778 #undef FLD
13779 }
13780
13781 /* break: break$pack */
13782
13783 static SEM_PC
13784 SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13785 {
13786 #define FLD(f) abuf->fields.sfmt_break.f
13787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13788 int UNUSED written = 0;
13789 IADDR UNUSED pc = abuf->addr;
13790 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13791
13792 {
13793 ; /*clobber*/
13794 ; /*clobber*/
13795 ; /*clobber*/
13796 ; /*clobber*/
13797 ; /*clobber*/
13798 ; /*clobber*/
13799 frv_break (current_cpu);
13800 }
13801
13802 return vpc;
13803 #undef FLD
13804 }
13805
13806 /* mtrap: mtrap$pack */
13807
13808 static SEM_PC
13809 SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13810 {
13811 #define FLD(f) abuf->fields.fmt_empty.f
13812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13813 int UNUSED written = 0;
13814 IADDR UNUSED pc = abuf->addr;
13815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13816
13817 frv_mtrap (current_cpu);
13818
13819 return vpc;
13820 #undef FLD
13821 }
13822
13823 /* andcr: andcr$pack $CRi,$CRj,$CRk */
13824
13825 static SEM_PC
13826 SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13827 {
13828 #define FLD(f) abuf->fields.sfmt_andcr.f
13829 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13830 int UNUSED written = 0;
13831 IADDR UNUSED pc = abuf->addr;
13832 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13833
13834 {
13835 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13836 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13837 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13838 }
13839
13840 return vpc;
13841 #undef FLD
13842 }
13843
13844 /* orcr: orcr$pack $CRi,$CRj,$CRk */
13845
13846 static SEM_PC
13847 SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13848 {
13849 #define FLD(f) abuf->fields.sfmt_andcr.f
13850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13851 int UNUSED written = 0;
13852 IADDR UNUSED pc = abuf->addr;
13853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13854
13855 {
13856 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13857 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13858 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13859 }
13860
13861 return vpc;
13862 #undef FLD
13863 }
13864
13865 /* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13866
13867 static SEM_PC
13868 SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13869 {
13870 #define FLD(f) abuf->fields.sfmt_andcr.f
13871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13872 int UNUSED written = 0;
13873 IADDR UNUSED pc = abuf->addr;
13874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13875
13876 {
13877 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13878 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13879 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13880 }
13881
13882 return vpc;
13883 #undef FLD
13884 }
13885
13886 /* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13887
13888 static SEM_PC
13889 SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13890 {
13891 #define FLD(f) abuf->fields.sfmt_andcr.f
13892 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13893 int UNUSED written = 0;
13894 IADDR UNUSED pc = abuf->addr;
13895 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13896
13897 {
13898 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13899 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13900 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13901 }
13902
13903 return vpc;
13904 #undef FLD
13905 }
13906
13907 /* norcr: norcr$pack $CRi,$CRj,$CRk */
13908
13909 static SEM_PC
13910 SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13911 {
13912 #define FLD(f) abuf->fields.sfmt_andcr.f
13913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13914 int UNUSED written = 0;
13915 IADDR UNUSED pc = abuf->addr;
13916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13917
13918 {
13919 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13920 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13921 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13922 }
13923
13924 return vpc;
13925 #undef FLD
13926 }
13927
13928 /* andncr: andncr$pack $CRi,$CRj,$CRk */
13929
13930 static SEM_PC
13931 SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13932 {
13933 #define FLD(f) abuf->fields.sfmt_andcr.f
13934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13935 int UNUSED written = 0;
13936 IADDR UNUSED pc = abuf->addr;
13937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13938
13939 {
13940 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13941 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13942 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13943 }
13944
13945 return vpc;
13946 #undef FLD
13947 }
13948
13949 /* orncr: orncr$pack $CRi,$CRj,$CRk */
13950
13951 static SEM_PC
13952 SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13953 {
13954 #define FLD(f) abuf->fields.sfmt_andcr.f
13955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13956 int UNUSED written = 0;
13957 IADDR UNUSED pc = abuf->addr;
13958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13959
13960 {
13961 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13962 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13963 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13964 }
13965
13966 return vpc;
13967 #undef FLD
13968 }
13969
13970 /* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13971
13972 static SEM_PC
13973 SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13974 {
13975 #define FLD(f) abuf->fields.sfmt_andcr.f
13976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13977 int UNUSED written = 0;
13978 IADDR UNUSED pc = abuf->addr;
13979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13980
13981 {
13982 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13983 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13984 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13985 }
13986
13987 return vpc;
13988 #undef FLD
13989 }
13990
13991 /* norncr: norncr$pack $CRi,$CRj,$CRk */
13992
13993 static SEM_PC
13994 SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13995 {
13996 #define FLD(f) abuf->fields.sfmt_andcr.f
13997 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13998 int UNUSED written = 0;
13999 IADDR UNUSED pc = abuf->addr;
14000 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14001
14002 {
14003 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
14004 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
14005 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14006 }
14007
14008 return vpc;
14009 #undef FLD
14010 }
14011
14012 /* notcr: notcr$pack $CRj,$CRk */
14013
14014 static SEM_PC
14015 SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14016 {
14017 #define FLD(f) abuf->fields.sfmt_andcr.f
14018 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14019 int UNUSED written = 0;
14020 IADDR UNUSED pc = abuf->addr;
14021 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14022
14023 {
14024 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
14025 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
14026 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14027 }
14028
14029 return vpc;
14030 #undef FLD
14031 }
14032
14033 /* ckra: ckra$pack $CRj_int */
14034
14035 static SEM_PC
14036 SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14037 {
14038 #define FLD(f) abuf->fields.sfmt_cckeq.f
14039 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14040 int UNUSED written = 0;
14041 IADDR UNUSED pc = abuf->addr;
14042 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14043
14044 {
14045 UQI opval = 3;
14046 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14047 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14048 }
14049
14050 return vpc;
14051 #undef FLD
14052 }
14053
14054 /* ckno: ckno$pack $CRj_int */
14055
14056 static SEM_PC
14057 SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14058 {
14059 #define FLD(f) abuf->fields.sfmt_cckeq.f
14060 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14061 int UNUSED written = 0;
14062 IADDR UNUSED pc = abuf->addr;
14063 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14064
14065 {
14066 UQI opval = 2;
14067 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14068 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14069 }
14070
14071 return vpc;
14072 #undef FLD
14073 }
14074
14075 /* ckeq: ckeq$pack $ICCi_3,$CRj_int */
14076
14077 static SEM_PC
14078 SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14079 {
14080 #define FLD(f) abuf->fields.sfmt_cckeq.f
14081 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14082 int UNUSED written = 0;
14083 IADDR UNUSED pc = abuf->addr;
14084 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14085
14086 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14087 {
14088 UQI opval = 3;
14089 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14090 written |= (1 << 1);
14091 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14092 }
14093 } else {
14094 {
14095 UQI opval = 2;
14096 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14097 written |= (1 << 1);
14098 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14099 }
14100 }
14101
14102 abuf->written = written;
14103 return vpc;
14104 #undef FLD
14105 }
14106
14107 /* ckne: ckne$pack $ICCi_3,$CRj_int */
14108
14109 static SEM_PC
14110 SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14111 {
14112 #define FLD(f) abuf->fields.sfmt_cckeq.f
14113 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14114 int UNUSED written = 0;
14115 IADDR UNUSED pc = abuf->addr;
14116 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14117
14118 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14119 {
14120 UQI opval = 3;
14121 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14122 written |= (1 << 1);
14123 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14124 }
14125 } else {
14126 {
14127 UQI opval = 2;
14128 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14129 written |= (1 << 1);
14130 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14131 }
14132 }
14133
14134 abuf->written = written;
14135 return vpc;
14136 #undef FLD
14137 }
14138
14139 /* ckle: ckle$pack $ICCi_3,$CRj_int */
14140
14141 static SEM_PC
14142 SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14143 {
14144 #define FLD(f) abuf->fields.sfmt_cckeq.f
14145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14146 int UNUSED written = 0;
14147 IADDR UNUSED pc = abuf->addr;
14148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14149
14150 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))))) {
14151 {
14152 UQI opval = 3;
14153 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14154 written |= (1 << 1);
14155 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14156 }
14157 } else {
14158 {
14159 UQI opval = 2;
14160 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14161 written |= (1 << 1);
14162 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14163 }
14164 }
14165
14166 abuf->written = written;
14167 return vpc;
14168 #undef FLD
14169 }
14170
14171 /* ckgt: ckgt$pack $ICCi_3,$CRj_int */
14172
14173 static SEM_PC
14174 SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14175 {
14176 #define FLD(f) abuf->fields.sfmt_cckeq.f
14177 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14178 int UNUSED written = 0;
14179 IADDR UNUSED pc = abuf->addr;
14180 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14181
14182 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)))))) {
14183 {
14184 UQI opval = 3;
14185 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14186 written |= (1 << 1);
14187 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14188 }
14189 } else {
14190 {
14191 UQI opval = 2;
14192 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14193 written |= (1 << 1);
14194 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14195 }
14196 }
14197
14198 abuf->written = written;
14199 return vpc;
14200 #undef FLD
14201 }
14202
14203 /* cklt: cklt$pack $ICCi_3,$CRj_int */
14204
14205 static SEM_PC
14206 SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14207 {
14208 #define FLD(f) abuf->fields.sfmt_cckeq.f
14209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14210 int UNUSED written = 0;
14211 IADDR UNUSED pc = abuf->addr;
14212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14213
14214 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)))) {
14215 {
14216 UQI opval = 3;
14217 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14218 written |= (1 << 1);
14219 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14220 }
14221 } else {
14222 {
14223 UQI opval = 2;
14224 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14225 written |= (1 << 1);
14226 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14227 }
14228 }
14229
14230 abuf->written = written;
14231 return vpc;
14232 #undef FLD
14233 }
14234
14235 /* ckge: ckge$pack $ICCi_3,$CRj_int */
14236
14237 static SEM_PC
14238 SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14239 {
14240 #define FLD(f) abuf->fields.sfmt_cckeq.f
14241 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14242 int UNUSED written = 0;
14243 IADDR UNUSED pc = abuf->addr;
14244 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14245
14246 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))))) {
14247 {
14248 UQI opval = 3;
14249 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14250 written |= (1 << 1);
14251 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14252 }
14253 } else {
14254 {
14255 UQI opval = 2;
14256 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14257 written |= (1 << 1);
14258 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14259 }
14260 }
14261
14262 abuf->written = written;
14263 return vpc;
14264 #undef FLD
14265 }
14266
14267 /* ckls: ckls$pack $ICCi_3,$CRj_int */
14268
14269 static SEM_PC
14270 SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14271 {
14272 #define FLD(f) abuf->fields.sfmt_cckeq.f
14273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14274 int UNUSED written = 0;
14275 IADDR UNUSED pc = abuf->addr;
14276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14277
14278 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14279 {
14280 UQI opval = 3;
14281 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14282 written |= (1 << 1);
14283 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14284 }
14285 } else {
14286 {
14287 UQI opval = 2;
14288 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14289 written |= (1 << 1);
14290 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14291 }
14292 }
14293
14294 abuf->written = written;
14295 return vpc;
14296 #undef FLD
14297 }
14298
14299 /* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14300
14301 static SEM_PC
14302 SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14303 {
14304 #define FLD(f) abuf->fields.sfmt_cckeq.f
14305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14306 int UNUSED written = 0;
14307 IADDR UNUSED pc = abuf->addr;
14308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14309
14310 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))))) {
14311 {
14312 UQI opval = 3;
14313 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14314 written |= (1 << 1);
14315 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14316 }
14317 } else {
14318 {
14319 UQI opval = 2;
14320 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14321 written |= (1 << 1);
14322 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14323 }
14324 }
14325
14326 abuf->written = written;
14327 return vpc;
14328 #undef FLD
14329 }
14330
14331 /* ckc: ckc$pack $ICCi_3,$CRj_int */
14332
14333 static SEM_PC
14334 SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14335 {
14336 #define FLD(f) abuf->fields.sfmt_cckeq.f
14337 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14338 int UNUSED written = 0;
14339 IADDR UNUSED pc = abuf->addr;
14340 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14341
14342 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14343 {
14344 UQI opval = 3;
14345 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14346 written |= (1 << 1);
14347 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14348 }
14349 } else {
14350 {
14351 UQI opval = 2;
14352 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14353 written |= (1 << 1);
14354 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14355 }
14356 }
14357
14358 abuf->written = written;
14359 return vpc;
14360 #undef FLD
14361 }
14362
14363 /* cknc: cknc$pack $ICCi_3,$CRj_int */
14364
14365 static SEM_PC
14366 SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14367 {
14368 #define FLD(f) abuf->fields.sfmt_cckeq.f
14369 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14370 int UNUSED written = 0;
14371 IADDR UNUSED pc = abuf->addr;
14372 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14373
14374 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14375 {
14376 UQI opval = 3;
14377 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14378 written |= (1 << 1);
14379 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14380 }
14381 } else {
14382 {
14383 UQI opval = 2;
14384 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14385 written |= (1 << 1);
14386 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14387 }
14388 }
14389
14390 abuf->written = written;
14391 return vpc;
14392 #undef FLD
14393 }
14394
14395 /* ckn: ckn$pack $ICCi_3,$CRj_int */
14396
14397 static SEM_PC
14398 SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14399 {
14400 #define FLD(f) abuf->fields.sfmt_cckeq.f
14401 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14402 int UNUSED written = 0;
14403 IADDR UNUSED pc = abuf->addr;
14404 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14405
14406 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14407 {
14408 UQI opval = 3;
14409 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14410 written |= (1 << 1);
14411 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14412 }
14413 } else {
14414 {
14415 UQI opval = 2;
14416 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14417 written |= (1 << 1);
14418 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14419 }
14420 }
14421
14422 abuf->written = written;
14423 return vpc;
14424 #undef FLD
14425 }
14426
14427 /* ckp: ckp$pack $ICCi_3,$CRj_int */
14428
14429 static SEM_PC
14430 SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14431 {
14432 #define FLD(f) abuf->fields.sfmt_cckeq.f
14433 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14434 int UNUSED written = 0;
14435 IADDR UNUSED pc = abuf->addr;
14436 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14437
14438 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14439 {
14440 UQI opval = 3;
14441 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14442 written |= (1 << 1);
14443 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14444 }
14445 } else {
14446 {
14447 UQI opval = 2;
14448 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14449 written |= (1 << 1);
14450 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14451 }
14452 }
14453
14454 abuf->written = written;
14455 return vpc;
14456 #undef FLD
14457 }
14458
14459 /* ckv: ckv$pack $ICCi_3,$CRj_int */
14460
14461 static SEM_PC
14462 SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14463 {
14464 #define FLD(f) abuf->fields.sfmt_cckeq.f
14465 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14466 int UNUSED written = 0;
14467 IADDR UNUSED pc = abuf->addr;
14468 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14469
14470 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14471 {
14472 UQI opval = 3;
14473 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14474 written |= (1 << 1);
14475 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14476 }
14477 } else {
14478 {
14479 UQI opval = 2;
14480 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14481 written |= (1 << 1);
14482 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14483 }
14484 }
14485
14486 abuf->written = written;
14487 return vpc;
14488 #undef FLD
14489 }
14490
14491 /* cknv: cknv$pack $ICCi_3,$CRj_int */
14492
14493 static SEM_PC
14494 SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14495 {
14496 #define FLD(f) abuf->fields.sfmt_cckeq.f
14497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14498 int UNUSED written = 0;
14499 IADDR UNUSED pc = abuf->addr;
14500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14501
14502 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14503 {
14504 UQI opval = 3;
14505 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14506 written |= (1 << 1);
14507 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14508 }
14509 } else {
14510 {
14511 UQI opval = 2;
14512 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14513 written |= (1 << 1);
14514 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14515 }
14516 }
14517
14518 abuf->written = written;
14519 return vpc;
14520 #undef FLD
14521 }
14522
14523 /* fckra: fckra$pack $CRj_float */
14524
14525 static SEM_PC
14526 SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14527 {
14528 #define FLD(f) abuf->fields.sfmt_cfckne.f
14529 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14530 int UNUSED written = 0;
14531 IADDR UNUSED pc = abuf->addr;
14532 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14533
14534 {
14535 UQI opval = 3;
14536 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14537 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14538 }
14539
14540 return vpc;
14541 #undef FLD
14542 }
14543
14544 /* fckno: fckno$pack $CRj_float */
14545
14546 static SEM_PC
14547 SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14548 {
14549 #define FLD(f) abuf->fields.sfmt_cfckne.f
14550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14551 int UNUSED written = 0;
14552 IADDR UNUSED pc = abuf->addr;
14553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14554
14555 {
14556 UQI opval = 2;
14557 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14558 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14559 }
14560
14561 return vpc;
14562 #undef FLD
14563 }
14564
14565 /* fckne: fckne$pack $FCCi_3,$CRj_float */
14566
14567 static SEM_PC
14568 SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14569 {
14570 #define FLD(f) abuf->fields.sfmt_cfckne.f
14571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14572 int UNUSED written = 0;
14573 IADDR UNUSED pc = abuf->addr;
14574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14575
14576 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))))) {
14577 {
14578 UQI opval = 3;
14579 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14580 written |= (1 << 1);
14581 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14582 }
14583 } else {
14584 {
14585 UQI opval = 2;
14586 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14587 written |= (1 << 1);
14588 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14589 }
14590 }
14591
14592 abuf->written = written;
14593 return vpc;
14594 #undef FLD
14595 }
14596
14597 /* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14598
14599 static SEM_PC
14600 SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14601 {
14602 #define FLD(f) abuf->fields.sfmt_cfckne.f
14603 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14604 int UNUSED written = 0;
14605 IADDR UNUSED pc = abuf->addr;
14606 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14607
14608 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14609 {
14610 UQI opval = 3;
14611 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14612 written |= (1 << 1);
14613 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14614 }
14615 } else {
14616 {
14617 UQI opval = 2;
14618 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14619 written |= (1 << 1);
14620 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14621 }
14622 }
14623
14624 abuf->written = written;
14625 return vpc;
14626 #undef FLD
14627 }
14628
14629 /* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14630
14631 static SEM_PC
14632 SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14633 {
14634 #define FLD(f) abuf->fields.sfmt_cfckne.f
14635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14636 int UNUSED written = 0;
14637 IADDR UNUSED pc = abuf->addr;
14638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14639
14640 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)))) {
14641 {
14642 UQI opval = 3;
14643 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14644 written |= (1 << 1);
14645 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14646 }
14647 } else {
14648 {
14649 UQI opval = 2;
14650 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14651 written |= (1 << 1);
14652 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14653 }
14654 }
14655
14656 abuf->written = written;
14657 return vpc;
14658 #undef FLD
14659 }
14660
14661 /* fckue: fckue$pack $FCCi_3,$CRj_float */
14662
14663 static SEM_PC
14664 SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14665 {
14666 #define FLD(f) abuf->fields.sfmt_cfckne.f
14667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14668 int UNUSED written = 0;
14669 IADDR UNUSED pc = abuf->addr;
14670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14671
14672 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14673 {
14674 UQI opval = 3;
14675 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14676 written |= (1 << 1);
14677 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14678 }
14679 } else {
14680 {
14681 UQI opval = 2;
14682 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14683 written |= (1 << 1);
14684 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14685 }
14686 }
14687
14688 abuf->written = written;
14689 return vpc;
14690 #undef FLD
14691 }
14692
14693 /* fckul: fckul$pack $FCCi_3,$CRj_float */
14694
14695 static SEM_PC
14696 SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14697 {
14698 #define FLD(f) abuf->fields.sfmt_cfckne.f
14699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14700 int UNUSED written = 0;
14701 IADDR UNUSED pc = abuf->addr;
14702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14703
14704 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14705 {
14706 UQI opval = 3;
14707 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14708 written |= (1 << 1);
14709 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14710 }
14711 } else {
14712 {
14713 UQI opval = 2;
14714 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14715 written |= (1 << 1);
14716 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14717 }
14718 }
14719
14720 abuf->written = written;
14721 return vpc;
14722 #undef FLD
14723 }
14724
14725 /* fckge: fckge$pack $FCCi_3,$CRj_float */
14726
14727 static SEM_PC
14728 SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14729 {
14730 #define FLD(f) abuf->fields.sfmt_cfckne.f
14731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14732 int UNUSED written = 0;
14733 IADDR UNUSED pc = abuf->addr;
14734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14735
14736 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)))) {
14737 {
14738 UQI opval = 3;
14739 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14740 written |= (1 << 1);
14741 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14742 }
14743 } else {
14744 {
14745 UQI opval = 2;
14746 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14747 written |= (1 << 1);
14748 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14749 }
14750 }
14751
14752 abuf->written = written;
14753 return vpc;
14754 #undef FLD
14755 }
14756
14757 /* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14758
14759 static SEM_PC
14760 SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14761 {
14762 #define FLD(f) abuf->fields.sfmt_cfckne.f
14763 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14764 int UNUSED written = 0;
14765 IADDR UNUSED pc = abuf->addr;
14766 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14767
14768 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14769 {
14770 UQI opval = 3;
14771 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14772 written |= (1 << 1);
14773 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14774 }
14775 } else {
14776 {
14777 UQI opval = 2;
14778 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14779 written |= (1 << 1);
14780 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14781 }
14782 }
14783
14784 abuf->written = written;
14785 return vpc;
14786 #undef FLD
14787 }
14788
14789 /* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14790
14791 static SEM_PC
14792 SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14793 {
14794 #define FLD(f) abuf->fields.sfmt_cfckne.f
14795 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14796 int UNUSED written = 0;
14797 IADDR UNUSED pc = abuf->addr;
14798 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14799
14800 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))))) {
14801 {
14802 UQI opval = 3;
14803 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14804 written |= (1 << 1);
14805 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14806 }
14807 } else {
14808 {
14809 UQI opval = 2;
14810 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14811 written |= (1 << 1);
14812 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14813 }
14814 }
14815
14816 abuf->written = written;
14817 return vpc;
14818 #undef FLD
14819 }
14820
14821 /* fckug: fckug$pack $FCCi_3,$CRj_float */
14822
14823 static SEM_PC
14824 SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14825 {
14826 #define FLD(f) abuf->fields.sfmt_cfckne.f
14827 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14828 int UNUSED written = 0;
14829 IADDR UNUSED pc = abuf->addr;
14830 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14831
14832 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14833 {
14834 UQI opval = 3;
14835 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14836 written |= (1 << 1);
14837 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14838 }
14839 } else {
14840 {
14841 UQI opval = 2;
14842 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14843 written |= (1 << 1);
14844 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14845 }
14846 }
14847
14848 abuf->written = written;
14849 return vpc;
14850 #undef FLD
14851 }
14852
14853 /* fckle: fckle$pack $FCCi_3,$CRj_float */
14854
14855 static SEM_PC
14856 SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14857 {
14858 #define FLD(f) abuf->fields.sfmt_cfckne.f
14859 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14860 int UNUSED written = 0;
14861 IADDR UNUSED pc = abuf->addr;
14862 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14863
14864 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)))) {
14865 {
14866 UQI opval = 3;
14867 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14868 written |= (1 << 1);
14869 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14870 }
14871 } else {
14872 {
14873 UQI opval = 2;
14874 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14875 written |= (1 << 1);
14876 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14877 }
14878 }
14879
14880 abuf->written = written;
14881 return vpc;
14882 #undef FLD
14883 }
14884
14885 /* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14886
14887 static SEM_PC
14888 SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14889 {
14890 #define FLD(f) abuf->fields.sfmt_cfckne.f
14891 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14892 int UNUSED written = 0;
14893 IADDR UNUSED pc = abuf->addr;
14894 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14895
14896 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14897 {
14898 UQI opval = 3;
14899 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14900 written |= (1 << 1);
14901 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14902 }
14903 } else {
14904 {
14905 UQI opval = 2;
14906 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14907 written |= (1 << 1);
14908 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14909 }
14910 }
14911
14912 abuf->written = written;
14913 return vpc;
14914 #undef FLD
14915 }
14916
14917 /* fckule: fckule$pack $FCCi_3,$CRj_float */
14918
14919 static SEM_PC
14920 SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14921 {
14922 #define FLD(f) abuf->fields.sfmt_cfckne.f
14923 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14924 int UNUSED written = 0;
14925 IADDR UNUSED pc = abuf->addr;
14926 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14927
14928 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))))) {
14929 {
14930 UQI opval = 3;
14931 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14932 written |= (1 << 1);
14933 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14934 }
14935 } else {
14936 {
14937 UQI opval = 2;
14938 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14939 written |= (1 << 1);
14940 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14941 }
14942 }
14943
14944 abuf->written = written;
14945 return vpc;
14946 #undef FLD
14947 }
14948
14949 /* fcku: fcku$pack $FCCi_3,$CRj_float */
14950
14951 static SEM_PC
14952 SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14953 {
14954 #define FLD(f) abuf->fields.sfmt_cfckne.f
14955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14956 int UNUSED written = 0;
14957 IADDR UNUSED pc = abuf->addr;
14958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14959
14960 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14961 {
14962 UQI opval = 3;
14963 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14964 written |= (1 << 1);
14965 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14966 }
14967 } else {
14968 {
14969 UQI opval = 2;
14970 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14971 written |= (1 << 1);
14972 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14973 }
14974 }
14975
14976 abuf->written = written;
14977 return vpc;
14978 #undef FLD
14979 }
14980
14981 /* fcko: fcko$pack $FCCi_3,$CRj_float */
14982
14983 static SEM_PC
14984 SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14985 {
14986 #define FLD(f) abuf->fields.sfmt_cfckne.f
14987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14988 int UNUSED written = 0;
14989 IADDR UNUSED pc = abuf->addr;
14990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14991
14992 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))))) {
14993 {
14994 UQI opval = 3;
14995 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14996 written |= (1 << 1);
14997 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14998 }
14999 } else {
15000 {
15001 UQI opval = 2;
15002 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15003 written |= (1 << 1);
15004 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15005 }
15006 }
15007
15008 abuf->written = written;
15009 return vpc;
15010 #undef FLD
15011 }
15012
15013 /* cckra: cckra$pack $CRj_int,$CCi,$cond */
15014
15015 static SEM_PC
15016 SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15017 {
15018 #define FLD(f) abuf->fields.sfmt_cckeq.f
15019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15020 int UNUSED written = 0;
15021 IADDR UNUSED pc = abuf->addr;
15022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15023
15024 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15025 {
15026 UQI opval = 3;
15027 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15028 written |= (1 << 2);
15029 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15030 }
15031 } else {
15032 {
15033 UQI opval = 0;
15034 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15035 written |= (1 << 2);
15036 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15037 }
15038 }
15039
15040 abuf->written = written;
15041 return vpc;
15042 #undef FLD
15043 }
15044
15045 /* cckno: cckno$pack $CRj_int,$CCi,$cond */
15046
15047 static SEM_PC
15048 SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15049 {
15050 #define FLD(f) abuf->fields.sfmt_cckeq.f
15051 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15052 int UNUSED written = 0;
15053 IADDR UNUSED pc = abuf->addr;
15054 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15055
15056 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15057 {
15058 UQI opval = 2;
15059 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15060 written |= (1 << 2);
15061 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15062 }
15063 } else {
15064 {
15065 UQI opval = 0;
15066 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15067 written |= (1 << 2);
15068 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15069 }
15070 }
15071
15072 abuf->written = written;
15073 return vpc;
15074 #undef FLD
15075 }
15076
15077 /* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
15078
15079 static SEM_PC
15080 SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15081 {
15082 #define FLD(f) abuf->fields.sfmt_cckeq.f
15083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15084 int UNUSED written = 0;
15085 IADDR UNUSED pc = abuf->addr;
15086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15087
15088 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15089 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
15090 {
15091 UQI opval = 3;
15092 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15093 written |= (1 << 3);
15094 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15095 }
15096 } else {
15097 {
15098 UQI opval = 2;
15099 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15100 written |= (1 << 3);
15101 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15102 }
15103 }
15104 } else {
15105 {
15106 UQI opval = 0;
15107 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15108 written |= (1 << 3);
15109 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15110 }
15111 }
15112
15113 abuf->written = written;
15114 return vpc;
15115 #undef FLD
15116 }
15117
15118 /* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
15119
15120 static SEM_PC
15121 SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15122 {
15123 #define FLD(f) abuf->fields.sfmt_cckeq.f
15124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15125 int UNUSED written = 0;
15126 IADDR UNUSED pc = abuf->addr;
15127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15128
15129 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15130 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15131 {
15132 UQI opval = 3;
15133 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15134 written |= (1 << 3);
15135 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15136 }
15137 } else {
15138 {
15139 UQI opval = 2;
15140 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15141 written |= (1 << 3);
15142 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15143 }
15144 }
15145 } else {
15146 {
15147 UQI opval = 0;
15148 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15149 written |= (1 << 3);
15150 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15151 }
15152 }
15153
15154 abuf->written = written;
15155 return vpc;
15156 #undef FLD
15157 }
15158
15159 /* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
15160
15161 static SEM_PC
15162 SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15163 {
15164 #define FLD(f) abuf->fields.sfmt_cckeq.f
15165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15166 int UNUSED written = 0;
15167 IADDR UNUSED pc = abuf->addr;
15168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15169
15170 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15171 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))))) {
15172 {
15173 UQI opval = 3;
15174 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15175 written |= (1 << 3);
15176 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15177 }
15178 } else {
15179 {
15180 UQI opval = 2;
15181 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15182 written |= (1 << 3);
15183 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15184 }
15185 }
15186 } else {
15187 {
15188 UQI opval = 0;
15189 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15190 written |= (1 << 3);
15191 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15192 }
15193 }
15194
15195 abuf->written = written;
15196 return vpc;
15197 #undef FLD
15198 }
15199
15200 /* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15201
15202 static SEM_PC
15203 SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15204 {
15205 #define FLD(f) abuf->fields.sfmt_cckeq.f
15206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15207 int UNUSED written = 0;
15208 IADDR UNUSED pc = abuf->addr;
15209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15210
15211 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15212 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)))))) {
15213 {
15214 UQI opval = 3;
15215 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15216 written |= (1 << 3);
15217 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15218 }
15219 } else {
15220 {
15221 UQI opval = 2;
15222 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15223 written |= (1 << 3);
15224 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15225 }
15226 }
15227 } else {
15228 {
15229 UQI opval = 0;
15230 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15231 written |= (1 << 3);
15232 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15233 }
15234 }
15235
15236 abuf->written = written;
15237 return vpc;
15238 #undef FLD
15239 }
15240
15241 /* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15242
15243 static SEM_PC
15244 SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15245 {
15246 #define FLD(f) abuf->fields.sfmt_cckeq.f
15247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15248 int UNUSED written = 0;
15249 IADDR UNUSED pc = abuf->addr;
15250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15251
15252 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15253 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)))) {
15254 {
15255 UQI opval = 3;
15256 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15257 written |= (1 << 3);
15258 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15259 }
15260 } else {
15261 {
15262 UQI opval = 2;
15263 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15264 written |= (1 << 3);
15265 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15266 }
15267 }
15268 } else {
15269 {
15270 UQI opval = 0;
15271 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15272 written |= (1 << 3);
15273 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15274 }
15275 }
15276
15277 abuf->written = written;
15278 return vpc;
15279 #undef FLD
15280 }
15281
15282 /* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15283
15284 static SEM_PC
15285 SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15286 {
15287 #define FLD(f) abuf->fields.sfmt_cckeq.f
15288 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15289 int UNUSED written = 0;
15290 IADDR UNUSED pc = abuf->addr;
15291 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15292
15293 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15294 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))))) {
15295 {
15296 UQI opval = 3;
15297 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15298 written |= (1 << 3);
15299 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15300 }
15301 } else {
15302 {
15303 UQI opval = 2;
15304 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15305 written |= (1 << 3);
15306 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15307 }
15308 }
15309 } else {
15310 {
15311 UQI opval = 0;
15312 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15313 written |= (1 << 3);
15314 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15315 }
15316 }
15317
15318 abuf->written = written;
15319 return vpc;
15320 #undef FLD
15321 }
15322
15323 /* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15324
15325 static SEM_PC
15326 SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15327 {
15328 #define FLD(f) abuf->fields.sfmt_cckeq.f
15329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15330 int UNUSED written = 0;
15331 IADDR UNUSED pc = abuf->addr;
15332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15333
15334 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15335 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15336 {
15337 UQI opval = 3;
15338 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15339 written |= (1 << 3);
15340 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15341 }
15342 } else {
15343 {
15344 UQI opval = 2;
15345 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15346 written |= (1 << 3);
15347 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15348 }
15349 }
15350 } else {
15351 {
15352 UQI opval = 0;
15353 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15354 written |= (1 << 3);
15355 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15356 }
15357 }
15358
15359 abuf->written = written;
15360 return vpc;
15361 #undef FLD
15362 }
15363
15364 /* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15365
15366 static SEM_PC
15367 SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15368 {
15369 #define FLD(f) abuf->fields.sfmt_cckeq.f
15370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15371 int UNUSED written = 0;
15372 IADDR UNUSED pc = abuf->addr;
15373 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15374
15375 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15376 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))))) {
15377 {
15378 UQI opval = 3;
15379 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15380 written |= (1 << 3);
15381 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15382 }
15383 } else {
15384 {
15385 UQI opval = 2;
15386 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15387 written |= (1 << 3);
15388 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15389 }
15390 }
15391 } else {
15392 {
15393 UQI opval = 0;
15394 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15395 written |= (1 << 3);
15396 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15397 }
15398 }
15399
15400 abuf->written = written;
15401 return vpc;
15402 #undef FLD
15403 }
15404
15405 /* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15406
15407 static SEM_PC
15408 SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15409 {
15410 #define FLD(f) abuf->fields.sfmt_cckeq.f
15411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15412 int UNUSED written = 0;
15413 IADDR UNUSED pc = abuf->addr;
15414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15415
15416 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15417 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15418 {
15419 UQI opval = 3;
15420 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15421 written |= (1 << 3);
15422 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15423 }
15424 } else {
15425 {
15426 UQI opval = 2;
15427 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15428 written |= (1 << 3);
15429 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15430 }
15431 }
15432 } else {
15433 {
15434 UQI opval = 0;
15435 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15436 written |= (1 << 3);
15437 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15438 }
15439 }
15440
15441 abuf->written = written;
15442 return vpc;
15443 #undef FLD
15444 }
15445
15446 /* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15447
15448 static SEM_PC
15449 SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15450 {
15451 #define FLD(f) abuf->fields.sfmt_cckeq.f
15452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15453 int UNUSED written = 0;
15454 IADDR UNUSED pc = abuf->addr;
15455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15456
15457 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15458 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15459 {
15460 UQI opval = 3;
15461 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15462 written |= (1 << 3);
15463 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15464 }
15465 } else {
15466 {
15467 UQI opval = 2;
15468 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15469 written |= (1 << 3);
15470 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15471 }
15472 }
15473 } else {
15474 {
15475 UQI opval = 0;
15476 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15477 written |= (1 << 3);
15478 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15479 }
15480 }
15481
15482 abuf->written = written;
15483 return vpc;
15484 #undef FLD
15485 }
15486
15487 /* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15488
15489 static SEM_PC
15490 SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15491 {
15492 #define FLD(f) abuf->fields.sfmt_cckeq.f
15493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15494 int UNUSED written = 0;
15495 IADDR UNUSED pc = abuf->addr;
15496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15497
15498 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15499 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15500 {
15501 UQI opval = 3;
15502 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15503 written |= (1 << 3);
15504 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15505 }
15506 } else {
15507 {
15508 UQI opval = 2;
15509 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15510 written |= (1 << 3);
15511 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15512 }
15513 }
15514 } else {
15515 {
15516 UQI opval = 0;
15517 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15518 written |= (1 << 3);
15519 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15520 }
15521 }
15522
15523 abuf->written = written;
15524 return vpc;
15525 #undef FLD
15526 }
15527
15528 /* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15529
15530 static SEM_PC
15531 SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15532 {
15533 #define FLD(f) abuf->fields.sfmt_cckeq.f
15534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15535 int UNUSED written = 0;
15536 IADDR UNUSED pc = abuf->addr;
15537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15538
15539 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15540 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15541 {
15542 UQI opval = 3;
15543 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15544 written |= (1 << 3);
15545 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15546 }
15547 } else {
15548 {
15549 UQI opval = 2;
15550 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15551 written |= (1 << 3);
15552 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15553 }
15554 }
15555 } else {
15556 {
15557 UQI opval = 0;
15558 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15559 written |= (1 << 3);
15560 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15561 }
15562 }
15563
15564 abuf->written = written;
15565 return vpc;
15566 #undef FLD
15567 }
15568
15569 /* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15570
15571 static SEM_PC
15572 SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15573 {
15574 #define FLD(f) abuf->fields.sfmt_cckeq.f
15575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15576 int UNUSED written = 0;
15577 IADDR UNUSED pc = abuf->addr;
15578 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15579
15580 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15581 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15582 {
15583 UQI opval = 3;
15584 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15585 written |= (1 << 3);
15586 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15587 }
15588 } else {
15589 {
15590 UQI opval = 2;
15591 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15592 written |= (1 << 3);
15593 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15594 }
15595 }
15596 } else {
15597 {
15598 UQI opval = 0;
15599 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15600 written |= (1 << 3);
15601 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15602 }
15603 }
15604
15605 abuf->written = written;
15606 return vpc;
15607 #undef FLD
15608 }
15609
15610 /* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15611
15612 static SEM_PC
15613 SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15614 {
15615 #define FLD(f) abuf->fields.sfmt_cckeq.f
15616 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15617 int UNUSED written = 0;
15618 IADDR UNUSED pc = abuf->addr;
15619 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15620
15621 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15622 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15623 {
15624 UQI opval = 3;
15625 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15626 written |= (1 << 3);
15627 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15628 }
15629 } else {
15630 {
15631 UQI opval = 2;
15632 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15633 written |= (1 << 3);
15634 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15635 }
15636 }
15637 } else {
15638 {
15639 UQI opval = 0;
15640 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15641 written |= (1 << 3);
15642 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15643 }
15644 }
15645
15646 abuf->written = written;
15647 return vpc;
15648 #undef FLD
15649 }
15650
15651 /* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15652
15653 static SEM_PC
15654 SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15655 {
15656 #define FLD(f) abuf->fields.sfmt_cfckne.f
15657 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15658 int UNUSED written = 0;
15659 IADDR UNUSED pc = abuf->addr;
15660 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15661
15662 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15663 {
15664 UQI opval = 3;
15665 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15666 written |= (1 << 2);
15667 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15668 }
15669 } else {
15670 {
15671 UQI opval = 0;
15672 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15673 written |= (1 << 2);
15674 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15675 }
15676 }
15677
15678 abuf->written = written;
15679 return vpc;
15680 #undef FLD
15681 }
15682
15683 /* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15684
15685 static SEM_PC
15686 SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15687 {
15688 #define FLD(f) abuf->fields.sfmt_cfckne.f
15689 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15690 int UNUSED written = 0;
15691 IADDR UNUSED pc = abuf->addr;
15692 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15693
15694 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15695 {
15696 UQI opval = 2;
15697 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15698 written |= (1 << 2);
15699 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15700 }
15701 } else {
15702 {
15703 UQI opval = 0;
15704 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15705 written |= (1 << 2);
15706 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15707 }
15708 }
15709
15710 abuf->written = written;
15711 return vpc;
15712 #undef FLD
15713 }
15714
15715 /* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15716
15717 static SEM_PC
15718 SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15719 {
15720 #define FLD(f) abuf->fields.sfmt_cfckne.f
15721 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15722 int UNUSED written = 0;
15723 IADDR UNUSED pc = abuf->addr;
15724 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15725
15726 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15727 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))))) {
15728 {
15729 UQI opval = 3;
15730 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15731 written |= (1 << 3);
15732 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15733 }
15734 } else {
15735 {
15736 UQI opval = 2;
15737 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15738 written |= (1 << 3);
15739 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15740 }
15741 }
15742 } else {
15743 {
15744 UQI opval = 0;
15745 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15746 written |= (1 << 3);
15747 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15748 }
15749 }
15750
15751 abuf->written = written;
15752 return vpc;
15753 #undef FLD
15754 }
15755
15756 /* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15757
15758 static SEM_PC
15759 SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15760 {
15761 #define FLD(f) abuf->fields.sfmt_cfckne.f
15762 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15763 int UNUSED written = 0;
15764 IADDR UNUSED pc = abuf->addr;
15765 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15766
15767 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15768 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15769 {
15770 UQI opval = 3;
15771 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15772 written |= (1 << 3);
15773 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15774 }
15775 } else {
15776 {
15777 UQI opval = 2;
15778 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15779 written |= (1 << 3);
15780 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15781 }
15782 }
15783 } else {
15784 {
15785 UQI opval = 0;
15786 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15787 written |= (1 << 3);
15788 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15789 }
15790 }
15791
15792 abuf->written = written;
15793 return vpc;
15794 #undef FLD
15795 }
15796
15797 /* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15798
15799 static SEM_PC
15800 SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15801 {
15802 #define FLD(f) abuf->fields.sfmt_cfckne.f
15803 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15804 int UNUSED written = 0;
15805 IADDR UNUSED pc = abuf->addr;
15806 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15807
15808 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15809 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)))) {
15810 {
15811 UQI opval = 3;
15812 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15813 written |= (1 << 3);
15814 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15815 }
15816 } else {
15817 {
15818 UQI opval = 2;
15819 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15820 written |= (1 << 3);
15821 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15822 }
15823 }
15824 } else {
15825 {
15826 UQI opval = 0;
15827 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15828 written |= (1 << 3);
15829 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15830 }
15831 }
15832
15833 abuf->written = written;
15834 return vpc;
15835 #undef FLD
15836 }
15837
15838 /* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15839
15840 static SEM_PC
15841 SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15842 {
15843 #define FLD(f) abuf->fields.sfmt_cfckne.f
15844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15845 int UNUSED written = 0;
15846 IADDR UNUSED pc = abuf->addr;
15847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15848
15849 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15850 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15851 {
15852 UQI opval = 3;
15853 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15854 written |= (1 << 3);
15855 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15856 }
15857 } else {
15858 {
15859 UQI opval = 2;
15860 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15861 written |= (1 << 3);
15862 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15863 }
15864 }
15865 } else {
15866 {
15867 UQI opval = 0;
15868 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15869 written |= (1 << 3);
15870 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15871 }
15872 }
15873
15874 abuf->written = written;
15875 return vpc;
15876 #undef FLD
15877 }
15878
15879 /* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15880
15881 static SEM_PC
15882 SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15883 {
15884 #define FLD(f) abuf->fields.sfmt_cfckne.f
15885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15886 int UNUSED written = 0;
15887 IADDR UNUSED pc = abuf->addr;
15888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15889
15890 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15891 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15892 {
15893 UQI opval = 3;
15894 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15895 written |= (1 << 3);
15896 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15897 }
15898 } else {
15899 {
15900 UQI opval = 2;
15901 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15902 written |= (1 << 3);
15903 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15904 }
15905 }
15906 } else {
15907 {
15908 UQI opval = 0;
15909 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15910 written |= (1 << 3);
15911 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15912 }
15913 }
15914
15915 abuf->written = written;
15916 return vpc;
15917 #undef FLD
15918 }
15919
15920 /* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15921
15922 static SEM_PC
15923 SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15924 {
15925 #define FLD(f) abuf->fields.sfmt_cfckne.f
15926 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15927 int UNUSED written = 0;
15928 IADDR UNUSED pc = abuf->addr;
15929 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15930
15931 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15932 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)))) {
15933 {
15934 UQI opval = 3;
15935 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15936 written |= (1 << 3);
15937 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15938 }
15939 } else {
15940 {
15941 UQI opval = 2;
15942 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15943 written |= (1 << 3);
15944 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15945 }
15946 }
15947 } else {
15948 {
15949 UQI opval = 0;
15950 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15951 written |= (1 << 3);
15952 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15953 }
15954 }
15955
15956 abuf->written = written;
15957 return vpc;
15958 #undef FLD
15959 }
15960
15961 /* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15962
15963 static SEM_PC
15964 SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15965 {
15966 #define FLD(f) abuf->fields.sfmt_cfckne.f
15967 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15968 int UNUSED written = 0;
15969 IADDR UNUSED pc = abuf->addr;
15970 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15971
15972 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15973 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15974 {
15975 UQI opval = 3;
15976 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15977 written |= (1 << 3);
15978 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15979 }
15980 } else {
15981 {
15982 UQI opval = 2;
15983 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15984 written |= (1 << 3);
15985 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15986 }
15987 }
15988 } else {
15989 {
15990 UQI opval = 0;
15991 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15992 written |= (1 << 3);
15993 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15994 }
15995 }
15996
15997 abuf->written = written;
15998 return vpc;
15999 #undef FLD
16000 }
16001
16002 /* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
16003
16004 static SEM_PC
16005 SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16006 {
16007 #define FLD(f) abuf->fields.sfmt_cfckne.f
16008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16009 int UNUSED written = 0;
16010 IADDR UNUSED pc = abuf->addr;
16011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16012
16013 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16014 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))))) {
16015 {
16016 UQI opval = 3;
16017 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16018 written |= (1 << 3);
16019 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16020 }
16021 } else {
16022 {
16023 UQI opval = 2;
16024 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16025 written |= (1 << 3);
16026 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16027 }
16028 }
16029 } else {
16030 {
16031 UQI opval = 0;
16032 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16033 written |= (1 << 3);
16034 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16035 }
16036 }
16037
16038 abuf->written = written;
16039 return vpc;
16040 #undef FLD
16041 }
16042
16043 /* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
16044
16045 static SEM_PC
16046 SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16047 {
16048 #define FLD(f) abuf->fields.sfmt_cfckne.f
16049 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16050 int UNUSED written = 0;
16051 IADDR UNUSED pc = abuf->addr;
16052 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16053
16054 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16055 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
16056 {
16057 UQI opval = 3;
16058 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16059 written |= (1 << 3);
16060 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16061 }
16062 } else {
16063 {
16064 UQI opval = 2;
16065 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16066 written |= (1 << 3);
16067 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16068 }
16069 }
16070 } else {
16071 {
16072 UQI opval = 0;
16073 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16074 written |= (1 << 3);
16075 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16076 }
16077 }
16078
16079 abuf->written = written;
16080 return vpc;
16081 #undef FLD
16082 }
16083
16084 /* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
16085
16086 static SEM_PC
16087 SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16088 {
16089 #define FLD(f) abuf->fields.sfmt_cfckne.f
16090 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16091 int UNUSED written = 0;
16092 IADDR UNUSED pc = abuf->addr;
16093 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16094
16095 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16096 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)))) {
16097 {
16098 UQI opval = 3;
16099 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16100 written |= (1 << 3);
16101 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16102 }
16103 } else {
16104 {
16105 UQI opval = 2;
16106 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16107 written |= (1 << 3);
16108 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16109 }
16110 }
16111 } else {
16112 {
16113 UQI opval = 0;
16114 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16115 written |= (1 << 3);
16116 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16117 }
16118 }
16119
16120 abuf->written = written;
16121 return vpc;
16122 #undef FLD
16123 }
16124
16125 /* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
16126
16127 static SEM_PC
16128 SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16129 {
16130 #define FLD(f) abuf->fields.sfmt_cfckne.f
16131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16132 int UNUSED written = 0;
16133 IADDR UNUSED pc = abuf->addr;
16134 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16135
16136 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16137 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
16138 {
16139 UQI opval = 3;
16140 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16141 written |= (1 << 3);
16142 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16143 }
16144 } else {
16145 {
16146 UQI opval = 2;
16147 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16148 written |= (1 << 3);
16149 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16150 }
16151 }
16152 } else {
16153 {
16154 UQI opval = 0;
16155 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16156 written |= (1 << 3);
16157 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16158 }
16159 }
16160
16161 abuf->written = written;
16162 return vpc;
16163 #undef FLD
16164 }
16165
16166 /* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
16167
16168 static SEM_PC
16169 SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16170 {
16171 #define FLD(f) abuf->fields.sfmt_cfckne.f
16172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16173 int UNUSED written = 0;
16174 IADDR UNUSED pc = abuf->addr;
16175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16176
16177 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16178 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))))) {
16179 {
16180 UQI opval = 3;
16181 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16182 written |= (1 << 3);
16183 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16184 }
16185 } else {
16186 {
16187 UQI opval = 2;
16188 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16189 written |= (1 << 3);
16190 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16191 }
16192 }
16193 } else {
16194 {
16195 UQI opval = 0;
16196 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16197 written |= (1 << 3);
16198 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16199 }
16200 }
16201
16202 abuf->written = written;
16203 return vpc;
16204 #undef FLD
16205 }
16206
16207 /* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
16208
16209 static SEM_PC
16210 SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16211 {
16212 #define FLD(f) abuf->fields.sfmt_cfckne.f
16213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16214 int UNUSED written = 0;
16215 IADDR UNUSED pc = abuf->addr;
16216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16217
16218 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16219 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
16220 {
16221 UQI opval = 3;
16222 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16223 written |= (1 << 3);
16224 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16225 }
16226 } else {
16227 {
16228 UQI opval = 2;
16229 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16230 written |= (1 << 3);
16231 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16232 }
16233 }
16234 } else {
16235 {
16236 UQI opval = 0;
16237 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16238 written |= (1 << 3);
16239 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16240 }
16241 }
16242
16243 abuf->written = written;
16244 return vpc;
16245 #undef FLD
16246 }
16247
16248 /* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16249
16250 static SEM_PC
16251 SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16252 {
16253 #define FLD(f) abuf->fields.sfmt_cfckne.f
16254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16255 int UNUSED written = 0;
16256 IADDR UNUSED pc = abuf->addr;
16257 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16258
16259 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16260 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))))) {
16261 {
16262 UQI opval = 3;
16263 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16264 written |= (1 << 3);
16265 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16266 }
16267 } else {
16268 {
16269 UQI opval = 2;
16270 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16271 written |= (1 << 3);
16272 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16273 }
16274 }
16275 } else {
16276 {
16277 UQI opval = 0;
16278 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16279 written |= (1 << 3);
16280 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16281 }
16282 }
16283
16284 abuf->written = written;
16285 return vpc;
16286 #undef FLD
16287 }
16288
16289 /* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16290
16291 static SEM_PC
16292 SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16293 {
16294 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16295 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16296 int UNUSED written = 0;
16297 IADDR UNUSED pc = abuf->addr;
16298 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16299
16300 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16301 {
16302 if (EQSI (FLD (f_LI), 1)) {
16303 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16304 }
16305 {
16306 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16307 sim_queue_pc_write (current_cpu, opval);
16308 written |= (1 << 6);
16309 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16310 }
16311 frvbf_model_branch (current_cpu, pc, 2);
16312 }
16313 }
16314
16315 abuf->written = written;
16316 return vpc;
16317 #undef FLD
16318 }
16319
16320 /* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16321
16322 static SEM_PC
16323 SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16324 {
16325 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16327 int UNUSED written = 0;
16328 IADDR UNUSED pc = abuf->addr;
16329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16330
16331 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16332 {
16333 if (EQSI (FLD (f_LI), 1)) {
16334 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16335 }
16336 {
16337 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16338 sim_queue_pc_write (current_cpu, opval);
16339 written |= (1 << 6);
16340 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16341 }
16342 frvbf_model_branch (current_cpu, pc, 2);
16343 }
16344 }
16345
16346 abuf->written = written;
16347 return vpc;
16348 #undef FLD
16349 }
16350
16351 /* ici: ici$pack @($GRi,$GRj) */
16352
16353 static SEM_PC
16354 SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16355 {
16356 #define FLD(f) abuf->fields.sfmt_icpl.f
16357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16358 int UNUSED written = 0;
16359 IADDR UNUSED pc = abuf->addr;
16360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16361
16362 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16363
16364 return vpc;
16365 #undef FLD
16366 }
16367
16368 /* dci: dci$pack @($GRi,$GRj) */
16369
16370 static SEM_PC
16371 SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16372 {
16373 #define FLD(f) abuf->fields.sfmt_icpl.f
16374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16375 int UNUSED written = 0;
16376 IADDR UNUSED pc = abuf->addr;
16377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16378
16379 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16380
16381 return vpc;
16382 #undef FLD
16383 }
16384
16385 /* icei: icei$pack @($GRi,$GRj),$ae */
16386
16387 static SEM_PC
16388 SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16389 {
16390 #define FLD(f) abuf->fields.sfmt_icei.f
16391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16392 int UNUSED written = 0;
16393 IADDR UNUSED pc = abuf->addr;
16394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16395
16396 if (EQSI (FLD (f_ae), 0)) {
16397 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16398 } else {
16399 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16400 }
16401
16402 return vpc;
16403 #undef FLD
16404 }
16405
16406 /* dcei: dcei$pack @($GRi,$GRj),$ae */
16407
16408 static SEM_PC
16409 SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16410 {
16411 #define FLD(f) abuf->fields.sfmt_icei.f
16412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16413 int UNUSED written = 0;
16414 IADDR UNUSED pc = abuf->addr;
16415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16416
16417 if (EQSI (FLD (f_ae), 0)) {
16418 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16419 } else {
16420 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16421 }
16422
16423 return vpc;
16424 #undef FLD
16425 }
16426
16427 /* dcf: dcf$pack @($GRi,$GRj) */
16428
16429 static SEM_PC
16430 SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16431 {
16432 #define FLD(f) abuf->fields.sfmt_icpl.f
16433 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16434 int UNUSED written = 0;
16435 IADDR UNUSED pc = abuf->addr;
16436 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16437
16438 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16439
16440 return vpc;
16441 #undef FLD
16442 }
16443
16444 /* dcef: dcef$pack @($GRi,$GRj),$ae */
16445
16446 static SEM_PC
16447 SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16448 {
16449 #define FLD(f) abuf->fields.sfmt_icei.f
16450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16451 int UNUSED written = 0;
16452 IADDR UNUSED pc = abuf->addr;
16453 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16454
16455 if (EQSI (FLD (f_ae), 0)) {
16456 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16457 } else {
16458 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16459 }
16460
16461 return vpc;
16462 #undef FLD
16463 }
16464
16465 /* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16466
16467 static SEM_PC
16468 SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16469 {
16470 #define FLD(f) abuf->fields.fmt_empty.f
16471 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16472 int UNUSED written = 0;
16473 IADDR UNUSED pc = abuf->addr;
16474 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16475
16476 ((void) 0); /*nop*/
16477
16478 return vpc;
16479 #undef FLD
16480 }
16481
16482 /* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16483
16484 static SEM_PC
16485 SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16486 {
16487 #define FLD(f) abuf->fields.fmt_empty.f
16488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16489 int UNUSED written = 0;
16490 IADDR UNUSED pc = abuf->addr;
16491 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16492
16493 ((void) 0); /*nop*/
16494
16495 return vpc;
16496 #undef FLD
16497 }
16498
16499 /* itlbi: itlbi$pack @($GRi,$GRj) */
16500
16501 static SEM_PC
16502 SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16503 {
16504 #define FLD(f) abuf->fields.fmt_empty.f
16505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16506 int UNUSED written = 0;
16507 IADDR UNUSED pc = abuf->addr;
16508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16509
16510 ((void) 0); /*nop*/
16511
16512 return vpc;
16513 #undef FLD
16514 }
16515
16516 /* dtlbi: dtlbi$pack @($GRi,$GRj) */
16517
16518 static SEM_PC
16519 SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16520 {
16521 #define FLD(f) abuf->fields.fmt_empty.f
16522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16523 int UNUSED written = 0;
16524 IADDR UNUSED pc = abuf->addr;
16525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16526
16527 ((void) 0); /*nop*/
16528
16529 return vpc;
16530 #undef FLD
16531 }
16532
16533 /* icpl: icpl$pack $GRi,$GRj,$lock */
16534
16535 static SEM_PC
16536 SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16537 {
16538 #define FLD(f) abuf->fields.sfmt_icpl.f
16539 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16540 int UNUSED written = 0;
16541 IADDR UNUSED pc = abuf->addr;
16542 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16543
16544 frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16545
16546 return vpc;
16547 #undef FLD
16548 }
16549
16550 /* dcpl: dcpl$pack $GRi,$GRj,$lock */
16551
16552 static SEM_PC
16553 SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16554 {
16555 #define FLD(f) abuf->fields.sfmt_icpl.f
16556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16557 int UNUSED written = 0;
16558 IADDR UNUSED pc = abuf->addr;
16559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16560
16561 frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16562
16563 return vpc;
16564 #undef FLD
16565 }
16566
16567 /* icul: icul$pack $GRi */
16568
16569 static SEM_PC
16570 SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16571 {
16572 #define FLD(f) abuf->fields.sfmt_jmpil.f
16573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16574 int UNUSED written = 0;
16575 IADDR UNUSED pc = abuf->addr;
16576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16577
16578 frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16579
16580 return vpc;
16581 #undef FLD
16582 }
16583
16584 /* dcul: dcul$pack $GRi */
16585
16586 static SEM_PC
16587 SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16588 {
16589 #define FLD(f) abuf->fields.sfmt_jmpil.f
16590 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16591 int UNUSED written = 0;
16592 IADDR UNUSED pc = abuf->addr;
16593 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16594
16595 frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16596
16597 return vpc;
16598 #undef FLD
16599 }
16600
16601 /* bar: bar$pack */
16602
16603 static SEM_PC
16604 SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16605 {
16606 #define FLD(f) abuf->fields.fmt_empty.f
16607 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16608 int UNUSED written = 0;
16609 IADDR UNUSED pc = abuf->addr;
16610 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16611
16612 ((void) 0); /*nop*/
16613
16614 return vpc;
16615 #undef FLD
16616 }
16617
16618 /* membar: membar$pack */
16619
16620 static SEM_PC
16621 SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16622 {
16623 #define FLD(f) abuf->fields.fmt_empty.f
16624 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16625 int UNUSED written = 0;
16626 IADDR UNUSED pc = abuf->addr;
16627 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16628
16629 ((void) 0); /*nop*/
16630
16631 return vpc;
16632 #undef FLD
16633 }
16634
16635 /* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16636
16637 static SEM_PC
16638 SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16639 {
16640 #define FLD(f) abuf->fields.fmt_empty.f
16641 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16642 int UNUSED written = 0;
16643 IADDR UNUSED pc = abuf->addr;
16644 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16645
16646 ((void) 0); /*nop*/
16647
16648 return vpc;
16649 #undef FLD
16650 }
16651
16652 /* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16653
16654 static SEM_PC
16655 SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16656 {
16657 #define FLD(f) abuf->fields.fmt_empty.f
16658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16659 int UNUSED written = 0;
16660 IADDR UNUSED pc = abuf->addr;
16661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16662
16663 ((void) 0); /*nop*/
16664
16665 return vpc;
16666 #undef FLD
16667 }
16668
16669 /* clrgr: clrgr$pack $GRk */
16670
16671 static SEM_PC
16672 SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16673 {
16674 #define FLD(f) abuf->fields.sfmt_swapi.f
16675 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16676 int UNUSED written = 0;
16677 IADDR UNUSED pc = abuf->addr;
16678 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16679
16680 {
16681 frv_ref_SI (GET_H_GR (FLD (f_GRk)));
16682 frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
16683 }
16684
16685 return vpc;
16686 #undef FLD
16687 }
16688
16689 /* clrfr: clrfr$pack $FRk */
16690
16691 static SEM_PC
16692 SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16693 {
16694 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16695 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16696 int UNUSED written = 0;
16697 IADDR UNUSED pc = abuf->addr;
16698 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16699
16700 {
16701 frv_ref_SI (GET_H_FR (FLD (f_FRk)));
16702 frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
16703 }
16704
16705 return vpc;
16706 #undef FLD
16707 }
16708
16709 /* clrga: clrga$pack */
16710
16711 static SEM_PC
16712 SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16713 {
16714 #define FLD(f) abuf->fields.fmt_empty.f
16715 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16716 int UNUSED written = 0;
16717 IADDR UNUSED pc = abuf->addr;
16718 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16719
16720 frvbf_clear_ne_flags (current_cpu, -1, 0);
16721
16722 return vpc;
16723 #undef FLD
16724 }
16725
16726 /* clrfa: clrfa$pack */
16727
16728 static SEM_PC
16729 SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16730 {
16731 #define FLD(f) abuf->fields.fmt_empty.f
16732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16733 int UNUSED written = 0;
16734 IADDR UNUSED pc = abuf->addr;
16735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16736
16737 frvbf_clear_ne_flags (current_cpu, -1, 1);
16738
16739 return vpc;
16740 #undef FLD
16741 }
16742
16743 /* commitgr: commitgr$pack $GRk */
16744
16745 static SEM_PC
16746 SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16747 {
16748 #define FLD(f) abuf->fields.sfmt_setlos.f
16749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16750 int UNUSED written = 0;
16751 IADDR UNUSED pc = abuf->addr;
16752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16753
16754 frvbf_commit (current_cpu, FLD (f_GRk), 0);
16755
16756 return vpc;
16757 #undef FLD
16758 }
16759
16760 /* commitfr: commitfr$pack $FRk */
16761
16762 static SEM_PC
16763 SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16764 {
16765 #define FLD(f) abuf->fields.sfmt_mhsethis.f
16766 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16767 int UNUSED written = 0;
16768 IADDR UNUSED pc = abuf->addr;
16769 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16770
16771 frvbf_commit (current_cpu, FLD (f_FRk), 1);
16772
16773 return vpc;
16774 #undef FLD
16775 }
16776
16777 /* commitga: commitga$pack */
16778
16779 static SEM_PC
16780 SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16781 {
16782 #define FLD(f) abuf->fields.fmt_empty.f
16783 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16784 int UNUSED written = 0;
16785 IADDR UNUSED pc = abuf->addr;
16786 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16787
16788 frvbf_commit (current_cpu, -1, 0);
16789
16790 return vpc;
16791 #undef FLD
16792 }
16793
16794 /* commitfa: commitfa$pack */
16795
16796 static SEM_PC
16797 SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16798 {
16799 #define FLD(f) abuf->fields.fmt_empty.f
16800 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16801 int UNUSED written = 0;
16802 IADDR UNUSED pc = abuf->addr;
16803 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16804
16805 frvbf_commit (current_cpu, -1, 1);
16806
16807 return vpc;
16808 #undef FLD
16809 }
16810
16811 /* fitos: fitos$pack $FRintj,$FRk */
16812
16813 static SEM_PC
16814 SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16815 {
16816 #define FLD(f) abuf->fields.sfmt_fditos.f
16817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16818 int UNUSED written = 0;
16819 IADDR UNUSED pc = abuf->addr;
16820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16821
16822 {
16823 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16824 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16825 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16826 }
16827
16828 return vpc;
16829 #undef FLD
16830 }
16831
16832 /* fstoi: fstoi$pack $FRj,$FRintk */
16833
16834 static SEM_PC
16835 SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16836 {
16837 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16838 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16839 int UNUSED written = 0;
16840 IADDR UNUSED pc = abuf->addr;
16841 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16842
16843 {
16844 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16845 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16846 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16847 }
16848
16849 return vpc;
16850 #undef FLD
16851 }
16852
16853 /* fitod: fitod$pack $FRintj,$FRdoublek */
16854
16855 static SEM_PC
16856 SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16857 {
16858 #define FLD(f) abuf->fields.sfmt_fitod.f
16859 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16860 int UNUSED written = 0;
16861 IADDR UNUSED pc = abuf->addr;
16862 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16863
16864 {
16865 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsidf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16866 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16867 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16868 }
16869
16870 return vpc;
16871 #undef FLD
16872 }
16873
16874 /* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16875
16876 static SEM_PC
16877 SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16878 {
16879 #define FLD(f) abuf->fields.sfmt_fdtoi.f
16880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16881 int UNUSED written = 0;
16882 IADDR UNUSED pc = abuf->addr;
16883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16884
16885 {
16886 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixdfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
16887 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16888 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16889 }
16890
16891 return vpc;
16892 #undef FLD
16893 }
16894
16895 /* fditos: fditos$pack $FRintj,$FRk */
16896
16897 static SEM_PC
16898 SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16899 {
16900 #define FLD(f) abuf->fields.sfmt_fditos.f
16901 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16902 int UNUSED written = 0;
16903 IADDR UNUSED pc = abuf->addr;
16904 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16905
16906 {
16907 {
16908 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16909 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16910 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16911 }
16912 {
16913 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
16914 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16915 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16916 }
16917 }
16918
16919 return vpc;
16920 #undef FLD
16921 }
16922
16923 /* fdstoi: fdstoi$pack $FRj,$FRintk */
16924
16925 static SEM_PC
16926 SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16927 {
16928 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16930 int UNUSED written = 0;
16931 IADDR UNUSED pc = abuf->addr;
16932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16933
16934 {
16935 {
16936 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16937 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16938 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16939 }
16940 {
16941 USI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
16942 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16943 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16944 }
16945 }
16946
16947 return vpc;
16948 #undef FLD
16949 }
16950
16951 /* nfditos: nfditos$pack $FRintj,$FRk */
16952
16953 static SEM_PC
16954 SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16955 {
16956 #define FLD(f) abuf->fields.sfmt_fditos.f
16957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16958 int UNUSED written = 0;
16959 IADDR UNUSED pc = abuf->addr;
16960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16961
16962 {
16963 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16964 {
16965 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16966 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16967 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16968 }
16969 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16970 {
16971 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
16972 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16973 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16974 }
16975 }
16976
16977 return vpc;
16978 #undef FLD
16979 }
16980
16981 /* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16982
16983 static SEM_PC
16984 SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16985 {
16986 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16988 int UNUSED written = 0;
16989 IADDR UNUSED pc = abuf->addr;
16990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16991
16992 {
16993 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16994 {
16995 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16996 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16997 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16998 }
16999 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17000 {
17001 USI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17002 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
17003 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
17004 }
17005 }
17006
17007 return vpc;
17008 #undef FLD
17009 }
17010
17011 /* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
17012
17013 static SEM_PC
17014 SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17015 {
17016 #define FLD(f) abuf->fields.sfmt_cfitos.f
17017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17018 int UNUSED written = 0;
17019 IADDR UNUSED pc = abuf->addr;
17020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17021
17022 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17023 {
17024 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
17025 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17026 written |= (1 << 3);
17027 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17028 }
17029 }
17030
17031 abuf->written = written;
17032 return vpc;
17033 #undef FLD
17034 }
17035
17036 /* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
17037
17038 static SEM_PC
17039 SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17040 {
17041 #define FLD(f) abuf->fields.sfmt_cfstoi.f
17042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17043 int UNUSED written = 0;
17044 IADDR UNUSED pc = abuf->addr;
17045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17046
17047 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17048 {
17049 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17050 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
17051 written |= (1 << 3);
17052 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
17053 }
17054 }
17055
17056 abuf->written = written;
17057 return vpc;
17058 #undef FLD
17059 }
17060
17061 /* nfitos: nfitos$pack $FRintj,$FRk */
17062
17063 static SEM_PC
17064 SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17065 {
17066 #define FLD(f) abuf->fields.sfmt_fditos.f
17067 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17068 int UNUSED written = 0;
17069 IADDR UNUSED pc = abuf->addr;
17070 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17071
17072 {
17073 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17074 {
17075 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->floatsisf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
17076 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17077 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17078 }
17079 }
17080
17081 return vpc;
17082 #undef FLD
17083 }
17084
17085 /* nfstoi: nfstoi$pack $FRj,$FRintk */
17086
17087 static SEM_PC
17088 SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17089 {
17090 #define FLD(f) abuf->fields.sfmt_fdstoi.f
17091 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17092 int UNUSED written = 0;
17093 IADDR UNUSED pc = abuf->addr;
17094 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17095
17096 {
17097 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17098 {
17099 SI opval = (* CGEN_CPU_FPU (current_cpu)->ops->fixsfsi) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17100 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
17101 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
17102 }
17103 }
17104
17105 return vpc;
17106 #undef FLD
17107 }
17108
17109 /* fmovs: fmovs$pack $FRj,$FRk */
17110
17111 static SEM_PC
17112 SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17113 {
17114 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17115 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17116 int UNUSED written = 0;
17117 IADDR UNUSED pc = abuf->addr;
17118 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17119
17120 {
17121 SF opval = GET_H_FR (FLD (f_FRj));
17122 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17123 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17124 }
17125
17126 return vpc;
17127 #undef FLD
17128 }
17129
17130 /* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
17131
17132 static SEM_PC
17133 SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17134 {
17135 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17137 int UNUSED written = 0;
17138 IADDR UNUSED pc = abuf->addr;
17139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17140
17141 {
17142 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
17143 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17144 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17145 }
17146
17147 return vpc;
17148 #undef FLD
17149 }
17150
17151 /* fdmovs: fdmovs$pack $FRj,$FRk */
17152
17153 static SEM_PC
17154 SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17155 {
17156 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17158 int UNUSED written = 0;
17159 IADDR UNUSED pc = abuf->addr;
17160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17161
17162 {
17163 {
17164 SF opval = GET_H_FR (FLD (f_FRj));
17165 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17166 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17167 }
17168 {
17169 SF opval = GET_H_FR (((FLD (f_FRj)) + (1)));
17170 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17171 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17172 }
17173 }
17174
17175 return vpc;
17176 #undef FLD
17177 }
17178
17179 /* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
17180
17181 static SEM_PC
17182 SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17183 {
17184 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17186 int UNUSED written = 0;
17187 IADDR UNUSED pc = abuf->addr;
17188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17189
17190 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17191 {
17192 SF opval = GET_H_FR (FLD (f_FRj));
17193 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17194 written |= (1 << 3);
17195 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17196 }
17197 }
17198
17199 abuf->written = written;
17200 return vpc;
17201 #undef FLD
17202 }
17203
17204 /* fnegs: fnegs$pack $FRj,$FRk */
17205
17206 static SEM_PC
17207 SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17208 {
17209 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17211 int UNUSED written = 0;
17212 IADDR UNUSED pc = abuf->addr;
17213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17214
17215 {
17216 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17217 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17218 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17219 }
17220
17221 return vpc;
17222 #undef FLD
17223 }
17224
17225 /* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17226
17227 static SEM_PC
17228 SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17229 {
17230 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17232 int UNUSED written = 0;
17233 IADDR UNUSED pc = abuf->addr;
17234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17235
17236 {
17237 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17238 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17239 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17240 }
17241
17242 return vpc;
17243 #undef FLD
17244 }
17245
17246 /* fdnegs: fdnegs$pack $FRj,$FRk */
17247
17248 static SEM_PC
17249 SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17250 {
17251 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17253 int UNUSED written = 0;
17254 IADDR UNUSED pc = abuf->addr;
17255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17256
17257 {
17258 {
17259 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17260 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17261 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17262 }
17263 {
17264 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17265 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17266 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17267 }
17268 }
17269
17270 return vpc;
17271 #undef FLD
17272 }
17273
17274 /* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17275
17276 static SEM_PC
17277 SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17278 {
17279 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17281 int UNUSED written = 0;
17282 IADDR UNUSED pc = abuf->addr;
17283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17284
17285 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17286 {
17287 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->negsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17288 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17289 written |= (1 << 3);
17290 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17291 }
17292 }
17293
17294 abuf->written = written;
17295 return vpc;
17296 #undef FLD
17297 }
17298
17299 /* fabss: fabss$pack $FRj,$FRk */
17300
17301 static SEM_PC
17302 SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17303 {
17304 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17306 int UNUSED written = 0;
17307 IADDR UNUSED pc = abuf->addr;
17308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17309
17310 {
17311 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17312 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17313 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17314 }
17315
17316 return vpc;
17317 #undef FLD
17318 }
17319
17320 /* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17321
17322 static SEM_PC
17323 SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17324 {
17325 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17327 int UNUSED written = 0;
17328 IADDR UNUSED pc = abuf->addr;
17329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17330
17331 {
17332 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->absdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17333 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17334 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17335 }
17336
17337 return vpc;
17338 #undef FLD
17339 }
17340
17341 /* fdabss: fdabss$pack $FRj,$FRk */
17342
17343 static SEM_PC
17344 SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17345 {
17346 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17348 int UNUSED written = 0;
17349 IADDR UNUSED pc = abuf->addr;
17350 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17351
17352 {
17353 {
17354 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17355 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17356 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17357 }
17358 {
17359 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17360 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17361 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17362 }
17363 }
17364
17365 return vpc;
17366 #undef FLD
17367 }
17368
17369 /* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17370
17371 static SEM_PC
17372 SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17373 {
17374 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17376 int UNUSED written = 0;
17377 IADDR UNUSED pc = abuf->addr;
17378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17379
17380 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17381 {
17382 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->abssf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17383 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17384 written |= (1 << 3);
17385 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17386 }
17387 }
17388
17389 abuf->written = written;
17390 return vpc;
17391 #undef FLD
17392 }
17393
17394 /* fsqrts: fsqrts$pack $FRj,$FRk */
17395
17396 static SEM_PC
17397 SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17398 {
17399 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17400 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17401 int UNUSED written = 0;
17402 IADDR UNUSED pc = abuf->addr;
17403 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17404
17405 {
17406 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17407 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17408 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17409 }
17410
17411 return vpc;
17412 #undef FLD
17413 }
17414
17415 /* fdsqrts: fdsqrts$pack $FRj,$FRk */
17416
17417 static SEM_PC
17418 SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17419 {
17420 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17422 int UNUSED written = 0;
17423 IADDR UNUSED pc = abuf->addr;
17424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17425
17426 {
17427 {
17428 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17429 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17430 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17431 }
17432 {
17433 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17434 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17435 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17436 }
17437 }
17438
17439 return vpc;
17440 #undef FLD
17441 }
17442
17443 /* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17444
17445 static SEM_PC
17446 SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17447 {
17448 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17450 int UNUSED written = 0;
17451 IADDR UNUSED pc = abuf->addr;
17452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17453
17454 {
17455 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17456 {
17457 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17458 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17459 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17460 }
17461 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17462 {
17463 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17464 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17465 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17466 }
17467 }
17468
17469 return vpc;
17470 #undef FLD
17471 }
17472
17473 /* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17474
17475 static SEM_PC
17476 SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17477 {
17478 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17479 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17480 int UNUSED written = 0;
17481 IADDR UNUSED pc = abuf->addr;
17482 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17483
17484 {
17485 DF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtdf) (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17486 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17487 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17488 }
17489
17490 return vpc;
17491 #undef FLD
17492 }
17493
17494 /* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17495
17496 static SEM_PC
17497 SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17498 {
17499 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17500 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17501 int UNUSED written = 0;
17502 IADDR UNUSED pc = abuf->addr;
17503 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17504
17505 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17506 {
17507 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17508 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17509 written |= (1 << 3);
17510 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17511 }
17512 }
17513
17514 abuf->written = written;
17515 return vpc;
17516 #undef FLD
17517 }
17518
17519 /* nfsqrts: nfsqrts$pack $FRj,$FRk */
17520
17521 static SEM_PC
17522 SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17523 {
17524 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17526 int UNUSED written = 0;
17527 IADDR UNUSED pc = abuf->addr;
17528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17529
17530 {
17531 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17532 {
17533 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->sqrtsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17534 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17535 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17536 }
17537 }
17538
17539 return vpc;
17540 #undef FLD
17541 }
17542
17543 /* fadds: fadds$pack $FRi,$FRj,$FRk */
17544
17545 static SEM_PC
17546 SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17547 {
17548 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17550 int UNUSED written = 0;
17551 IADDR UNUSED pc = abuf->addr;
17552 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17553
17554 {
17555 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)));
17556 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17557 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17558 }
17559
17560 return vpc;
17561 #undef FLD
17562 }
17563
17564 /* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17565
17566 static SEM_PC
17567 SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17568 {
17569 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17571 int UNUSED written = 0;
17572 IADDR UNUSED pc = abuf->addr;
17573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17574
17575 {
17576 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)));
17577 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17578 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17579 }
17580
17581 return vpc;
17582 #undef FLD
17583 }
17584
17585 /* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17586
17587 static SEM_PC
17588 SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17589 {
17590 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17591 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17592 int UNUSED written = 0;
17593 IADDR UNUSED pc = abuf->addr;
17594 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17595
17596 {
17597 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17598 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17599 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17600 }
17601
17602 return vpc;
17603 #undef FLD
17604 }
17605
17606 /* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17607
17608 static SEM_PC
17609 SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17610 {
17611 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17613 int UNUSED written = 0;
17614 IADDR UNUSED pc = abuf->addr;
17615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17616
17617 {
17618 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->divsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17619 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17620 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17621 }
17622
17623 return vpc;
17624 #undef FLD
17625 }
17626
17627 /* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17628
17629 static SEM_PC
17630 SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17631 {
17632 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17633 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17634 int UNUSED written = 0;
17635 IADDR UNUSED pc = abuf->addr;
17636 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17637
17638 {
17639 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)));
17640 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17641 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17642 }
17643
17644 return vpc;
17645 #undef FLD
17646 }
17647
17648 /* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17649
17650 static SEM_PC
17651 SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17652 {
17653 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17655 int UNUSED written = 0;
17656 IADDR UNUSED pc = abuf->addr;
17657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17658
17659 {
17660 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)));
17661 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17662 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17663 }
17664
17665 return vpc;
17666 #undef FLD
17667 }
17668
17669 /* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17670
17671 static SEM_PC
17672 SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17673 {
17674 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17675 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17676 int UNUSED written = 0;
17677 IADDR UNUSED pc = abuf->addr;
17678 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17679
17680 {
17681 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)));
17682 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17683 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17684 }
17685
17686 return vpc;
17687 #undef FLD
17688 }
17689
17690 /* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17691
17692 static SEM_PC
17693 SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17694 {
17695 #define FLD(f) abuf->fields.sfmt_fmaddd.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 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)));
17703 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17704 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17705 }
17706
17707 return vpc;
17708 #undef FLD
17709 }
17710
17711 /* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17712
17713 static SEM_PC
17714 SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17715 {
17716 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17717 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17718 int UNUSED written = 0;
17719 IADDR UNUSED pc = abuf->addr;
17720 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17721
17722 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17723 {
17724 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)));
17725 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17726 written |= (1 << 4);
17727 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17728 }
17729 }
17730
17731 abuf->written = written;
17732 return vpc;
17733 #undef FLD
17734 }
17735
17736 /* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17737
17738 static SEM_PC
17739 SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17740 {
17741 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17743 int UNUSED written = 0;
17744 IADDR UNUSED pc = abuf->addr;
17745 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17746
17747 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17748 {
17749 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)));
17750 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17751 written |= (1 << 4);
17752 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17753 }
17754 }
17755
17756 abuf->written = written;
17757 return vpc;
17758 #undef FLD
17759 }
17760
17761 /* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17762
17763 static SEM_PC
17764 SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17765 {
17766 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17767 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17768 int UNUSED written = 0;
17769 IADDR UNUSED pc = abuf->addr;
17770 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17771
17772 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17773 {
17774 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)));
17775 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17776 written |= (1 << 4);
17777 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17778 }
17779 }
17780
17781 abuf->written = written;
17782 return vpc;
17783 #undef FLD
17784 }
17785
17786 /* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17787
17788 static SEM_PC
17789 SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17790 {
17791 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17792 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17793 int UNUSED written = 0;
17794 IADDR UNUSED pc = abuf->addr;
17795 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17796
17797 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17798 {
17799 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)));
17800 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17801 written |= (1 << 4);
17802 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17803 }
17804 }
17805
17806 abuf->written = written;
17807 return vpc;
17808 #undef FLD
17809 }
17810
17811 /* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17812
17813 static SEM_PC
17814 SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17815 {
17816 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17818 int UNUSED written = 0;
17819 IADDR UNUSED pc = abuf->addr;
17820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17821
17822 {
17823 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17824 {
17825 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)));
17826 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17827 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17828 }
17829 }
17830
17831 return vpc;
17832 #undef FLD
17833 }
17834
17835 /* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17836
17837 static SEM_PC
17838 SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17839 {
17840 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17841 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17842 int UNUSED written = 0;
17843 IADDR UNUSED pc = abuf->addr;
17844 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17845
17846 {
17847 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17848 {
17849 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)));
17850 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17851 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17852 }
17853 }
17854
17855 return vpc;
17856 #undef FLD
17857 }
17858
17859 /* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17860
17861 static SEM_PC
17862 SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17863 {
17864 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17866 int UNUSED written = 0;
17867 IADDR UNUSED pc = abuf->addr;
17868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17869
17870 {
17871 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17872 {
17873 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)));
17874 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17875 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17876 }
17877 }
17878
17879 return vpc;
17880 #undef FLD
17881 }
17882
17883 /* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17884
17885 static SEM_PC
17886 SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17887 {
17888 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17890 int UNUSED written = 0;
17891 IADDR UNUSED pc = abuf->addr;
17892 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17893
17894 {
17895 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17896 {
17897 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)));
17898 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17899 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17900 }
17901 }
17902
17903 return vpc;
17904 #undef FLD
17905 }
17906
17907 /* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17908
17909 static SEM_PC
17910 SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17911 {
17912 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17914 int UNUSED written = 0;
17915 IADDR UNUSED pc = abuf->addr;
17916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17917
17918 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)))) {
17919 {
17920 UQI opval = 2;
17921 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17922 written |= (1 << 2);
17923 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17924 }
17925 } else {
17926 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)))) {
17927 {
17928 UQI opval = 8;
17929 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17930 written |= (1 << 2);
17931 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17932 }
17933 } else {
17934 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)))) {
17935 {
17936 UQI opval = 4;
17937 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17938 written |= (1 << 2);
17939 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17940 }
17941 } else {
17942 {
17943 UQI opval = 1;
17944 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17945 written |= (1 << 2);
17946 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17947 }
17948 }
17949 }
17950 }
17951
17952 abuf->written = written;
17953 return vpc;
17954 #undef FLD
17955 }
17956
17957 /* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17958
17959 static SEM_PC
17960 SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17961 {
17962 #define FLD(f) abuf->fields.sfmt_fcmpd.f
17963 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17964 int UNUSED written = 0;
17965 IADDR UNUSED pc = abuf->addr;
17966 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17967
17968 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)))) {
17969 {
17970 UQI opval = 2;
17971 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17972 written |= (1 << 2);
17973 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17974 }
17975 } else {
17976 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)))) {
17977 {
17978 UQI opval = 8;
17979 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17980 written |= (1 << 2);
17981 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17982 }
17983 } else {
17984 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)))) {
17985 {
17986 UQI opval = 4;
17987 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17988 written |= (1 << 2);
17989 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17990 }
17991 } else {
17992 {
17993 UQI opval = 1;
17994 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17995 written |= (1 << 2);
17996 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17997 }
17998 }
17999 }
18000 }
18001
18002 abuf->written = written;
18003 return vpc;
18004 #undef FLD
18005 }
18006
18007 /* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
18008
18009 static SEM_PC
18010 SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18011 {
18012 #define FLD(f) abuf->fields.sfmt_cfcmps.f
18013 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18014 int UNUSED written = 0;
18015 IADDR UNUSED pc = abuf->addr;
18016 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18017
18018 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18019 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)))) {
18020 {
18021 UQI opval = 2;
18022 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18023 written |= (1 << 4);
18024 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18025 }
18026 } else {
18027 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)))) {
18028 {
18029 UQI opval = 8;
18030 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18031 written |= (1 << 4);
18032 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18033 }
18034 } else {
18035 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)))) {
18036 {
18037 UQI opval = 4;
18038 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18039 written |= (1 << 4);
18040 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18041 }
18042 } else {
18043 {
18044 UQI opval = 1;
18045 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18046 written |= (1 << 4);
18047 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18048 }
18049 }
18050 }
18051 }
18052 }
18053
18054 abuf->written = written;
18055 return vpc;
18056 #undef FLD
18057 }
18058
18059 /* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
18060
18061 static SEM_PC
18062 SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18063 {
18064 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
18065 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18066 int UNUSED written = 0;
18067 IADDR UNUSED pc = abuf->addr;
18068 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18069
18070 {
18071 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)))) {
18072 {
18073 UQI opval = 2;
18074 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18075 written |= (1 << 7);
18076 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18077 }
18078 } else {
18079 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)))) {
18080 {
18081 UQI opval = 8;
18082 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18083 written |= (1 << 7);
18084 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18085 }
18086 } else {
18087 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)))) {
18088 {
18089 UQI opval = 4;
18090 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18091 written |= (1 << 7);
18092 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18093 }
18094 } else {
18095 {
18096 UQI opval = 1;
18097 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18098 written |= (1 << 7);
18099 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18100 }
18101 }
18102 }
18103 }
18104 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))))) {
18105 {
18106 UQI opval = 2;
18107 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
18108 written |= (1 << 8);
18109 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18110 }
18111 } else {
18112 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))))) {
18113 {
18114 UQI opval = 8;
18115 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
18116 written |= (1 << 8);
18117 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18118 }
18119 } else {
18120 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))))) {
18121 {
18122 UQI opval = 4;
18123 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
18124 written |= (1 << 8);
18125 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18126 }
18127 } else {
18128 {
18129 UQI opval = 1;
18130 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
18131 written |= (1 << 8);
18132 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18133 }
18134 }
18135 }
18136 }
18137 }
18138
18139 abuf->written = written;
18140 return vpc;
18141 #undef FLD
18142 }
18143
18144 /* fmadds: fmadds$pack $FRi,$FRj,$FRk */
18145
18146 static SEM_PC
18147 SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18148 {
18149 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18150 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18151 int UNUSED written = 0;
18152 IADDR UNUSED pc = abuf->addr;
18153 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18154
18155 {
18156 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)));
18157 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18158 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18159 }
18160
18161 return vpc;
18162 #undef FLD
18163 }
18164
18165 /* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
18166
18167 static SEM_PC
18168 SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18169 {
18170 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18171 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18172 int UNUSED written = 0;
18173 IADDR UNUSED pc = abuf->addr;
18174 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18175
18176 {
18177 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)));
18178 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18179 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18180 }
18181
18182 return vpc;
18183 #undef FLD
18184 }
18185
18186 /* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18187
18188 static SEM_PC
18189 SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18190 {
18191 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18192 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18193 int UNUSED written = 0;
18194 IADDR UNUSED pc = abuf->addr;
18195 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18196
18197 {
18198 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)));
18199 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18200 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18201 }
18202
18203 return vpc;
18204 #undef FLD
18205 }
18206
18207 /* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18208
18209 static SEM_PC
18210 SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18211 {
18212 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18214 int UNUSED written = 0;
18215 IADDR UNUSED pc = abuf->addr;
18216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18217
18218 {
18219 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)));
18220 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18221 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18222 }
18223
18224 return vpc;
18225 #undef FLD
18226 }
18227
18228 /* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18229
18230 static SEM_PC
18231 SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18232 {
18233 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18235 int UNUSED written = 0;
18236 IADDR UNUSED pc = abuf->addr;
18237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18238
18239 {
18240 {
18241 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)));
18242 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18243 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18244 }
18245 {
18246 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))));
18247 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18248 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18249 }
18250 }
18251
18252 return vpc;
18253 #undef FLD
18254 }
18255
18256 /* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18257
18258 static SEM_PC
18259 SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18260 {
18261 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18262 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18263 int UNUSED written = 0;
18264 IADDR UNUSED pc = abuf->addr;
18265 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18266
18267 {
18268 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18269 {
18270 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)));
18271 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18272 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18273 }
18274 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18275 {
18276 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))));
18277 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18278 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18279 }
18280 }
18281
18282 return vpc;
18283 #undef FLD
18284 }
18285
18286 /* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18287
18288 static SEM_PC
18289 SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18290 {
18291 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18292 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18293 int UNUSED written = 0;
18294 IADDR UNUSED pc = abuf->addr;
18295 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18296
18297 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18298 {
18299 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)));
18300 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18301 written |= (1 << 5);
18302 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18303 }
18304 }
18305
18306 abuf->written = written;
18307 return vpc;
18308 #undef FLD
18309 }
18310
18311 /* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18312
18313 static SEM_PC
18314 SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18315 {
18316 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18318 int UNUSED written = 0;
18319 IADDR UNUSED pc = abuf->addr;
18320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18321
18322 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18323 {
18324 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)));
18325 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18326 written |= (1 << 5);
18327 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18328 }
18329 }
18330
18331 abuf->written = written;
18332 return vpc;
18333 #undef FLD
18334 }
18335
18336 /* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18337
18338 static SEM_PC
18339 SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18340 {
18341 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18343 int UNUSED written = 0;
18344 IADDR UNUSED pc = abuf->addr;
18345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18346
18347 {
18348 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18349 {
18350 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)));
18351 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18352 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18353 }
18354 }
18355
18356 return vpc;
18357 #undef FLD
18358 }
18359
18360 /* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18361
18362 static SEM_PC
18363 SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18364 {
18365 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18367 int UNUSED written = 0;
18368 IADDR UNUSED pc = abuf->addr;
18369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18370
18371 {
18372 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18373 {
18374 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)));
18375 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18376 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18377 }
18378 }
18379
18380 return vpc;
18381 #undef FLD
18382 }
18383
18384 /* fmas: fmas$pack $FRi,$FRj,$FRk */
18385
18386 static SEM_PC
18387 SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18388 {
18389 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18391 int UNUSED written = 0;
18392 IADDR UNUSED pc = abuf->addr;
18393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18394
18395 {
18396 {
18397 SF opval = (* CGEN_CPU_FPU (current_cpu)->ops->mulsf) (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18398 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18399 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18400 }
18401 {
18402 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))));
18403 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18404 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18405 }
18406 }
18407
18408 return vpc;
18409 #undef FLD
18410 }
18411
18412 /* fmss: fmss$pack $FRi,$FRj,$FRk */
18413
18414 static SEM_PC
18415 SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18416 {
18417 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18419 int UNUSED written = 0;
18420 IADDR UNUSED pc = abuf->addr;
18421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18422
18423 {
18424 {
18425 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)));
18426 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18427 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18428 }
18429 {
18430 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))));
18431 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18432 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18433 }
18434 }
18435
18436 return vpc;
18437 #undef FLD
18438 }
18439
18440 /* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18441
18442 static SEM_PC
18443 SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18444 {
18445 #define FLD(f) abuf->fields.sfmt_fdmas.f
18446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18447 int UNUSED written = 0;
18448 IADDR UNUSED pc = abuf->addr;
18449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18450
18451 {
18452 {
18453 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)));
18454 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18455 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18456 }
18457 {
18458 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))));
18459 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18460 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18461 }
18462 {
18463 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))));
18464 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18465 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18466 }
18467 {
18468 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))));
18469 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18470 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18471 }
18472 }
18473
18474 return vpc;
18475 #undef FLD
18476 }
18477
18478 /* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18479
18480 static SEM_PC
18481 SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18482 {
18483 #define FLD(f) abuf->fields.sfmt_fdmas.f
18484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18485 int UNUSED written = 0;
18486 IADDR UNUSED pc = abuf->addr;
18487 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18488
18489 {
18490 {
18491 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)));
18492 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18493 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18494 }
18495 {
18496 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))));
18497 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18498 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18499 }
18500 {
18501 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))));
18502 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18503 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18504 }
18505 {
18506 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))));
18507 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18508 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18509 }
18510 }
18511
18512 return vpc;
18513 #undef FLD
18514 }
18515
18516 /* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18517
18518 static SEM_PC
18519 SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18520 {
18521 #define FLD(f) abuf->fields.sfmt_fdmas.f
18522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18523 int UNUSED written = 0;
18524 IADDR UNUSED pc = abuf->addr;
18525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18526
18527 {
18528 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18529 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18530 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18531 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18532 {
18533 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)));
18534 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18535 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18536 }
18537 {
18538 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))));
18539 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18540 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18541 }
18542 {
18543 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))));
18544 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18545 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18546 }
18547 {
18548 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))));
18549 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18550 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18551 }
18552 }
18553
18554 return vpc;
18555 #undef FLD
18556 }
18557
18558 /* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18559
18560 static SEM_PC
18561 SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18562 {
18563 #define FLD(f) abuf->fields.sfmt_fdmas.f
18564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18565 int UNUSED written = 0;
18566 IADDR UNUSED pc = abuf->addr;
18567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18568
18569 {
18570 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18571 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18572 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18573 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18574 {
18575 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)));
18576 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18577 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18578 }
18579 {
18580 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))));
18581 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18582 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18583 }
18584 {
18585 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))));
18586 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18587 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18588 }
18589 {
18590 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))));
18591 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18592 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18593 }
18594 }
18595
18596 return vpc;
18597 #undef FLD
18598 }
18599
18600 /* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18601
18602 static SEM_PC
18603 SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18604 {
18605 #define FLD(f) abuf->fields.sfmt_cfmas.f
18606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18607 int UNUSED written = 0;
18608 IADDR UNUSED pc = abuf->addr;
18609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18610
18611 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18612 {
18613 {
18614 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)));
18615 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18616 written |= (1 << 9);
18617 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18618 }
18619 {
18620 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))));
18621 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18622 written |= (1 << 10);
18623 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18624 }
18625 }
18626 }
18627
18628 abuf->written = written;
18629 return vpc;
18630 #undef FLD
18631 }
18632
18633 /* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18634
18635 static SEM_PC
18636 SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18637 {
18638 #define FLD(f) abuf->fields.sfmt_cfmas.f
18639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18640 int UNUSED written = 0;
18641 IADDR UNUSED pc = abuf->addr;
18642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18643
18644 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18645 {
18646 {
18647 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)));
18648 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18649 written |= (1 << 9);
18650 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18651 }
18652 {
18653 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))));
18654 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18655 written |= (1 << 10);
18656 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18657 }
18658 }
18659 }
18660
18661 abuf->written = written;
18662 return vpc;
18663 #undef FLD
18664 }
18665
18666 /* fmad: fmad$pack $FRi,$FRj,$FRk */
18667
18668 static SEM_PC
18669 SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18670 {
18671 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18673 int UNUSED written = 0;
18674 IADDR UNUSED pc = abuf->addr;
18675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18676
18677 {
18678 {
18679 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)))));
18680 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18681 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18682 }
18683 {
18684 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))))));
18685 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18686 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18687 }
18688 }
18689
18690 return vpc;
18691 #undef FLD
18692 }
18693
18694 /* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18695
18696 static SEM_PC
18697 SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18698 {
18699 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18700 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18701 int UNUSED written = 0;
18702 IADDR UNUSED pc = abuf->addr;
18703 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18704
18705 {
18706 {
18707 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)))));
18708 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18709 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18710 }
18711 {
18712 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))))));
18713 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18714 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18715 }
18716 }
18717
18718 return vpc;
18719 #undef FLD
18720 }
18721
18722 /* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18723
18724 static SEM_PC
18725 SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18726 {
18727 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18729 int UNUSED written = 0;
18730 IADDR UNUSED pc = abuf->addr;
18731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18732
18733 {
18734 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18735 {
18736 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)));
18737 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18738 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18739 }
18740 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18741 {
18742 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))));
18743 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18744 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18745 }
18746 }
18747
18748 return vpc;
18749 #undef FLD
18750 }
18751
18752 /* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18753
18754 static SEM_PC
18755 SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18756 {
18757 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18758 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18759 int UNUSED written = 0;
18760 IADDR UNUSED pc = abuf->addr;
18761 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18762
18763 {
18764 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18765 {
18766 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)));
18767 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18768 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18769 }
18770 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18771 {
18772 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))));
18773 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18774 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18775 }
18776 }
18777
18778 return vpc;
18779 #undef FLD
18780 }
18781
18782 /* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18783
18784 static SEM_PC
18785 SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18786 {
18787 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18789 int UNUSED written = 0;
18790 IADDR UNUSED pc = abuf->addr;
18791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18792
18793 {
18794 {
18795 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)));
18796 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18797 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18798 }
18799 {
18800 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))));
18801 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18802 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18803 }
18804 }
18805
18806 return vpc;
18807 #undef FLD
18808 }
18809
18810 /* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18811
18812 static SEM_PC
18813 SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18814 {
18815 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18817 int UNUSED written = 0;
18818 IADDR UNUSED pc = abuf->addr;
18819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18820
18821 {
18822 {
18823 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)));
18824 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18825 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18826 }
18827 {
18828 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))));
18829 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18830 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18831 }
18832 }
18833
18834 return vpc;
18835 #undef FLD
18836 }
18837
18838 /* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18839
18840 static SEM_PC
18841 SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18842 {
18843 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18845 int UNUSED written = 0;
18846 IADDR UNUSED pc = abuf->addr;
18847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18848
18849 {
18850 {
18851 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)));
18852 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18853 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18854 }
18855 {
18856 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))));
18857 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18858 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18859 }
18860 }
18861
18862 return vpc;
18863 #undef FLD
18864 }
18865
18866 /* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18867
18868 static SEM_PC
18869 SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18870 {
18871 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18873 int UNUSED written = 0;
18874 IADDR UNUSED pc = abuf->addr;
18875 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18876
18877 {
18878 {
18879 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)));
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 {
18884 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))));
18885 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18886 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18887 }
18888 }
18889
18890 return vpc;
18891 #undef FLD
18892 }
18893
18894 /* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18895
18896 static SEM_PC
18897 SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18898 {
18899 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18901 int UNUSED written = 0;
18902 IADDR UNUSED pc = abuf->addr;
18903 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18904
18905 {
18906 {
18907 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)));
18908 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18909 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18910 }
18911 {
18912 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))));
18913 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18914 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18915 }
18916 }
18917
18918 return vpc;
18919 #undef FLD
18920 }
18921
18922 /* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18923
18924 static SEM_PC
18925 SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18926 {
18927 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18929 int UNUSED written = 0;
18930 IADDR UNUSED pc = abuf->addr;
18931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18932
18933 {
18934 {
18935 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))));
18936 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18937 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18938 }
18939 {
18940 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)));
18941 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18942 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18943 }
18944 }
18945
18946 return vpc;
18947 #undef FLD
18948 }
18949
18950 /* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18951
18952 static SEM_PC
18953 SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18954 {
18955 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18957 int UNUSED written = 0;
18958 IADDR UNUSED pc = abuf->addr;
18959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18960
18961 {
18962 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18963 {
18964 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))));
18965 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18966 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18967 }
18968 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18969 {
18970 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)));
18971 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18972 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18973 }
18974 }
18975
18976 return vpc;
18977 #undef FLD
18978 }
18979
18980 /* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18981
18982 static SEM_PC
18983 SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18984 {
18985 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18987 int UNUSED written = 0;
18988 IADDR UNUSED pc = abuf->addr;
18989 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18990
18991 {
18992 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18993 {
18994 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)));
18995 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18996 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18997 }
18998 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18999 {
19000 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))));
19001 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
19002 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19003 }
19004 }
19005
19006 return vpc;
19007 #undef FLD
19008 }
19009
19010 /* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
19011
19012 static SEM_PC
19013 SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19014 {
19015 #define FLD(f) abuf->fields.sfmt_fdmadds.f
19016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19017 int UNUSED written = 0;
19018 IADDR UNUSED pc = abuf->addr;
19019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19020
19021 {
19022 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
19023 {
19024 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)));
19025 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
19026 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19027 }
19028 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
19029 {
19030 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))));
19031 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
19032 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19033 }
19034 }
19035
19036 return vpc;
19037 #undef FLD
19038 }
19039
19040 /* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
19041
19042 static SEM_PC
19043 SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19044 {
19045 #define FLD(f) abuf->fields.sfmt_fdmadds.f
19046 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19047 int UNUSED written = 0;
19048 IADDR UNUSED pc = abuf->addr;
19049 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19050
19051 {
19052 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
19053 {
19054 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)));
19055 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
19056 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19057 }
19058 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
19059 {
19060 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))));
19061 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
19062 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19063 }
19064 }
19065
19066 return vpc;
19067 #undef FLD
19068 }
19069
19070 /* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
19071
19072 static SEM_PC
19073 SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19074 {
19075 #define FLD(f) abuf->fields.sfmt_fdmadds.f
19076 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19077 int UNUSED written = 0;
19078 IADDR UNUSED pc = abuf->addr;
19079 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19080
19081 {
19082 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
19083 {
19084 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)));
19085 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
19086 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19087 }
19088 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
19089 {
19090 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))));
19091 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
19092 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19093 }
19094 }
19095
19096 return vpc;
19097 #undef FLD
19098 }
19099
19100 /* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
19101
19102 static SEM_PC
19103 SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19104 {
19105 #define FLD(f) abuf->fields.sfmt_fdmadds.f
19106 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19107 int UNUSED written = 0;
19108 IADDR UNUSED pc = abuf->addr;
19109 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19110
19111 {
19112 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
19113 {
19114 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)));
19115 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
19116 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19117 }
19118 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
19119 {
19120 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))));
19121 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
19122 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
19123 }
19124 }
19125
19126 return vpc;
19127 #undef FLD
19128 }
19129
19130 /* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
19131
19132 static SEM_PC
19133 SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19134 {
19135 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
19136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19137 int UNUSED written = 0;
19138 IADDR UNUSED pc = abuf->addr;
19139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19140
19141 {
19142 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
19143 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)))) {
19144 {
19145 UQI opval = 2;
19146 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
19147 written |= (1 << 8);
19148 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19149 }
19150 } else {
19151 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)))) {
19152 {
19153 UQI opval = 8;
19154 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
19155 written |= (1 << 8);
19156 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19157 }
19158 } else {
19159 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)))) {
19160 {
19161 UQI opval = 4;
19162 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
19163 written |= (1 << 8);
19164 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19165 }
19166 } else {
19167 {
19168 UQI opval = 1;
19169 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
19170 written |= (1 << 8);
19171 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19172 }
19173 }
19174 }
19175 }
19176 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
19177 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))))) {
19178 {
19179 UQI opval = 2;
19180 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19181 written |= (1 << 9);
19182 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19183 }
19184 } else {
19185 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))))) {
19186 {
19187 UQI opval = 8;
19188 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19189 written |= (1 << 9);
19190 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19191 }
19192 } else {
19193 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))))) {
19194 {
19195 UQI opval = 4;
19196 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19197 written |= (1 << 9);
19198 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19199 }
19200 } else {
19201 {
19202 UQI opval = 1;
19203 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19204 written |= (1 << 9);
19205 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19206 }
19207 }
19208 }
19209 }
19210 }
19211
19212 abuf->written = written;
19213 return vpc;
19214 #undef FLD
19215 }
19216
19217 /* mhsetlos: mhsetlos$pack $u12,$FRklo */
19218
19219 static SEM_PC
19220 SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19221 {
19222 #define FLD(f) abuf->fields.sfmt_mhsetlos.f
19223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19224 int UNUSED written = 0;
19225 IADDR UNUSED pc = abuf->addr;
19226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19227
19228 {
19229 UHI opval = FLD (f_u12);
19230 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19231 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19232 }
19233
19234 return vpc;
19235 #undef FLD
19236 }
19237
19238 /* mhsethis: mhsethis$pack $u12,$FRkhi */
19239
19240 static SEM_PC
19241 SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19242 {
19243 #define FLD(f) abuf->fields.sfmt_mhsethis.f
19244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19245 int UNUSED written = 0;
19246 IADDR UNUSED pc = abuf->addr;
19247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19248
19249 {
19250 UHI opval = FLD (f_u12);
19251 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19252 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19253 }
19254
19255 return vpc;
19256 #undef FLD
19257 }
19258
19259 /* mhdsets: mhdsets$pack $u12,$FRintk */
19260
19261 static SEM_PC
19262 SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19263 {
19264 #define FLD(f) abuf->fields.sfmt_mhdsets.f
19265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19266 int UNUSED written = 0;
19267 IADDR UNUSED pc = abuf->addr;
19268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19269
19270 {
19271 {
19272 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19273 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19274 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19275 }
19276 {
19277 UHI opval = FLD (f_u12);
19278 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19279 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19280 }
19281 {
19282 UHI opval = FLD (f_u12);
19283 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19284 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19285 }
19286 }
19287
19288 return vpc;
19289 #undef FLD
19290 }
19291
19292 /* mhsetloh: mhsetloh$pack $s5,$FRklo */
19293
19294 static SEM_PC
19295 SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19296 {
19297 #define FLD(f) abuf->fields.sfmt_mhsetloh.f
19298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19299 int UNUSED written = 0;
19300 IADDR UNUSED pc = abuf->addr;
19301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19302
19303 {
19304 HI tmp_tmp;
19305 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19306 tmp_tmp = ANDHI (tmp_tmp, 2047);
19307 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19308 {
19309 UHI opval = tmp_tmp;
19310 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19311 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19312 }
19313 }
19314
19315 return vpc;
19316 #undef FLD
19317 }
19318
19319 /* mhsethih: mhsethih$pack $s5,$FRkhi */
19320
19321 static SEM_PC
19322 SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19323 {
19324 #define FLD(f) abuf->fields.sfmt_mhsethih.f
19325 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19326 int UNUSED written = 0;
19327 IADDR UNUSED pc = abuf->addr;
19328 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19329
19330 {
19331 HI tmp_tmp;
19332 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19333 tmp_tmp = ANDHI (tmp_tmp, 2047);
19334 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19335 {
19336 UHI opval = tmp_tmp;
19337 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19338 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19339 }
19340 }
19341
19342 return vpc;
19343 #undef FLD
19344 }
19345
19346 /* mhdseth: mhdseth$pack $s5,$FRintk */
19347
19348 static SEM_PC
19349 SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19350 {
19351 #define FLD(f) abuf->fields.sfmt_mhdseth.f
19352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19353 int UNUSED written = 0;
19354 IADDR UNUSED pc = abuf->addr;
19355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19356
19357 {
19358 {
19359 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19360 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19361 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19362 }
19363 {
19364 HI tmp_tmp;
19365 tmp_tmp = GET_H_FR_HI (((FLD (f_FRk)) + (0)));
19366 tmp_tmp = ANDHI (tmp_tmp, 2047);
19367 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19368 {
19369 UHI opval = tmp_tmp;
19370 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19371 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19372 }
19373 }
19374 {
19375 HI tmp_tmp;
19376 tmp_tmp = GET_H_FR_LO (((FLD (f_FRk)) + (0)));
19377 tmp_tmp = ANDHI (tmp_tmp, 2047);
19378 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19379 {
19380 UHI opval = tmp_tmp;
19381 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19382 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19383 }
19384 }
19385 }
19386
19387 return vpc;
19388 #undef FLD
19389 }
19390
19391 /* mand: mand$pack $FRinti,$FRintj,$FRintk */
19392
19393 static SEM_PC
19394 SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19395 {
19396 #define FLD(f) abuf->fields.sfmt_mwcut.f
19397 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19398 int UNUSED written = 0;
19399 IADDR UNUSED pc = abuf->addr;
19400 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19401
19402 {
19403 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19404 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19405 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19406 }
19407
19408 return vpc;
19409 #undef FLD
19410 }
19411
19412 /* mor: mor$pack $FRinti,$FRintj,$FRintk */
19413
19414 static SEM_PC
19415 SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19416 {
19417 #define FLD(f) abuf->fields.sfmt_mwcut.f
19418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19419 int UNUSED written = 0;
19420 IADDR UNUSED pc = abuf->addr;
19421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19422
19423 {
19424 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19425 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19426 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19427 }
19428
19429 return vpc;
19430 #undef FLD
19431 }
19432
19433 /* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19434
19435 static SEM_PC
19436 SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19437 {
19438 #define FLD(f) abuf->fields.sfmt_mwcut.f
19439 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19440 int UNUSED written = 0;
19441 IADDR UNUSED pc = abuf->addr;
19442 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19443
19444 {
19445 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19446 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19447 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19448 }
19449
19450 return vpc;
19451 #undef FLD
19452 }
19453
19454 /* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19455
19456 static SEM_PC
19457 SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19458 {
19459 #define FLD(f) abuf->fields.sfmt_cmand.f
19460 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19461 int UNUSED written = 0;
19462 IADDR UNUSED pc = abuf->addr;
19463 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19464
19465 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19466 {
19467 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19468 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19469 written |= (1 << 4);
19470 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19471 }
19472 }
19473
19474 abuf->written = written;
19475 return vpc;
19476 #undef FLD
19477 }
19478
19479 /* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19480
19481 static SEM_PC
19482 SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19483 {
19484 #define FLD(f) abuf->fields.sfmt_cmand.f
19485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19486 int UNUSED written = 0;
19487 IADDR UNUSED pc = abuf->addr;
19488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19489
19490 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19491 {
19492 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19493 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19494 written |= (1 << 4);
19495 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19496 }
19497 }
19498
19499 abuf->written = written;
19500 return vpc;
19501 #undef FLD
19502 }
19503
19504 /* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19505
19506 static SEM_PC
19507 SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19508 {
19509 #define FLD(f) abuf->fields.sfmt_cmand.f
19510 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19511 int UNUSED written = 0;
19512 IADDR UNUSED pc = abuf->addr;
19513 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19514
19515 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19516 {
19517 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19518 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19519 written |= (1 << 4);
19520 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19521 }
19522 }
19523
19524 abuf->written = written;
19525 return vpc;
19526 #undef FLD
19527 }
19528
19529 /* mnot: mnot$pack $FRintj,$FRintk */
19530
19531 static SEM_PC
19532 SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19533 {
19534 #define FLD(f) abuf->fields.sfmt_mcut.f
19535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19536 int UNUSED written = 0;
19537 IADDR UNUSED pc = abuf->addr;
19538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19539
19540 {
19541 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19542 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19543 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19544 }
19545
19546 return vpc;
19547 #undef FLD
19548 }
19549
19550 /* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19551
19552 static SEM_PC
19553 SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19554 {
19555 #define FLD(f) abuf->fields.sfmt_cmand.f
19556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19557 int UNUSED written = 0;
19558 IADDR UNUSED pc = abuf->addr;
19559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19560
19561 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19562 {
19563 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19564 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19565 written |= (1 << 3);
19566 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19567 }
19568 }
19569
19570 abuf->written = written;
19571 return vpc;
19572 #undef FLD
19573 }
19574
19575 /* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19576
19577 static SEM_PC
19578 SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19579 {
19580 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19582 int UNUSED written = 0;
19583 IADDR UNUSED pc = abuf->addr;
19584 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19585
19586 {
19587 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19588 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19589 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19590 }
19591
19592 return vpc;
19593 #undef FLD
19594 }
19595
19596 /* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19597
19598 static SEM_PC
19599 SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19600 {
19601 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19602 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19603 int UNUSED written = 0;
19604 IADDR UNUSED pc = abuf->addr;
19605 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19606
19607 {
19608 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19609 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19610 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19611 }
19612
19613 return vpc;
19614 #undef FLD
19615 }
19616
19617 /* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19618
19619 static SEM_PC
19620 SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19621 {
19622 #define FLD(f) abuf->fields.sfmt_mwcut.f
19623 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19624 int UNUSED written = 0;
19625 IADDR UNUSED pc = abuf->addr;
19626 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19627
19628 {
19629 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)));
19630 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19631 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19632 }
19633
19634 return vpc;
19635 #undef FLD
19636 }
19637
19638 /* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19639
19640 static SEM_PC
19641 SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19642 {
19643 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19645 int UNUSED written = 0;
19646 IADDR UNUSED pc = abuf->addr;
19647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19648
19649 {
19650 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), FLD (f_u6));
19651 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19652 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19653 }
19654
19655 return vpc;
19656 #undef FLD
19657 }
19658
19659 /* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19660
19661 static SEM_PC
19662 SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19663 {
19664 #define FLD(f) abuf->fields.sfmt_mcut.f
19665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19666 int UNUSED written = 0;
19667 IADDR UNUSED pc = abuf->addr;
19668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19669
19670 {
19671 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19672 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19673 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19674 }
19675
19676 return vpc;
19677 #undef FLD
19678 }
19679
19680 /* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19681
19682 static SEM_PC
19683 SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19684 {
19685 #define FLD(f) abuf->fields.sfmt_mcuti.f
19686 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19687 int UNUSED written = 0;
19688 IADDR UNUSED pc = abuf->addr;
19689 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19690
19691 {
19692 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19693 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19694 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19695 }
19696
19697 return vpc;
19698 #undef FLD
19699 }
19700
19701 /* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19702
19703 static SEM_PC
19704 SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19705 {
19706 #define FLD(f) abuf->fields.sfmt_mcut.f
19707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19708 int UNUSED written = 0;
19709 IADDR UNUSED pc = abuf->addr;
19710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19711
19712 {
19713 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19714 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19715 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19716 }
19717
19718 return vpc;
19719 #undef FLD
19720 }
19721
19722 /* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19723
19724 static SEM_PC
19725 SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19726 {
19727 #define FLD(f) abuf->fields.sfmt_mcuti.f
19728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19729 int UNUSED written = 0;
19730 IADDR UNUSED pc = abuf->addr;
19731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19732
19733 {
19734 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19735 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19736 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19737 }
19738
19739 return vpc;
19740 #undef FLD
19741 }
19742
19743 /* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19744
19745 static SEM_PC
19746 SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19747 {
19748 #define FLD(f) abuf->fields.sfmt_mdcutssi.f
19749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19750 int UNUSED written = 0;
19751 IADDR UNUSED pc = abuf->addr;
19752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19753
19754 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19755 frvbf_media_acc_not_aligned (current_cpu);
19756 } else {
19757 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19758 frvbf_media_register_not_aligned (current_cpu);
19759 } else {
19760 {
19761 {
19762 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19763 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19764 written |= (1 << 5);
19765 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19766 }
19767 {
19768 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))), FLD (f_s6));
19769 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19770 written |= (1 << 6);
19771 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19772 }
19773 }
19774 }
19775 }
19776
19777 abuf->written = written;
19778 return vpc;
19779 #undef FLD
19780 }
19781
19782 /* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19783
19784 static SEM_PC
19785 SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19786 {
19787 #define FLD(f) abuf->fields.sfmt_mwcut.f
19788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19789 int UNUSED written = 0;
19790 IADDR UNUSED pc = abuf->addr;
19791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19792
19793 {
19794 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19795 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19796 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19797 }
19798
19799 return vpc;
19800 #undef FLD
19801 }
19802
19803 /* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19804
19805 static SEM_PC
19806 SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19807 {
19808 #define FLD(f) abuf->fields.sfmt_msllhi.f
19809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19810 int UNUSED written = 0;
19811 IADDR UNUSED pc = abuf->addr;
19812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19813
19814 {
19815 {
19816 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19817 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19818 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19819 }
19820 {
19821 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19822 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19823 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19824 }
19825 {
19826 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19827 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19828 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19829 }
19830 {
19831 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19832 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19833 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19834 }
19835 }
19836
19837 return vpc;
19838 #undef FLD
19839 }
19840
19841 /* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19842
19843 static SEM_PC
19844 SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19845 {
19846 #define FLD(f) abuf->fields.sfmt_msllhi.f
19847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19848 int UNUSED written = 0;
19849 IADDR UNUSED pc = abuf->addr;
19850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19851
19852 {
19853 {
19854 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19855 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19856 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19857 }
19858 {
19859 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19860 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19861 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19862 }
19863 {
19864 UHI opval = SRLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19865 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19866 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19867 }
19868 {
19869 UHI opval = SRLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19870 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19871 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19872 }
19873 }
19874
19875 return vpc;
19876 #undef FLD
19877 }
19878
19879 /* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19880
19881 static SEM_PC
19882 SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19883 {
19884 #define FLD(f) abuf->fields.sfmt_msllhi.f
19885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19886 int UNUSED written = 0;
19887 IADDR UNUSED pc = abuf->addr;
19888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19889
19890 {
19891 {
19892 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19893 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19894 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19895 }
19896 {
19897 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19898 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19899 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19900 }
19901 {
19902 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19903 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19904 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19905 }
19906 {
19907 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19908 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19909 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19910 }
19911 }
19912
19913 return vpc;
19914 #undef FLD
19915 }
19916
19917 /* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19918
19919 static SEM_PC
19920 SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19921 {
19922 #define FLD(f) abuf->fields.sfmt_mdrotli.f
19923 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19924 int UNUSED written = 0;
19925 IADDR UNUSED pc = abuf->addr;
19926 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19927
19928 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19929 frvbf_media_register_not_aligned (current_cpu);
19930 } else {
19931 {
19932 {
19933 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19934 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19935 written |= (1 << 5);
19936 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19937 }
19938 {
19939 USI opval = ROLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_s6), 31));
19940 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19941 written |= (1 << 6);
19942 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19943 }
19944 }
19945 }
19946
19947 abuf->written = written;
19948 return vpc;
19949 #undef FLD
19950 }
19951
19952 /* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19953
19954 static SEM_PC
19955 SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19956 {
19957 #define FLD(f) abuf->fields.sfmt_mcplhi.f
19958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19959 int UNUSED written = 0;
19960 IADDR UNUSED pc = abuf->addr;
19961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19962
19963 {
19964 HI tmp_arg1;
19965 HI tmp_arg2;
19966 HI tmp_shift;
19967 {
19968 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19969 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19970 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19971 }
19972 {
19973 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19974 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19975 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19976 }
19977 tmp_shift = ANDSI (FLD (f_u6), 15);
19978 tmp_arg1 = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), tmp_shift);
19979 if (NEHI (tmp_shift, 0)) {
19980 {
19981 tmp_arg2 = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
19982 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19983 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19984 }
19985 }
19986 {
19987 UHI opval = tmp_arg1;
19988 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19989 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19990 }
19991 }
19992
19993 return vpc;
19994 #undef FLD
19995 }
19996
19997 /* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19998
19999 static SEM_PC
20000 SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20001 {
20002 #define FLD(f) abuf->fields.sfmt_mwcuti.f
20003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20004 int UNUSED written = 0;
20005 IADDR UNUSED pc = abuf->addr;
20006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20007
20008 {
20009 SI tmp_tmp;
20010 SI tmp_shift;
20011 tmp_shift = ANDSI (FLD (f_u6), 31);
20012 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
20013 if (NESI (tmp_shift, 0)) {
20014 {
20015 SI tmp_tmp1;
20016 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
20017 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
20018 }
20019 }
20020 {
20021 SI opval = tmp_tmp;
20022 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20023 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20024 }
20025 }
20026
20027 return vpc;
20028 #undef FLD
20029 }
20030
20031 /* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
20032
20033 static SEM_PC
20034 SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20035 {
20036 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20037 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20038 int UNUSED written = 0;
20039 IADDR UNUSED pc = abuf->addr;
20040 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20041
20042 {
20043 HI tmp_argihi;
20044 HI tmp_argilo;
20045 HI tmp_argjhi;
20046 HI tmp_argjlo;
20047 {
20048 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20049 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20050 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20051 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20052 }
20053 if (GTHI (tmp_argihi, tmp_argjhi)) {
20054 {
20055 UHI opval = tmp_argjhi;
20056 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20057 written |= (1 << 9);
20058 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20059 }
20060 } else {
20061 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20062 {
20063 UHI opval = INVHI (tmp_argjhi);
20064 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20065 written |= (1 << 9);
20066 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20067 }
20068 } else {
20069 {
20070 UHI opval = tmp_argihi;
20071 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20072 written |= (1 << 9);
20073 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20074 }
20075 }
20076 }
20077 if (GTHI (tmp_argilo, tmp_argjlo)) {
20078 {
20079 UHI opval = tmp_argjlo;
20080 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20081 written |= (1 << 10);
20082 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20083 }
20084 } else {
20085 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20086 {
20087 UHI opval = INVHI (tmp_argjlo);
20088 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20089 written |= (1 << 10);
20090 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20091 }
20092 } else {
20093 {
20094 UHI opval = tmp_argilo;
20095 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20096 written |= (1 << 10);
20097 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20098 }
20099 }
20100 }
20101 }
20102
20103 abuf->written = written;
20104 return vpc;
20105 #undef FLD
20106 }
20107
20108 /* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
20109
20110 static SEM_PC
20111 SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20112 {
20113 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
20114 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20115 int UNUSED written = 0;
20116 IADDR UNUSED pc = abuf->addr;
20117 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20118
20119 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
20120 frvbf_media_register_not_aligned (current_cpu);
20121 } else {
20122 {
20123 HI tmp_argihi;
20124 HI tmp_argilo;
20125 HI tmp_argjhi;
20126 HI tmp_argjlo;
20127 {
20128 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20129 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20130 written |= (1 << 14);
20131 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20132 }
20133 {
20134 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20135 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20136 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20137 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20138 }
20139 if (GTHI (tmp_argihi, tmp_argjhi)) {
20140 {
20141 UHI opval = tmp_argjhi;
20142 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20143 written |= (1 << 15);
20144 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20145 }
20146 } else {
20147 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20148 {
20149 UHI opval = INVHI (tmp_argjhi);
20150 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20151 written |= (1 << 15);
20152 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20153 }
20154 } else {
20155 {
20156 UHI opval = tmp_argihi;
20157 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20158 written |= (1 << 15);
20159 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20160 }
20161 }
20162 }
20163 if (GTHI (tmp_argilo, tmp_argjlo)) {
20164 {
20165 UHI opval = tmp_argjlo;
20166 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20167 written |= (1 << 17);
20168 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20169 }
20170 } else {
20171 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20172 {
20173 UHI opval = INVHI (tmp_argjlo);
20174 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20175 written |= (1 << 17);
20176 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20177 }
20178 } else {
20179 {
20180 UHI opval = tmp_argilo;
20181 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20182 written |= (1 << 17);
20183 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20184 }
20185 }
20186 }
20187 {
20188 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20189 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20190 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20191 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20192 }
20193 if (GTHI (tmp_argihi, tmp_argjhi)) {
20194 {
20195 UHI opval = tmp_argjhi;
20196 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20197 written |= (1 << 16);
20198 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20199 }
20200 } else {
20201 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20202 {
20203 UHI opval = INVHI (tmp_argjhi);
20204 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20205 written |= (1 << 16);
20206 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20207 }
20208 } else {
20209 {
20210 UHI opval = tmp_argihi;
20211 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20212 written |= (1 << 16);
20213 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20214 }
20215 }
20216 }
20217 if (GTHI (tmp_argilo, tmp_argjlo)) {
20218 {
20219 UHI opval = tmp_argjlo;
20220 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20221 written |= (1 << 18);
20222 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20223 }
20224 } else {
20225 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20226 {
20227 UHI opval = INVHI (tmp_argjlo);
20228 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20229 written |= (1 << 18);
20230 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20231 }
20232 } else {
20233 {
20234 UHI opval = tmp_argilo;
20235 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20236 written |= (1 << 18);
20237 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20238 }
20239 }
20240 }
20241 }
20242 }
20243
20244 abuf->written = written;
20245 return vpc;
20246 #undef FLD
20247 }
20248
20249 /* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20250
20251 static SEM_PC
20252 SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20253 {
20254 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20256 int UNUSED written = 0;
20257 IADDR UNUSED pc = abuf->addr;
20258 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20259
20260 {
20261 UHI tmp_argihi;
20262 UHI tmp_argilo;
20263 UHI tmp_argjhi;
20264 UHI tmp_argjlo;
20265 {
20266 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20267 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20268 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20269 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20270 }
20271 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20272 {
20273 UHI opval = tmp_argjhi;
20274 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20275 written |= (1 << 9);
20276 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20277 }
20278 } else {
20279 {
20280 UHI opval = tmp_argihi;
20281 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20282 written |= (1 << 9);
20283 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20284 }
20285 }
20286 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20287 {
20288 UHI opval = tmp_argjlo;
20289 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20290 written |= (1 << 10);
20291 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20292 }
20293 } else {
20294 {
20295 UHI opval = tmp_argilo;
20296 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20297 written |= (1 << 10);
20298 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20299 }
20300 }
20301 }
20302
20303 abuf->written = written;
20304 return vpc;
20305 #undef FLD
20306 }
20307
20308 /* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20309
20310 static SEM_PC
20311 SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20312 {
20313 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20315 int UNUSED written = 0;
20316 IADDR UNUSED pc = abuf->addr;
20317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20318
20319 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20320 frvbf_media_cr_not_aligned (current_cpu);
20321 } else {
20322 {
20323 HI tmp_argihi;
20324 HI tmp_argilo;
20325 HI tmp_argjhi;
20326 HI tmp_argjlo;
20327 {
20328 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20329 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20330 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20331 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20332 }
20333 if (GTHI (tmp_argihi, tmp_argjhi)) {
20334 {
20335 UQI opval = 2;
20336 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20337 written |= (1 << 9);
20338 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20339 }
20340 } else {
20341 if (EQHI (tmp_argihi, tmp_argjhi)) {
20342 {
20343 UQI opval = 8;
20344 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20345 written |= (1 << 9);
20346 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20347 }
20348 } else {
20349 if (LTHI (tmp_argihi, tmp_argjhi)) {
20350 {
20351 UQI opval = 4;
20352 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20353 written |= (1 << 9);
20354 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20355 }
20356 } else {
20357 {
20358 UQI opval = 1;
20359 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20360 written |= (1 << 9);
20361 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20362 }
20363 }
20364 }
20365 }
20366 if (GTHI (tmp_argilo, tmp_argjlo)) {
20367 {
20368 UQI opval = 2;
20369 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20370 written |= (1 << 10);
20371 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20372 }
20373 } else {
20374 if (EQHI (tmp_argilo, tmp_argjlo)) {
20375 {
20376 UQI opval = 8;
20377 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20378 written |= (1 << 10);
20379 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20380 }
20381 } else {
20382 if (LTHI (tmp_argilo, tmp_argjlo)) {
20383 {
20384 UQI opval = 4;
20385 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20386 written |= (1 << 10);
20387 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20388 }
20389 } else {
20390 {
20391 UQI opval = 1;
20392 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20393 written |= (1 << 10);
20394 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20395 }
20396 }
20397 }
20398 }
20399 }
20400 }
20401
20402 abuf->written = written;
20403 return vpc;
20404 #undef FLD
20405 }
20406
20407 /* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20408
20409 static SEM_PC
20410 SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20411 {
20412 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20414 int UNUSED written = 0;
20415 IADDR UNUSED pc = abuf->addr;
20416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20417
20418 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20419 frvbf_media_cr_not_aligned (current_cpu);
20420 } else {
20421 {
20422 UHI tmp_argihi;
20423 UHI tmp_argilo;
20424 UHI tmp_argjhi;
20425 UHI tmp_argjlo;
20426 {
20427 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20428 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20429 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20430 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20431 }
20432 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20433 {
20434 UQI opval = 2;
20435 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20436 written |= (1 << 9);
20437 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20438 }
20439 } else {
20440 if (EQHI (tmp_argihi, tmp_argjhi)) {
20441 {
20442 UQI opval = 8;
20443 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20444 written |= (1 << 9);
20445 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20446 }
20447 } else {
20448 if (LTUHI (tmp_argihi, tmp_argjhi)) {
20449 {
20450 UQI opval = 4;
20451 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20452 written |= (1 << 9);
20453 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20454 }
20455 } else {
20456 {
20457 UQI opval = 1;
20458 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20459 written |= (1 << 9);
20460 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20461 }
20462 }
20463 }
20464 }
20465 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20466 {
20467 UQI opval = 2;
20468 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20469 written |= (1 << 10);
20470 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20471 }
20472 } else {
20473 if (EQHI (tmp_argilo, tmp_argjlo)) {
20474 {
20475 UQI opval = 8;
20476 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20477 written |= (1 << 10);
20478 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20479 }
20480 } else {
20481 if (LTUHI (tmp_argilo, tmp_argjlo)) {
20482 {
20483 UQI opval = 4;
20484 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20485 written |= (1 << 10);
20486 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20487 }
20488 } else {
20489 {
20490 UQI opval = 1;
20491 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20492 written |= (1 << 10);
20493 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20494 }
20495 }
20496 }
20497 }
20498 }
20499 }
20500
20501 abuf->written = written;
20502 return vpc;
20503 #undef FLD
20504 }
20505
20506 /* mabshs: mabshs$pack $FRintj,$FRintk */
20507
20508 static SEM_PC
20509 SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20510 {
20511 #define FLD(f) abuf->fields.sfmt_mabshs.f
20512 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20513 int UNUSED written = 0;
20514 IADDR UNUSED pc = abuf->addr;
20515 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20516
20517 {
20518 HI tmp_arghi;
20519 HI tmp_arglo;
20520 {
20521 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20522 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20523 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20524 }
20525 {
20526 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20527 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20528 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20529 }
20530 tmp_arghi = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
20531 tmp_arglo = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
20532 if (GTDI (ABSHI (tmp_arghi), 32767)) {
20533 {
20534 {
20535 UHI opval = 32767;
20536 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20537 written |= (1 << 8);
20538 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20539 }
20540 frvbf_media_overflow (current_cpu, 8);
20541 }
20542 } else {
20543 if (LTDI (ABSHI (tmp_arghi), -32768)) {
20544 {
20545 {
20546 UHI opval = -32768;
20547 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20548 written |= (1 << 8);
20549 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20550 }
20551 frvbf_media_overflow (current_cpu, 8);
20552 }
20553 } else {
20554 {
20555 UHI opval = ABSHI (tmp_arghi);
20556 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20557 written |= (1 << 8);
20558 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20559 }
20560 }
20561 }
20562 if (GTDI (ABSHI (tmp_arglo), 32767)) {
20563 {
20564 {
20565 UHI opval = 32767;
20566 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20567 written |= (1 << 9);
20568 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20569 }
20570 frvbf_media_overflow (current_cpu, 4);
20571 }
20572 } else {
20573 if (LTDI (ABSHI (tmp_arglo), -32768)) {
20574 {
20575 {
20576 UHI opval = -32768;
20577 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20578 written |= (1 << 9);
20579 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20580 }
20581 frvbf_media_overflow (current_cpu, 4);
20582 }
20583 } else {
20584 {
20585 UHI opval = ABSHI (tmp_arglo);
20586 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20587 written |= (1 << 9);
20588 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20589 }
20590 }
20591 }
20592 }
20593
20594 abuf->written = written;
20595 return vpc;
20596 #undef FLD
20597 }
20598
20599 /* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20600
20601 static SEM_PC
20602 SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20603 {
20604 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20606 int UNUSED written = 0;
20607 IADDR UNUSED pc = abuf->addr;
20608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20609
20610 {
20611 HI tmp_argihi;
20612 HI tmp_argilo;
20613 HI tmp_argjhi;
20614 HI tmp_argjlo;
20615 {
20616 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20617 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20618 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20619 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20620 }
20621 {
20622 DI tmp_tmp;
20623 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20624 if (GTDI (tmp_tmp, 32767)) {
20625 {
20626 {
20627 UHI opval = 32767;
20628 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20629 written |= (1 << 9);
20630 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20631 }
20632 frvbf_media_overflow (current_cpu, 8);
20633 }
20634 } else {
20635 if (LTDI (tmp_tmp, -32768)) {
20636 {
20637 {
20638 UHI opval = -32768;
20639 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20640 written |= (1 << 9);
20641 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20642 }
20643 frvbf_media_overflow (current_cpu, 8);
20644 }
20645 } else {
20646 {
20647 UHI opval = tmp_tmp;
20648 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20649 written |= (1 << 9);
20650 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20651 }
20652 }
20653 }
20654 }
20655 {
20656 DI tmp_tmp;
20657 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20658 if (GTDI (tmp_tmp, 32767)) {
20659 {
20660 {
20661 UHI opval = 32767;
20662 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20663 written |= (1 << 10);
20664 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20665 }
20666 frvbf_media_overflow (current_cpu, 4);
20667 }
20668 } else {
20669 if (LTDI (tmp_tmp, -32768)) {
20670 {
20671 {
20672 UHI opval = -32768;
20673 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20674 written |= (1 << 10);
20675 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20676 }
20677 frvbf_media_overflow (current_cpu, 4);
20678 }
20679 } else {
20680 {
20681 UHI opval = tmp_tmp;
20682 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20683 written |= (1 << 10);
20684 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20685 }
20686 }
20687 }
20688 }
20689 }
20690
20691 abuf->written = written;
20692 return vpc;
20693 #undef FLD
20694 }
20695
20696 /* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20697
20698 static SEM_PC
20699 SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20700 {
20701 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20703 int UNUSED written = 0;
20704 IADDR UNUSED pc = abuf->addr;
20705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20706
20707 {
20708 UHI tmp_argihi;
20709 UHI tmp_argilo;
20710 UHI tmp_argjhi;
20711 UHI tmp_argjlo;
20712 {
20713 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20714 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20715 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20716 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20717 }
20718 {
20719 DI tmp_tmp;
20720 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20721 if (GTDI (tmp_tmp, 65535)) {
20722 {
20723 {
20724 UHI opval = 65535;
20725 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20726 written |= (1 << 9);
20727 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20728 }
20729 frvbf_media_overflow (current_cpu, 8);
20730 }
20731 } else {
20732 if (LTDI (tmp_tmp, 0)) {
20733 {
20734 {
20735 UHI opval = 0;
20736 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20737 written |= (1 << 9);
20738 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20739 }
20740 frvbf_media_overflow (current_cpu, 8);
20741 }
20742 } else {
20743 {
20744 UHI opval = tmp_tmp;
20745 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20746 written |= (1 << 9);
20747 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20748 }
20749 }
20750 }
20751 }
20752 {
20753 DI tmp_tmp;
20754 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20755 if (GTDI (tmp_tmp, 65535)) {
20756 {
20757 {
20758 UHI opval = 65535;
20759 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20760 written |= (1 << 10);
20761 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20762 }
20763 frvbf_media_overflow (current_cpu, 4);
20764 }
20765 } else {
20766 if (LTDI (tmp_tmp, 0)) {
20767 {
20768 {
20769 UHI opval = 0;
20770 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20771 written |= (1 << 10);
20772 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20773 }
20774 frvbf_media_overflow (current_cpu, 4);
20775 }
20776 } else {
20777 {
20778 UHI opval = tmp_tmp;
20779 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20780 written |= (1 << 10);
20781 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20782 }
20783 }
20784 }
20785 }
20786 }
20787
20788 abuf->written = written;
20789 return vpc;
20790 #undef FLD
20791 }
20792
20793 /* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20794
20795 static SEM_PC
20796 SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20797 {
20798 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20800 int UNUSED written = 0;
20801 IADDR UNUSED pc = abuf->addr;
20802 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20803
20804 {
20805 HI tmp_argihi;
20806 HI tmp_argilo;
20807 HI tmp_argjhi;
20808 HI tmp_argjlo;
20809 {
20810 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20811 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20812 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20813 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20814 }
20815 {
20816 DI tmp_tmp;
20817 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20818 if (GTDI (tmp_tmp, 32767)) {
20819 {
20820 {
20821 UHI opval = 32767;
20822 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20823 written |= (1 << 9);
20824 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20825 }
20826 frvbf_media_overflow (current_cpu, 8);
20827 }
20828 } else {
20829 if (LTDI (tmp_tmp, -32768)) {
20830 {
20831 {
20832 UHI opval = -32768;
20833 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20834 written |= (1 << 9);
20835 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20836 }
20837 frvbf_media_overflow (current_cpu, 8);
20838 }
20839 } else {
20840 {
20841 UHI opval = tmp_tmp;
20842 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20843 written |= (1 << 9);
20844 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20845 }
20846 }
20847 }
20848 }
20849 {
20850 DI tmp_tmp;
20851 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20852 if (GTDI (tmp_tmp, 32767)) {
20853 {
20854 {
20855 UHI opval = 32767;
20856 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20857 written |= (1 << 10);
20858 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20859 }
20860 frvbf_media_overflow (current_cpu, 4);
20861 }
20862 } else {
20863 if (LTDI (tmp_tmp, -32768)) {
20864 {
20865 {
20866 UHI opval = -32768;
20867 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20868 written |= (1 << 10);
20869 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20870 }
20871 frvbf_media_overflow (current_cpu, 4);
20872 }
20873 } else {
20874 {
20875 UHI opval = tmp_tmp;
20876 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20877 written |= (1 << 10);
20878 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20879 }
20880 }
20881 }
20882 }
20883 }
20884
20885 abuf->written = written;
20886 return vpc;
20887 #undef FLD
20888 }
20889
20890 /* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20891
20892 static SEM_PC
20893 SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20894 {
20895 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20897 int UNUSED written = 0;
20898 IADDR UNUSED pc = abuf->addr;
20899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20900
20901 {
20902 UHI tmp_argihi;
20903 UHI tmp_argilo;
20904 UHI tmp_argjhi;
20905 UHI tmp_argjlo;
20906 {
20907 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20908 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20909 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20910 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20911 }
20912 {
20913 DI tmp_tmp;
20914 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20915 if (GTDI (tmp_tmp, 65535)) {
20916 {
20917 {
20918 UHI opval = 65535;
20919 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20920 written |= (1 << 9);
20921 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20922 }
20923 frvbf_media_overflow (current_cpu, 8);
20924 }
20925 } else {
20926 if (LTDI (tmp_tmp, 0)) {
20927 {
20928 {
20929 UHI opval = 0;
20930 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20931 written |= (1 << 9);
20932 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20933 }
20934 frvbf_media_overflow (current_cpu, 8);
20935 }
20936 } else {
20937 {
20938 UHI opval = tmp_tmp;
20939 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20940 written |= (1 << 9);
20941 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20942 }
20943 }
20944 }
20945 }
20946 {
20947 DI tmp_tmp;
20948 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20949 if (GTDI (tmp_tmp, 65535)) {
20950 {
20951 {
20952 UHI opval = 65535;
20953 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20954 written |= (1 << 10);
20955 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20956 }
20957 frvbf_media_overflow (current_cpu, 4);
20958 }
20959 } else {
20960 if (LTDI (tmp_tmp, 0)) {
20961 {
20962 {
20963 UHI opval = 0;
20964 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20965 written |= (1 << 10);
20966 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20967 }
20968 frvbf_media_overflow (current_cpu, 4);
20969 }
20970 } else {
20971 {
20972 UHI opval = tmp_tmp;
20973 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20974 written |= (1 << 10);
20975 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20976 }
20977 }
20978 }
20979 }
20980 }
20981
20982 abuf->written = written;
20983 return vpc;
20984 #undef FLD
20985 }
20986
20987 /* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20988
20989 static SEM_PC
20990 SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20991 {
20992 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20993 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20994 int UNUSED written = 0;
20995 IADDR UNUSED pc = abuf->addr;
20996 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20997
20998 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20999 {
21000 HI tmp_argihi;
21001 HI tmp_argilo;
21002 HI tmp_argjhi;
21003 HI tmp_argjlo;
21004 {
21005 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21006 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21007 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21008 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21009 }
21010 {
21011 DI tmp_tmp;
21012 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21013 if (GTDI (tmp_tmp, 32767)) {
21014 {
21015 {
21016 UHI opval = 32767;
21017 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21018 written |= (1 << 11);
21019 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21020 }
21021 frvbf_media_overflow (current_cpu, 8);
21022 }
21023 } else {
21024 if (LTDI (tmp_tmp, -32768)) {
21025 {
21026 {
21027 UHI opval = -32768;
21028 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21029 written |= (1 << 11);
21030 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21031 }
21032 frvbf_media_overflow (current_cpu, 8);
21033 }
21034 } else {
21035 {
21036 UHI opval = tmp_tmp;
21037 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21038 written |= (1 << 11);
21039 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21040 }
21041 }
21042 }
21043 }
21044 {
21045 DI tmp_tmp;
21046 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21047 if (GTDI (tmp_tmp, 32767)) {
21048 {
21049 {
21050 UHI opval = 32767;
21051 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21052 written |= (1 << 12);
21053 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21054 }
21055 frvbf_media_overflow (current_cpu, 4);
21056 }
21057 } else {
21058 if (LTDI (tmp_tmp, -32768)) {
21059 {
21060 {
21061 UHI opval = -32768;
21062 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21063 written |= (1 << 12);
21064 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21065 }
21066 frvbf_media_overflow (current_cpu, 4);
21067 }
21068 } else {
21069 {
21070 UHI opval = tmp_tmp;
21071 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21072 written |= (1 << 12);
21073 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21074 }
21075 }
21076 }
21077 }
21078 }
21079 }
21080
21081 abuf->written = written;
21082 return vpc;
21083 #undef FLD
21084 }
21085
21086 /* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21087
21088 static SEM_PC
21089 SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21090 {
21091 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21093 int UNUSED written = 0;
21094 IADDR UNUSED pc = abuf->addr;
21095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21096
21097 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21098 {
21099 UHI tmp_argihi;
21100 UHI tmp_argilo;
21101 UHI tmp_argjhi;
21102 UHI tmp_argjlo;
21103 {
21104 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21105 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21106 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21107 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21108 }
21109 {
21110 DI tmp_tmp;
21111 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21112 if (GTDI (tmp_tmp, 65535)) {
21113 {
21114 {
21115 UHI opval = 65535;
21116 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21117 written |= (1 << 11);
21118 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21119 }
21120 frvbf_media_overflow (current_cpu, 8);
21121 }
21122 } else {
21123 if (LTDI (tmp_tmp, 0)) {
21124 {
21125 {
21126 UHI opval = 0;
21127 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21128 written |= (1 << 11);
21129 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21130 }
21131 frvbf_media_overflow (current_cpu, 8);
21132 }
21133 } else {
21134 {
21135 UHI opval = tmp_tmp;
21136 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21137 written |= (1 << 11);
21138 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21139 }
21140 }
21141 }
21142 }
21143 {
21144 DI tmp_tmp;
21145 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21146 if (GTDI (tmp_tmp, 65535)) {
21147 {
21148 {
21149 UHI opval = 65535;
21150 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21151 written |= (1 << 12);
21152 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21153 }
21154 frvbf_media_overflow (current_cpu, 4);
21155 }
21156 } else {
21157 if (LTDI (tmp_tmp, 0)) {
21158 {
21159 {
21160 UHI opval = 0;
21161 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21162 written |= (1 << 12);
21163 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21164 }
21165 frvbf_media_overflow (current_cpu, 4);
21166 }
21167 } else {
21168 {
21169 UHI opval = tmp_tmp;
21170 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21171 written |= (1 << 12);
21172 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21173 }
21174 }
21175 }
21176 }
21177 }
21178 }
21179
21180 abuf->written = written;
21181 return vpc;
21182 #undef FLD
21183 }
21184
21185 /* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21186
21187 static SEM_PC
21188 SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21189 {
21190 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21191 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21192 int UNUSED written = 0;
21193 IADDR UNUSED pc = abuf->addr;
21194 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21195
21196 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21197 {
21198 HI tmp_argihi;
21199 HI tmp_argilo;
21200 HI tmp_argjhi;
21201 HI tmp_argjlo;
21202 {
21203 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21204 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21205 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21206 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21207 }
21208 {
21209 DI tmp_tmp;
21210 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21211 if (GTDI (tmp_tmp, 32767)) {
21212 {
21213 {
21214 UHI opval = 32767;
21215 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21216 written |= (1 << 11);
21217 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21218 }
21219 frvbf_media_overflow (current_cpu, 8);
21220 }
21221 } else {
21222 if (LTDI (tmp_tmp, -32768)) {
21223 {
21224 {
21225 UHI opval = -32768;
21226 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21227 written |= (1 << 11);
21228 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21229 }
21230 frvbf_media_overflow (current_cpu, 8);
21231 }
21232 } else {
21233 {
21234 UHI opval = tmp_tmp;
21235 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21236 written |= (1 << 11);
21237 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21238 }
21239 }
21240 }
21241 }
21242 {
21243 DI tmp_tmp;
21244 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21245 if (GTDI (tmp_tmp, 32767)) {
21246 {
21247 {
21248 UHI opval = 32767;
21249 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21250 written |= (1 << 12);
21251 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21252 }
21253 frvbf_media_overflow (current_cpu, 4);
21254 }
21255 } else {
21256 if (LTDI (tmp_tmp, -32768)) {
21257 {
21258 {
21259 UHI opval = -32768;
21260 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21261 written |= (1 << 12);
21262 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21263 }
21264 frvbf_media_overflow (current_cpu, 4);
21265 }
21266 } else {
21267 {
21268 UHI opval = tmp_tmp;
21269 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21270 written |= (1 << 12);
21271 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21272 }
21273 }
21274 }
21275 }
21276 }
21277 }
21278
21279 abuf->written = written;
21280 return vpc;
21281 #undef FLD
21282 }
21283
21284 /* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21285
21286 static SEM_PC
21287 SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21288 {
21289 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21291 int UNUSED written = 0;
21292 IADDR UNUSED pc = abuf->addr;
21293 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21294
21295 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21296 {
21297 UHI tmp_argihi;
21298 UHI tmp_argilo;
21299 UHI tmp_argjhi;
21300 UHI tmp_argjlo;
21301 {
21302 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21303 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21304 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21305 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21306 }
21307 {
21308 DI tmp_tmp;
21309 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21310 if (GTDI (tmp_tmp, 65535)) {
21311 {
21312 {
21313 UHI opval = 65535;
21314 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21315 written |= (1 << 11);
21316 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21317 }
21318 frvbf_media_overflow (current_cpu, 8);
21319 }
21320 } else {
21321 if (LTDI (tmp_tmp, 0)) {
21322 {
21323 {
21324 UHI opval = 0;
21325 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21326 written |= (1 << 11);
21327 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21328 }
21329 frvbf_media_overflow (current_cpu, 8);
21330 }
21331 } else {
21332 {
21333 UHI opval = tmp_tmp;
21334 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21335 written |= (1 << 11);
21336 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21337 }
21338 }
21339 }
21340 }
21341 {
21342 DI tmp_tmp;
21343 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21344 if (GTDI (tmp_tmp, 65535)) {
21345 {
21346 {
21347 UHI opval = 65535;
21348 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21349 written |= (1 << 12);
21350 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21351 }
21352 frvbf_media_overflow (current_cpu, 4);
21353 }
21354 } else {
21355 if (LTDI (tmp_tmp, 0)) {
21356 {
21357 {
21358 UHI opval = 0;
21359 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21360 written |= (1 << 12);
21361 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21362 }
21363 frvbf_media_overflow (current_cpu, 4);
21364 }
21365 } else {
21366 {
21367 UHI opval = tmp_tmp;
21368 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21369 written |= (1 << 12);
21370 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21371 }
21372 }
21373 }
21374 }
21375 }
21376 }
21377
21378 abuf->written = written;
21379 return vpc;
21380 #undef FLD
21381 }
21382
21383 /* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21384
21385 static SEM_PC
21386 SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21387 {
21388 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21390 int UNUSED written = 0;
21391 IADDR UNUSED pc = abuf->addr;
21392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21393
21394 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21395 frvbf_media_register_not_aligned (current_cpu);
21396 } else {
21397 {
21398 HI tmp_argihi;
21399 HI tmp_argilo;
21400 HI tmp_argjhi;
21401 HI tmp_argjlo;
21402 {
21403 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21404 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21405 written |= (1 << 14);
21406 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21407 }
21408 {
21409 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21410 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21411 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21412 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21413 }
21414 {
21415 DI tmp_tmp;
21416 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21417 if (GTDI (tmp_tmp, 32767)) {
21418 {
21419 {
21420 UHI opval = 32767;
21421 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21422 written |= (1 << 15);
21423 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21424 }
21425 frvbf_media_overflow (current_cpu, 8);
21426 }
21427 } else {
21428 if (LTDI (tmp_tmp, -32768)) {
21429 {
21430 {
21431 UHI opval = -32768;
21432 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21433 written |= (1 << 15);
21434 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21435 }
21436 frvbf_media_overflow (current_cpu, 8);
21437 }
21438 } else {
21439 {
21440 UHI opval = tmp_tmp;
21441 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21442 written |= (1 << 15);
21443 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21444 }
21445 }
21446 }
21447 }
21448 {
21449 DI tmp_tmp;
21450 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21451 if (GTDI (tmp_tmp, 32767)) {
21452 {
21453 {
21454 UHI opval = 32767;
21455 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21456 written |= (1 << 17);
21457 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21458 }
21459 frvbf_media_overflow (current_cpu, 4);
21460 }
21461 } else {
21462 if (LTDI (tmp_tmp, -32768)) {
21463 {
21464 {
21465 UHI opval = -32768;
21466 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21467 written |= (1 << 17);
21468 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21469 }
21470 frvbf_media_overflow (current_cpu, 4);
21471 }
21472 } else {
21473 {
21474 UHI opval = tmp_tmp;
21475 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21476 written |= (1 << 17);
21477 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21478 }
21479 }
21480 }
21481 }
21482 {
21483 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21484 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21485 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21486 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21487 }
21488 {
21489 DI tmp_tmp;
21490 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21491 if (GTDI (tmp_tmp, 32767)) {
21492 {
21493 {
21494 UHI opval = 32767;
21495 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21496 written |= (1 << 16);
21497 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21498 }
21499 frvbf_media_overflow (current_cpu, 2);
21500 }
21501 } else {
21502 if (LTDI (tmp_tmp, -32768)) {
21503 {
21504 {
21505 UHI opval = -32768;
21506 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21507 written |= (1 << 16);
21508 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21509 }
21510 frvbf_media_overflow (current_cpu, 2);
21511 }
21512 } else {
21513 {
21514 UHI opval = tmp_tmp;
21515 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21516 written |= (1 << 16);
21517 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21518 }
21519 }
21520 }
21521 }
21522 {
21523 DI tmp_tmp;
21524 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21525 if (GTDI (tmp_tmp, 32767)) {
21526 {
21527 {
21528 UHI opval = 32767;
21529 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21530 written |= (1 << 18);
21531 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21532 }
21533 frvbf_media_overflow (current_cpu, 1);
21534 }
21535 } else {
21536 if (LTDI (tmp_tmp, -32768)) {
21537 {
21538 {
21539 UHI opval = -32768;
21540 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21541 written |= (1 << 18);
21542 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21543 }
21544 frvbf_media_overflow (current_cpu, 1);
21545 }
21546 } else {
21547 {
21548 UHI opval = tmp_tmp;
21549 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21550 written |= (1 << 18);
21551 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21552 }
21553 }
21554 }
21555 }
21556 }
21557 }
21558
21559 abuf->written = written;
21560 return vpc;
21561 #undef FLD
21562 }
21563
21564 /* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21565
21566 static SEM_PC
21567 SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21568 {
21569 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21571 int UNUSED written = 0;
21572 IADDR UNUSED pc = abuf->addr;
21573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21574
21575 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21576 frvbf_media_register_not_aligned (current_cpu);
21577 } else {
21578 {
21579 UHI tmp_argihi;
21580 UHI tmp_argilo;
21581 UHI tmp_argjhi;
21582 UHI tmp_argjlo;
21583 {
21584 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21585 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21586 written |= (1 << 14);
21587 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21588 }
21589 {
21590 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21591 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21592 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21593 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21594 }
21595 {
21596 DI tmp_tmp;
21597 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21598 if (GTDI (tmp_tmp, 65535)) {
21599 {
21600 {
21601 UHI opval = 65535;
21602 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21603 written |= (1 << 15);
21604 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21605 }
21606 frvbf_media_overflow (current_cpu, 8);
21607 }
21608 } else {
21609 if (LTDI (tmp_tmp, 0)) {
21610 {
21611 {
21612 UHI opval = 0;
21613 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21614 written |= (1 << 15);
21615 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21616 }
21617 frvbf_media_overflow (current_cpu, 8);
21618 }
21619 } else {
21620 {
21621 UHI opval = tmp_tmp;
21622 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21623 written |= (1 << 15);
21624 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21625 }
21626 }
21627 }
21628 }
21629 {
21630 DI tmp_tmp;
21631 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21632 if (GTDI (tmp_tmp, 65535)) {
21633 {
21634 {
21635 UHI opval = 65535;
21636 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21637 written |= (1 << 17);
21638 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21639 }
21640 frvbf_media_overflow (current_cpu, 4);
21641 }
21642 } else {
21643 if (LTDI (tmp_tmp, 0)) {
21644 {
21645 {
21646 UHI opval = 0;
21647 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21648 written |= (1 << 17);
21649 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21650 }
21651 frvbf_media_overflow (current_cpu, 4);
21652 }
21653 } else {
21654 {
21655 UHI opval = tmp_tmp;
21656 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21657 written |= (1 << 17);
21658 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21659 }
21660 }
21661 }
21662 }
21663 {
21664 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21665 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21666 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21667 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21668 }
21669 {
21670 DI tmp_tmp;
21671 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21672 if (GTDI (tmp_tmp, 65535)) {
21673 {
21674 {
21675 UHI opval = 65535;
21676 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21677 written |= (1 << 16);
21678 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21679 }
21680 frvbf_media_overflow (current_cpu, 2);
21681 }
21682 } else {
21683 if (LTDI (tmp_tmp, 0)) {
21684 {
21685 {
21686 UHI opval = 0;
21687 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21688 written |= (1 << 16);
21689 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21690 }
21691 frvbf_media_overflow (current_cpu, 2);
21692 }
21693 } else {
21694 {
21695 UHI opval = tmp_tmp;
21696 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21697 written |= (1 << 16);
21698 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21699 }
21700 }
21701 }
21702 }
21703 {
21704 DI tmp_tmp;
21705 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21706 if (GTDI (tmp_tmp, 65535)) {
21707 {
21708 {
21709 UHI opval = 65535;
21710 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21711 written |= (1 << 18);
21712 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21713 }
21714 frvbf_media_overflow (current_cpu, 1);
21715 }
21716 } else {
21717 if (LTDI (tmp_tmp, 0)) {
21718 {
21719 {
21720 UHI opval = 0;
21721 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21722 written |= (1 << 18);
21723 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21724 }
21725 frvbf_media_overflow (current_cpu, 1);
21726 }
21727 } else {
21728 {
21729 UHI opval = tmp_tmp;
21730 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21731 written |= (1 << 18);
21732 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21733 }
21734 }
21735 }
21736 }
21737 }
21738 }
21739
21740 abuf->written = written;
21741 return vpc;
21742 #undef FLD
21743 }
21744
21745 /* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21746
21747 static SEM_PC
21748 SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21749 {
21750 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21752 int UNUSED written = 0;
21753 IADDR UNUSED pc = abuf->addr;
21754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21755
21756 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21757 frvbf_media_register_not_aligned (current_cpu);
21758 } else {
21759 {
21760 HI tmp_argihi;
21761 HI tmp_argilo;
21762 HI tmp_argjhi;
21763 HI tmp_argjlo;
21764 {
21765 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21766 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21767 written |= (1 << 14);
21768 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21769 }
21770 {
21771 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21772 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21773 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21774 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21775 }
21776 {
21777 DI tmp_tmp;
21778 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21779 if (GTDI (tmp_tmp, 32767)) {
21780 {
21781 {
21782 UHI opval = 32767;
21783 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21784 written |= (1 << 15);
21785 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21786 }
21787 frvbf_media_overflow (current_cpu, 8);
21788 }
21789 } else {
21790 if (LTDI (tmp_tmp, -32768)) {
21791 {
21792 {
21793 UHI opval = -32768;
21794 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21795 written |= (1 << 15);
21796 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21797 }
21798 frvbf_media_overflow (current_cpu, 8);
21799 }
21800 } else {
21801 {
21802 UHI opval = tmp_tmp;
21803 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21804 written |= (1 << 15);
21805 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21806 }
21807 }
21808 }
21809 }
21810 {
21811 DI tmp_tmp;
21812 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21813 if (GTDI (tmp_tmp, 32767)) {
21814 {
21815 {
21816 UHI opval = 32767;
21817 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21818 written |= (1 << 17);
21819 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21820 }
21821 frvbf_media_overflow (current_cpu, 4);
21822 }
21823 } else {
21824 if (LTDI (tmp_tmp, -32768)) {
21825 {
21826 {
21827 UHI opval = -32768;
21828 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21829 written |= (1 << 17);
21830 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21831 }
21832 frvbf_media_overflow (current_cpu, 4);
21833 }
21834 } else {
21835 {
21836 UHI opval = tmp_tmp;
21837 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21838 written |= (1 << 17);
21839 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21840 }
21841 }
21842 }
21843 }
21844 {
21845 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21846 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21847 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21848 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21849 }
21850 {
21851 DI tmp_tmp;
21852 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21853 if (GTDI (tmp_tmp, 32767)) {
21854 {
21855 {
21856 UHI opval = 32767;
21857 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21858 written |= (1 << 16);
21859 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21860 }
21861 frvbf_media_overflow (current_cpu, 2);
21862 }
21863 } else {
21864 if (LTDI (tmp_tmp, -32768)) {
21865 {
21866 {
21867 UHI opval = -32768;
21868 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21869 written |= (1 << 16);
21870 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21871 }
21872 frvbf_media_overflow (current_cpu, 2);
21873 }
21874 } else {
21875 {
21876 UHI opval = tmp_tmp;
21877 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21878 written |= (1 << 16);
21879 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21880 }
21881 }
21882 }
21883 }
21884 {
21885 DI tmp_tmp;
21886 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21887 if (GTDI (tmp_tmp, 32767)) {
21888 {
21889 {
21890 UHI opval = 32767;
21891 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21892 written |= (1 << 18);
21893 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21894 }
21895 frvbf_media_overflow (current_cpu, 1);
21896 }
21897 } else {
21898 if (LTDI (tmp_tmp, -32768)) {
21899 {
21900 {
21901 UHI opval = -32768;
21902 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21903 written |= (1 << 18);
21904 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21905 }
21906 frvbf_media_overflow (current_cpu, 1);
21907 }
21908 } else {
21909 {
21910 UHI opval = tmp_tmp;
21911 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21912 written |= (1 << 18);
21913 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21914 }
21915 }
21916 }
21917 }
21918 }
21919 }
21920
21921 abuf->written = written;
21922 return vpc;
21923 #undef FLD
21924 }
21925
21926 /* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21927
21928 static SEM_PC
21929 SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21930 {
21931 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21933 int UNUSED written = 0;
21934 IADDR UNUSED pc = abuf->addr;
21935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21936
21937 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21938 frvbf_media_register_not_aligned (current_cpu);
21939 } else {
21940 {
21941 UHI tmp_argihi;
21942 UHI tmp_argilo;
21943 UHI tmp_argjhi;
21944 UHI tmp_argjlo;
21945 {
21946 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21947 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21948 written |= (1 << 14);
21949 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21950 }
21951 {
21952 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21953 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21954 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21955 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21956 }
21957 {
21958 DI tmp_tmp;
21959 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21960 if (GTDI (tmp_tmp, 65535)) {
21961 {
21962 {
21963 UHI opval = 65535;
21964 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21965 written |= (1 << 15);
21966 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21967 }
21968 frvbf_media_overflow (current_cpu, 8);
21969 }
21970 } else {
21971 if (LTDI (tmp_tmp, 0)) {
21972 {
21973 {
21974 UHI opval = 0;
21975 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21976 written |= (1 << 15);
21977 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21978 }
21979 frvbf_media_overflow (current_cpu, 8);
21980 }
21981 } else {
21982 {
21983 UHI opval = tmp_tmp;
21984 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21985 written |= (1 << 15);
21986 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21987 }
21988 }
21989 }
21990 }
21991 {
21992 DI tmp_tmp;
21993 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21994 if (GTDI (tmp_tmp, 65535)) {
21995 {
21996 {
21997 UHI opval = 65535;
21998 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21999 written |= (1 << 17);
22000 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22001 }
22002 frvbf_media_overflow (current_cpu, 4);
22003 }
22004 } else {
22005 if (LTDI (tmp_tmp, 0)) {
22006 {
22007 {
22008 UHI opval = 0;
22009 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22010 written |= (1 << 17);
22011 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22012 }
22013 frvbf_media_overflow (current_cpu, 4);
22014 }
22015 } else {
22016 {
22017 UHI opval = tmp_tmp;
22018 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22019 written |= (1 << 17);
22020 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22021 }
22022 }
22023 }
22024 }
22025 {
22026 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22027 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22028 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22029 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22030 }
22031 {
22032 DI tmp_tmp;
22033 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22034 if (GTDI (tmp_tmp, 65535)) {
22035 {
22036 {
22037 UHI opval = 65535;
22038 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22039 written |= (1 << 16);
22040 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22041 }
22042 frvbf_media_overflow (current_cpu, 2);
22043 }
22044 } else {
22045 if (LTDI (tmp_tmp, 0)) {
22046 {
22047 {
22048 UHI opval = 0;
22049 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22050 written |= (1 << 16);
22051 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22052 }
22053 frvbf_media_overflow (current_cpu, 2);
22054 }
22055 } else {
22056 {
22057 UHI opval = tmp_tmp;
22058 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22059 written |= (1 << 16);
22060 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22061 }
22062 }
22063 }
22064 }
22065 {
22066 DI tmp_tmp;
22067 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22068 if (GTDI (tmp_tmp, 65535)) {
22069 {
22070 {
22071 UHI opval = 65535;
22072 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22073 written |= (1 << 18);
22074 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22075 }
22076 frvbf_media_overflow (current_cpu, 1);
22077 }
22078 } else {
22079 if (LTDI (tmp_tmp, 0)) {
22080 {
22081 {
22082 UHI opval = 0;
22083 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22084 written |= (1 << 18);
22085 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22086 }
22087 frvbf_media_overflow (current_cpu, 1);
22088 }
22089 } else {
22090 {
22091 UHI opval = tmp_tmp;
22092 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22093 written |= (1 << 18);
22094 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22095 }
22096 }
22097 }
22098 }
22099 }
22100 }
22101
22102 abuf->written = written;
22103 return vpc;
22104 #undef FLD
22105 }
22106
22107 /* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22108
22109 static SEM_PC
22110 SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22111 {
22112 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22113 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22114 int UNUSED written = 0;
22115 IADDR UNUSED pc = abuf->addr;
22116 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22117
22118 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22119 frvbf_media_register_not_aligned (current_cpu);
22120 } else {
22121 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22122 {
22123 HI tmp_argihi;
22124 HI tmp_argilo;
22125 HI tmp_argjhi;
22126 HI tmp_argjlo;
22127 {
22128 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22129 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22130 written |= (1 << 16);
22131 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22132 }
22133 {
22134 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22135 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22136 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22137 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22138 }
22139 {
22140 DI tmp_tmp;
22141 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22142 if (GTDI (tmp_tmp, 32767)) {
22143 {
22144 {
22145 UHI opval = 32767;
22146 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22147 written |= (1 << 17);
22148 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22149 }
22150 frvbf_media_overflow (current_cpu, 8);
22151 }
22152 } else {
22153 if (LTDI (tmp_tmp, -32768)) {
22154 {
22155 {
22156 UHI opval = -32768;
22157 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22158 written |= (1 << 17);
22159 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22160 }
22161 frvbf_media_overflow (current_cpu, 8);
22162 }
22163 } else {
22164 {
22165 UHI opval = tmp_tmp;
22166 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22167 written |= (1 << 17);
22168 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22169 }
22170 }
22171 }
22172 }
22173 {
22174 DI tmp_tmp;
22175 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22176 if (GTDI (tmp_tmp, 32767)) {
22177 {
22178 {
22179 UHI opval = 32767;
22180 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22181 written |= (1 << 19);
22182 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22183 }
22184 frvbf_media_overflow (current_cpu, 4);
22185 }
22186 } else {
22187 if (LTDI (tmp_tmp, -32768)) {
22188 {
22189 {
22190 UHI opval = -32768;
22191 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22192 written |= (1 << 19);
22193 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22194 }
22195 frvbf_media_overflow (current_cpu, 4);
22196 }
22197 } else {
22198 {
22199 UHI opval = tmp_tmp;
22200 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22201 written |= (1 << 19);
22202 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22203 }
22204 }
22205 }
22206 }
22207 {
22208 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22209 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22210 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22211 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22212 }
22213 {
22214 DI tmp_tmp;
22215 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22216 if (GTDI (tmp_tmp, 32767)) {
22217 {
22218 {
22219 UHI opval = 32767;
22220 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22221 written |= (1 << 18);
22222 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22223 }
22224 frvbf_media_overflow (current_cpu, 2);
22225 }
22226 } else {
22227 if (LTDI (tmp_tmp, -32768)) {
22228 {
22229 {
22230 UHI opval = -32768;
22231 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22232 written |= (1 << 18);
22233 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22234 }
22235 frvbf_media_overflow (current_cpu, 2);
22236 }
22237 } else {
22238 {
22239 UHI opval = tmp_tmp;
22240 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22241 written |= (1 << 18);
22242 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22243 }
22244 }
22245 }
22246 }
22247 {
22248 DI tmp_tmp;
22249 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22250 if (GTDI (tmp_tmp, 32767)) {
22251 {
22252 {
22253 UHI opval = 32767;
22254 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22255 written |= (1 << 20);
22256 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22257 }
22258 frvbf_media_overflow (current_cpu, 1);
22259 }
22260 } else {
22261 if (LTDI (tmp_tmp, -32768)) {
22262 {
22263 {
22264 UHI opval = -32768;
22265 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22266 written |= (1 << 20);
22267 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22268 }
22269 frvbf_media_overflow (current_cpu, 1);
22270 }
22271 } else {
22272 {
22273 UHI opval = tmp_tmp;
22274 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22275 written |= (1 << 20);
22276 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22277 }
22278 }
22279 }
22280 }
22281 }
22282 }
22283 }
22284
22285 abuf->written = written;
22286 return vpc;
22287 #undef FLD
22288 }
22289
22290 /* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22291
22292 static SEM_PC
22293 SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22294 {
22295 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22297 int UNUSED written = 0;
22298 IADDR UNUSED pc = abuf->addr;
22299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22300
22301 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22302 frvbf_media_register_not_aligned (current_cpu);
22303 } else {
22304 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22305 {
22306 UHI tmp_argihi;
22307 UHI tmp_argilo;
22308 UHI tmp_argjhi;
22309 UHI tmp_argjlo;
22310 {
22311 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22312 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22313 written |= (1 << 16);
22314 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22315 }
22316 {
22317 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22318 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22319 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22320 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22321 }
22322 {
22323 DI tmp_tmp;
22324 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22325 if (GTDI (tmp_tmp, 65535)) {
22326 {
22327 {
22328 UHI opval = 65535;
22329 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22330 written |= (1 << 17);
22331 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22332 }
22333 frvbf_media_overflow (current_cpu, 8);
22334 }
22335 } else {
22336 if (LTDI (tmp_tmp, 0)) {
22337 {
22338 {
22339 UHI opval = 0;
22340 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22341 written |= (1 << 17);
22342 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22343 }
22344 frvbf_media_overflow (current_cpu, 8);
22345 }
22346 } else {
22347 {
22348 UHI opval = tmp_tmp;
22349 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22350 written |= (1 << 17);
22351 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22352 }
22353 }
22354 }
22355 }
22356 {
22357 DI tmp_tmp;
22358 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22359 if (GTDI (tmp_tmp, 65535)) {
22360 {
22361 {
22362 UHI opval = 65535;
22363 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22364 written |= (1 << 19);
22365 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22366 }
22367 frvbf_media_overflow (current_cpu, 4);
22368 }
22369 } else {
22370 if (LTDI (tmp_tmp, 0)) {
22371 {
22372 {
22373 UHI opval = 0;
22374 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22375 written |= (1 << 19);
22376 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22377 }
22378 frvbf_media_overflow (current_cpu, 4);
22379 }
22380 } else {
22381 {
22382 UHI opval = tmp_tmp;
22383 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22384 written |= (1 << 19);
22385 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22386 }
22387 }
22388 }
22389 }
22390 {
22391 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22392 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22393 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22394 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22395 }
22396 {
22397 DI tmp_tmp;
22398 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22399 if (GTDI (tmp_tmp, 65535)) {
22400 {
22401 {
22402 UHI opval = 65535;
22403 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22404 written |= (1 << 18);
22405 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22406 }
22407 frvbf_media_overflow (current_cpu, 2);
22408 }
22409 } else {
22410 if (LTDI (tmp_tmp, 0)) {
22411 {
22412 {
22413 UHI opval = 0;
22414 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22415 written |= (1 << 18);
22416 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22417 }
22418 frvbf_media_overflow (current_cpu, 2);
22419 }
22420 } else {
22421 {
22422 UHI opval = tmp_tmp;
22423 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22424 written |= (1 << 18);
22425 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22426 }
22427 }
22428 }
22429 }
22430 {
22431 DI tmp_tmp;
22432 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22433 if (GTDI (tmp_tmp, 65535)) {
22434 {
22435 {
22436 UHI opval = 65535;
22437 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22438 written |= (1 << 20);
22439 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22440 }
22441 frvbf_media_overflow (current_cpu, 1);
22442 }
22443 } else {
22444 if (LTDI (tmp_tmp, 0)) {
22445 {
22446 {
22447 UHI opval = 0;
22448 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22449 written |= (1 << 20);
22450 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22451 }
22452 frvbf_media_overflow (current_cpu, 1);
22453 }
22454 } else {
22455 {
22456 UHI opval = tmp_tmp;
22457 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22458 written |= (1 << 20);
22459 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22460 }
22461 }
22462 }
22463 }
22464 }
22465 }
22466 }
22467
22468 abuf->written = written;
22469 return vpc;
22470 #undef FLD
22471 }
22472
22473 /* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22474
22475 static SEM_PC
22476 SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22477 {
22478 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22479 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22480 int UNUSED written = 0;
22481 IADDR UNUSED pc = abuf->addr;
22482 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22483
22484 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22485 frvbf_media_register_not_aligned (current_cpu);
22486 } else {
22487 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22488 {
22489 HI tmp_argihi;
22490 HI tmp_argilo;
22491 HI tmp_argjhi;
22492 HI tmp_argjlo;
22493 {
22494 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22495 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22496 written |= (1 << 16);
22497 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22498 }
22499 {
22500 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22501 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22502 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22503 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22504 }
22505 {
22506 DI tmp_tmp;
22507 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22508 if (GTDI (tmp_tmp, 32767)) {
22509 {
22510 {
22511 UHI opval = 32767;
22512 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22513 written |= (1 << 17);
22514 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22515 }
22516 frvbf_media_overflow (current_cpu, 8);
22517 }
22518 } else {
22519 if (LTDI (tmp_tmp, -32768)) {
22520 {
22521 {
22522 UHI opval = -32768;
22523 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22524 written |= (1 << 17);
22525 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22526 }
22527 frvbf_media_overflow (current_cpu, 8);
22528 }
22529 } else {
22530 {
22531 UHI opval = tmp_tmp;
22532 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22533 written |= (1 << 17);
22534 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22535 }
22536 }
22537 }
22538 }
22539 {
22540 DI tmp_tmp;
22541 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22542 if (GTDI (tmp_tmp, 32767)) {
22543 {
22544 {
22545 UHI opval = 32767;
22546 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22547 written |= (1 << 19);
22548 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22549 }
22550 frvbf_media_overflow (current_cpu, 4);
22551 }
22552 } else {
22553 if (LTDI (tmp_tmp, -32768)) {
22554 {
22555 {
22556 UHI opval = -32768;
22557 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22558 written |= (1 << 19);
22559 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22560 }
22561 frvbf_media_overflow (current_cpu, 4);
22562 }
22563 } else {
22564 {
22565 UHI opval = tmp_tmp;
22566 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22567 written |= (1 << 19);
22568 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22569 }
22570 }
22571 }
22572 }
22573 {
22574 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22575 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22576 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22577 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22578 }
22579 {
22580 DI tmp_tmp;
22581 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22582 if (GTDI (tmp_tmp, 32767)) {
22583 {
22584 {
22585 UHI opval = 32767;
22586 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22587 written |= (1 << 18);
22588 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22589 }
22590 frvbf_media_overflow (current_cpu, 2);
22591 }
22592 } else {
22593 if (LTDI (tmp_tmp, -32768)) {
22594 {
22595 {
22596 UHI opval = -32768;
22597 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22598 written |= (1 << 18);
22599 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22600 }
22601 frvbf_media_overflow (current_cpu, 2);
22602 }
22603 } else {
22604 {
22605 UHI opval = tmp_tmp;
22606 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22607 written |= (1 << 18);
22608 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22609 }
22610 }
22611 }
22612 }
22613 {
22614 DI tmp_tmp;
22615 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22616 if (GTDI (tmp_tmp, 32767)) {
22617 {
22618 {
22619 UHI opval = 32767;
22620 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22621 written |= (1 << 20);
22622 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22623 }
22624 frvbf_media_overflow (current_cpu, 1);
22625 }
22626 } else {
22627 if (LTDI (tmp_tmp, -32768)) {
22628 {
22629 {
22630 UHI opval = -32768;
22631 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22632 written |= (1 << 20);
22633 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22634 }
22635 frvbf_media_overflow (current_cpu, 1);
22636 }
22637 } else {
22638 {
22639 UHI opval = tmp_tmp;
22640 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22641 written |= (1 << 20);
22642 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22643 }
22644 }
22645 }
22646 }
22647 }
22648 }
22649 }
22650
22651 abuf->written = written;
22652 return vpc;
22653 #undef FLD
22654 }
22655
22656 /* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22657
22658 static SEM_PC
22659 SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22660 {
22661 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22663 int UNUSED written = 0;
22664 IADDR UNUSED pc = abuf->addr;
22665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22666
22667 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22668 frvbf_media_register_not_aligned (current_cpu);
22669 } else {
22670 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22671 {
22672 UHI tmp_argihi;
22673 UHI tmp_argilo;
22674 UHI tmp_argjhi;
22675 UHI tmp_argjlo;
22676 {
22677 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22678 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22679 written |= (1 << 16);
22680 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22681 }
22682 {
22683 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22684 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22685 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22686 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22687 }
22688 {
22689 DI tmp_tmp;
22690 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22691 if (GTDI (tmp_tmp, 65535)) {
22692 {
22693 {
22694 UHI opval = 65535;
22695 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22696 written |= (1 << 17);
22697 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22698 }
22699 frvbf_media_overflow (current_cpu, 8);
22700 }
22701 } else {
22702 if (LTDI (tmp_tmp, 0)) {
22703 {
22704 {
22705 UHI opval = 0;
22706 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22707 written |= (1 << 17);
22708 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22709 }
22710 frvbf_media_overflow (current_cpu, 8);
22711 }
22712 } else {
22713 {
22714 UHI opval = tmp_tmp;
22715 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22716 written |= (1 << 17);
22717 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22718 }
22719 }
22720 }
22721 }
22722 {
22723 DI tmp_tmp;
22724 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22725 if (GTDI (tmp_tmp, 65535)) {
22726 {
22727 {
22728 UHI opval = 65535;
22729 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22730 written |= (1 << 19);
22731 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22732 }
22733 frvbf_media_overflow (current_cpu, 4);
22734 }
22735 } else {
22736 if (LTDI (tmp_tmp, 0)) {
22737 {
22738 {
22739 UHI opval = 0;
22740 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22741 written |= (1 << 19);
22742 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22743 }
22744 frvbf_media_overflow (current_cpu, 4);
22745 }
22746 } else {
22747 {
22748 UHI opval = tmp_tmp;
22749 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22750 written |= (1 << 19);
22751 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22752 }
22753 }
22754 }
22755 }
22756 {
22757 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22758 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22759 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22760 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22761 }
22762 {
22763 DI tmp_tmp;
22764 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22765 if (GTDI (tmp_tmp, 65535)) {
22766 {
22767 {
22768 UHI opval = 65535;
22769 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22770 written |= (1 << 18);
22771 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22772 }
22773 frvbf_media_overflow (current_cpu, 2);
22774 }
22775 } else {
22776 if (LTDI (tmp_tmp, 0)) {
22777 {
22778 {
22779 UHI opval = 0;
22780 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22781 written |= (1 << 18);
22782 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22783 }
22784 frvbf_media_overflow (current_cpu, 2);
22785 }
22786 } else {
22787 {
22788 UHI opval = tmp_tmp;
22789 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22790 written |= (1 << 18);
22791 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22792 }
22793 }
22794 }
22795 }
22796 {
22797 DI tmp_tmp;
22798 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22799 if (GTDI (tmp_tmp, 65535)) {
22800 {
22801 {
22802 UHI opval = 65535;
22803 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22804 written |= (1 << 20);
22805 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22806 }
22807 frvbf_media_overflow (current_cpu, 1);
22808 }
22809 } else {
22810 if (LTDI (tmp_tmp, 0)) {
22811 {
22812 {
22813 UHI opval = 0;
22814 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22815 written |= (1 << 20);
22816 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22817 }
22818 frvbf_media_overflow (current_cpu, 1);
22819 }
22820 } else {
22821 {
22822 UHI opval = tmp_tmp;
22823 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22824 written |= (1 << 20);
22825 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22826 }
22827 }
22828 }
22829 }
22830 }
22831 }
22832 }
22833
22834 abuf->written = written;
22835 return vpc;
22836 #undef FLD
22837 }
22838
22839 /* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22840
22841 static SEM_PC
22842 SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22843 {
22844 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22845 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22846 int UNUSED written = 0;
22847 IADDR UNUSED pc = abuf->addr;
22848 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22849
22850 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22851 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22852 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22853 frvbf_media_acc_not_aligned (current_cpu);
22854 } else {
22855 {
22856 DI tmp_tmp;
22857 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22858 if (GTDI (tmp_tmp, 549755813887)) {
22859 {
22860 {
22861 DI opval = 549755813887;
22862 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22863 written |= (1 << 4);
22864 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22865 }
22866 frvbf_media_overflow (current_cpu, 8);
22867 }
22868 } else {
22869 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22870 {
22871 {
22872 DI opval = INVDI (549755813887);
22873 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22874 written |= (1 << 4);
22875 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22876 }
22877 frvbf_media_overflow (current_cpu, 8);
22878 }
22879 } else {
22880 {
22881 DI opval = tmp_tmp;
22882 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22883 written |= (1 << 4);
22884 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22885 }
22886 }
22887 }
22888 }
22889 }
22890 }
22891 }
22892
22893 abuf->written = written;
22894 return vpc;
22895 #undef FLD
22896 }
22897
22898 /* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22899
22900 static SEM_PC
22901 SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22902 {
22903 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22904 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22905 int UNUSED written = 0;
22906 IADDR UNUSED pc = abuf->addr;
22907 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22908
22909 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22910 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22911 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22912 frvbf_media_acc_not_aligned (current_cpu);
22913 } else {
22914 {
22915 DI tmp_tmp;
22916 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22917 if (GTDI (tmp_tmp, 549755813887)) {
22918 {
22919 {
22920 DI opval = 549755813887;
22921 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22922 written |= (1 << 4);
22923 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22924 }
22925 frvbf_media_overflow (current_cpu, 8);
22926 }
22927 } else {
22928 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22929 {
22930 {
22931 DI opval = INVDI (549755813887);
22932 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22933 written |= (1 << 4);
22934 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22935 }
22936 frvbf_media_overflow (current_cpu, 8);
22937 }
22938 } else {
22939 {
22940 DI opval = tmp_tmp;
22941 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22942 written |= (1 << 4);
22943 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22944 }
22945 }
22946 }
22947 }
22948 }
22949 }
22950 }
22951
22952 abuf->written = written;
22953 return vpc;
22954 #undef FLD
22955 }
22956
22957 /* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
22958
22959 static SEM_PC
22960 SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22961 {
22962 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22963 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22964 int UNUSED written = 0;
22965 IADDR UNUSED pc = abuf->addr;
22966 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22967
22968 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22969 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22970 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
22971 frvbf_media_acc_not_aligned (current_cpu);
22972 } else {
22973 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
22974 frvbf_media_acc_not_aligned (current_cpu);
22975 } else {
22976 {
22977 {
22978 DI tmp_tmp;
22979 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22980 if (GTDI (tmp_tmp, 549755813887)) {
22981 {
22982 {
22983 DI opval = 549755813887;
22984 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22985 written |= (1 << 6);
22986 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22987 }
22988 frvbf_media_overflow (current_cpu, 8);
22989 }
22990 } else {
22991 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22992 {
22993 {
22994 DI opval = INVDI (549755813887);
22995 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22996 written |= (1 << 6);
22997 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22998 }
22999 frvbf_media_overflow (current_cpu, 8);
23000 }
23001 } else {
23002 {
23003 DI opval = tmp_tmp;
23004 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23005 written |= (1 << 6);
23006 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23007 }
23008 }
23009 }
23010 }
23011 {
23012 DI tmp_tmp;
23013 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23014 if (GTDI (tmp_tmp, 549755813887)) {
23015 {
23016 {
23017 DI opval = 549755813887;
23018 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23019 written |= (1 << 7);
23020 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23021 }
23022 frvbf_media_overflow (current_cpu, 4);
23023 }
23024 } else {
23025 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23026 {
23027 {
23028 DI opval = INVDI (549755813887);
23029 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23030 written |= (1 << 7);
23031 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23032 }
23033 frvbf_media_overflow (current_cpu, 4);
23034 }
23035 } else {
23036 {
23037 DI opval = tmp_tmp;
23038 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23039 written |= (1 << 7);
23040 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23041 }
23042 }
23043 }
23044 }
23045 }
23046 }
23047 }
23048 }
23049 }
23050
23051 abuf->written = written;
23052 return vpc;
23053 #undef FLD
23054 }
23055
23056 /* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23057
23058 static SEM_PC
23059 SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23060 {
23061 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23063 int UNUSED written = 0;
23064 IADDR UNUSED pc = abuf->addr;
23065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23066
23067 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23068 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23069 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23070 frvbf_media_acc_not_aligned (current_cpu);
23071 } else {
23072 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23073 frvbf_media_acc_not_aligned (current_cpu);
23074 } else {
23075 {
23076 {
23077 DI tmp_tmp;
23078 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23079 if (GTDI (tmp_tmp, 549755813887)) {
23080 {
23081 {
23082 DI opval = 549755813887;
23083 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23084 written |= (1 << 6);
23085 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23086 }
23087 frvbf_media_overflow (current_cpu, 8);
23088 }
23089 } else {
23090 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23091 {
23092 {
23093 DI opval = INVDI (549755813887);
23094 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23095 written |= (1 << 6);
23096 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23097 }
23098 frvbf_media_overflow (current_cpu, 8);
23099 }
23100 } else {
23101 {
23102 DI opval = tmp_tmp;
23103 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23104 written |= (1 << 6);
23105 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23106 }
23107 }
23108 }
23109 }
23110 {
23111 DI tmp_tmp;
23112 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23113 if (GTDI (tmp_tmp, 549755813887)) {
23114 {
23115 {
23116 DI opval = 549755813887;
23117 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23118 written |= (1 << 7);
23119 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23120 }
23121 frvbf_media_overflow (current_cpu, 4);
23122 }
23123 } else {
23124 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23125 {
23126 {
23127 DI opval = INVDI (549755813887);
23128 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23129 written |= (1 << 7);
23130 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23131 }
23132 frvbf_media_overflow (current_cpu, 4);
23133 }
23134 } else {
23135 {
23136 DI opval = tmp_tmp;
23137 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23138 written |= (1 << 7);
23139 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23140 }
23141 }
23142 }
23143 }
23144 }
23145 }
23146 }
23147 }
23148 }
23149
23150 abuf->written = written;
23151 return vpc;
23152 #undef FLD
23153 }
23154
23155 /* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23156
23157 static SEM_PC
23158 SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23159 {
23160 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23162 int UNUSED written = 0;
23163 IADDR UNUSED pc = abuf->addr;
23164 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23165
23166 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23167 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23168 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23169 frvbf_media_acc_not_aligned (current_cpu);
23170 } else {
23171 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23172 frvbf_media_acc_not_aligned (current_cpu);
23173 } else {
23174 {
23175 {
23176 DI tmp_tmp;
23177 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
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), opval);
23183 written |= (1 << 4);
23184 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23185 }
23186 frvbf_media_overflow (current_cpu, 8);
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), opval);
23194 written |= (1 << 4);
23195 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23196 }
23197 frvbf_media_overflow (current_cpu, 8);
23198 }
23199 } else {
23200 {
23201 DI opval = tmp_tmp;
23202 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23203 written |= (1 << 4);
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)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
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)) + (1)), opval);
23217 written |= (1 << 5);
23218 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23219 }
23220 frvbf_media_overflow (current_cpu, 4);
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)) + (1)), opval);
23228 written |= (1 << 5);
23229 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23230 }
23231 frvbf_media_overflow (current_cpu, 4);
23232 }
23233 } else {
23234 {
23235 DI opval = tmp_tmp;
23236 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23237 written |= (1 << 5);
23238 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23239 }
23240 }
23241 }
23242 }
23243 }
23244 }
23245 }
23246 }
23247 }
23248
23249 abuf->written = written;
23250 return vpc;
23251 #undef FLD
23252 }
23253
23254 /* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23255
23256 static SEM_PC
23257 SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23258 {
23259 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23260 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23261 int UNUSED written = 0;
23262 IADDR UNUSED pc = abuf->addr;
23263 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23264
23265 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23266 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23267 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23268 frvbf_media_acc_not_aligned (current_cpu);
23269 } else {
23270 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23271 frvbf_media_acc_not_aligned (current_cpu);
23272 } else {
23273 {
23274 {
23275 DI tmp_tmp;
23276 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23277 if (GTDI (tmp_tmp, 549755813887)) {
23278 {
23279 {
23280 DI opval = 549755813887;
23281 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23282 written |= (1 << 6);
23283 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23284 }
23285 frvbf_media_overflow (current_cpu, 8);
23286 }
23287 } else {
23288 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23289 {
23290 {
23291 DI opval = INVDI (549755813887);
23292 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23293 written |= (1 << 6);
23294 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23295 }
23296 frvbf_media_overflow (current_cpu, 8);
23297 }
23298 } else {
23299 {
23300 DI opval = tmp_tmp;
23301 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23302 written |= (1 << 6);
23303 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23304 }
23305 }
23306 }
23307 }
23308 {
23309 DI tmp_tmp;
23310 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23311 if (GTDI (tmp_tmp, 549755813887)) {
23312 {
23313 {
23314 DI opval = 549755813887;
23315 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23316 written |= (1 << 7);
23317 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23318 }
23319 frvbf_media_overflow (current_cpu, 4);
23320 }
23321 } else {
23322 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23323 {
23324 {
23325 DI opval = INVDI (549755813887);
23326 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23327 written |= (1 << 7);
23328 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23329 }
23330 frvbf_media_overflow (current_cpu, 4);
23331 }
23332 } else {
23333 {
23334 DI opval = tmp_tmp;
23335 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23336 written |= (1 << 7);
23337 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23338 }
23339 }
23340 }
23341 }
23342 {
23343 DI tmp_tmp;
23344 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23345 if (GTDI (tmp_tmp, 549755813887)) {
23346 {
23347 {
23348 DI opval = 549755813887;
23349 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23350 written |= (1 << 8);
23351 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23352 }
23353 frvbf_media_overflow (current_cpu, 2);
23354 }
23355 } else {
23356 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23357 {
23358 {
23359 DI opval = INVDI (549755813887);
23360 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23361 written |= (1 << 8);
23362 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23363 }
23364 frvbf_media_overflow (current_cpu, 2);
23365 }
23366 } else {
23367 {
23368 DI opval = tmp_tmp;
23369 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23370 written |= (1 << 8);
23371 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23372 }
23373 }
23374 }
23375 }
23376 {
23377 DI tmp_tmp;
23378 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23379 if (GTDI (tmp_tmp, 549755813887)) {
23380 {
23381 {
23382 DI opval = 549755813887;
23383 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23384 written |= (1 << 9);
23385 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23386 }
23387 frvbf_media_overflow (current_cpu, 1);
23388 }
23389 } else {
23390 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23391 {
23392 {
23393 DI opval = INVDI (549755813887);
23394 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23395 written |= (1 << 9);
23396 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23397 }
23398 frvbf_media_overflow (current_cpu, 1);
23399 }
23400 } else {
23401 {
23402 DI opval = tmp_tmp;
23403 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23404 written |= (1 << 9);
23405 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23406 }
23407 }
23408 }
23409 }
23410 }
23411 }
23412 }
23413 }
23414 }
23415
23416 abuf->written = written;
23417 return vpc;
23418 #undef FLD
23419 }
23420
23421 /* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23422
23423 static SEM_PC
23424 SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23425 {
23426 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23427 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23428 int UNUSED written = 0;
23429 IADDR UNUSED pc = abuf->addr;
23430 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23431
23432 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23433 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23434 frvbf_media_acc_not_aligned (current_cpu);
23435 } else {
23436 {
23437 HI tmp_argihi;
23438 HI tmp_argilo;
23439 HI tmp_argjhi;
23440 HI tmp_argjlo;
23441 {
23442 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23443 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23444 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23445 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23446 }
23447 {
23448 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23449 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23450 written |= (1 << 9);
23451 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23452 }
23453 {
23454 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23455 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23456 written |= (1 << 10);
23457 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23458 }
23459 }
23460 }
23461 }
23462
23463 abuf->written = written;
23464 return vpc;
23465 #undef FLD
23466 }
23467
23468 /* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23469
23470 static SEM_PC
23471 SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23472 {
23473 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23475 int UNUSED written = 0;
23476 IADDR UNUSED pc = abuf->addr;
23477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23478
23479 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23480 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23481 frvbf_media_acc_not_aligned (current_cpu);
23482 } else {
23483 {
23484 UHI tmp_argihi;
23485 UHI tmp_argilo;
23486 UHI tmp_argjhi;
23487 UHI tmp_argjlo;
23488 {
23489 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23490 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23491 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23492 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23493 }
23494 {
23495 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23496 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23497 written |= (1 << 9);
23498 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23499 }
23500 {
23501 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23502 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23503 written |= (1 << 10);
23504 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23505 }
23506 }
23507 }
23508 }
23509
23510 abuf->written = written;
23511 return vpc;
23512 #undef FLD
23513 }
23514
23515 /* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23516
23517 static SEM_PC
23518 SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23519 {
23520 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23522 int UNUSED written = 0;
23523 IADDR UNUSED pc = abuf->addr;
23524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23525
23526 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23527 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23528 frvbf_media_acc_not_aligned (current_cpu);
23529 } else {
23530 {
23531 HI tmp_argihi;
23532 HI tmp_argilo;
23533 HI tmp_argjhi;
23534 HI tmp_argjlo;
23535 {
23536 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23537 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23538 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23539 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23540 }
23541 {
23542 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23543 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23544 written |= (1 << 9);
23545 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23546 }
23547 {
23548 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23549 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23550 written |= (1 << 10);
23551 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23552 }
23553 }
23554 }
23555 }
23556
23557 abuf->written = written;
23558 return vpc;
23559 #undef FLD
23560 }
23561
23562 /* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23563
23564 static SEM_PC
23565 SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23566 {
23567 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23569 int UNUSED written = 0;
23570 IADDR UNUSED pc = abuf->addr;
23571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23572
23573 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23574 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23575 frvbf_media_acc_not_aligned (current_cpu);
23576 } else {
23577 {
23578 UHI tmp_argihi;
23579 UHI tmp_argilo;
23580 UHI tmp_argjhi;
23581 UHI tmp_argjlo;
23582 {
23583 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23584 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23585 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23586 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23587 }
23588 {
23589 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23590 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23591 written |= (1 << 9);
23592 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23593 }
23594 {
23595 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23596 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23597 written |= (1 << 10);
23598 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23599 }
23600 }
23601 }
23602 }
23603
23604 abuf->written = written;
23605 return vpc;
23606 #undef FLD
23607 }
23608
23609 /* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23610
23611 static SEM_PC
23612 SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23613 {
23614 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23616 int UNUSED written = 0;
23617 IADDR UNUSED pc = abuf->addr;
23618 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23619
23620 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23621 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23622 frvbf_media_acc_not_aligned (current_cpu);
23623 } else {
23624 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23625 {
23626 HI tmp_argihi;
23627 HI tmp_argilo;
23628 HI tmp_argjhi;
23629 HI tmp_argjlo;
23630 {
23631 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23632 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23633 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23634 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23635 }
23636 {
23637 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23638 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23639 written |= (1 << 11);
23640 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23641 }
23642 {
23643 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23644 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23645 written |= (1 << 12);
23646 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23647 }
23648 }
23649 }
23650 }
23651 }
23652
23653 abuf->written = written;
23654 return vpc;
23655 #undef FLD
23656 }
23657
23658 /* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23659
23660 static SEM_PC
23661 SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23662 {
23663 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23665 int UNUSED written = 0;
23666 IADDR UNUSED pc = abuf->addr;
23667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23668
23669 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23670 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23671 frvbf_media_acc_not_aligned (current_cpu);
23672 } else {
23673 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23674 {
23675 UHI tmp_argihi;
23676 UHI tmp_argilo;
23677 UHI tmp_argjhi;
23678 UHI tmp_argjlo;
23679 {
23680 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23681 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23682 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23683 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23684 }
23685 {
23686 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23687 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23688 written |= (1 << 11);
23689 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23690 }
23691 {
23692 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23693 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23694 written |= (1 << 12);
23695 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23696 }
23697 }
23698 }
23699 }
23700 }
23701
23702 abuf->written = written;
23703 return vpc;
23704 #undef FLD
23705 }
23706
23707 /* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23708
23709 static SEM_PC
23710 SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23711 {
23712 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23713 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23714 int UNUSED written = 0;
23715 IADDR UNUSED pc = abuf->addr;
23716 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23717
23718 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23719 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23720 frvbf_media_acc_not_aligned (current_cpu);
23721 } else {
23722 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23723 frvbf_media_register_not_aligned (current_cpu);
23724 } else {
23725 {
23726 HI tmp_argihi;
23727 HI tmp_argilo;
23728 HI tmp_argjhi;
23729 HI tmp_argjlo;
23730 {
23731 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23732 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23733 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23734 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23735 }
23736 {
23737 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23738 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23739 written |= (1 << 13);
23740 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23741 }
23742 {
23743 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23744 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23745 written |= (1 << 14);
23746 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23747 }
23748 {
23749 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23750 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23751 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23752 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23753 }
23754 {
23755 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23756 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23757 written |= (1 << 15);
23758 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23759 }
23760 {
23761 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23762 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23763 written |= (1 << 16);
23764 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23765 }
23766 }
23767 }
23768 }
23769 }
23770
23771 abuf->written = written;
23772 return vpc;
23773 #undef FLD
23774 }
23775
23776 /* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23777
23778 static SEM_PC
23779 SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23780 {
23781 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23782 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23783 int UNUSED written = 0;
23784 IADDR UNUSED pc = abuf->addr;
23785 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23786
23787 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23788 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23789 frvbf_media_acc_not_aligned (current_cpu);
23790 } else {
23791 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23792 frvbf_media_register_not_aligned (current_cpu);
23793 } else {
23794 {
23795 UHI tmp_argihi;
23796 UHI tmp_argilo;
23797 UHI tmp_argjhi;
23798 UHI tmp_argjlo;
23799 {
23800 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23801 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23802 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23803 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23804 }
23805 {
23806 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23807 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23808 written |= (1 << 13);
23809 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23810 }
23811 {
23812 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23813 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23814 written |= (1 << 14);
23815 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23816 }
23817 {
23818 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23819 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23820 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23821 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23822 }
23823 {
23824 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23825 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23826 written |= (1 << 15);
23827 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23828 }
23829 {
23830 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23831 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23832 written |= (1 << 16);
23833 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23834 }
23835 }
23836 }
23837 }
23838 }
23839
23840 abuf->written = written;
23841 return vpc;
23842 #undef FLD
23843 }
23844
23845 /* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23846
23847 static SEM_PC
23848 SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23849 {
23850 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23852 int UNUSED written = 0;
23853 IADDR UNUSED pc = abuf->addr;
23854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23855
23856 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23857 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23858 frvbf_media_acc_not_aligned (current_cpu);
23859 } else {
23860 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23861 frvbf_media_register_not_aligned (current_cpu);
23862 } else {
23863 {
23864 HI tmp_argihi;
23865 HI tmp_argilo;
23866 HI tmp_argjhi;
23867 HI tmp_argjlo;
23868 {
23869 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23870 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23871 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23872 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23873 }
23874 {
23875 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23876 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23877 written |= (1 << 13);
23878 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23879 }
23880 {
23881 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23882 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23883 written |= (1 << 14);
23884 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23885 }
23886 {
23887 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23888 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23889 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23890 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23891 }
23892 {
23893 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23894 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23895 written |= (1 << 15);
23896 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23897 }
23898 {
23899 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23900 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23901 written |= (1 << 16);
23902 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23903 }
23904 }
23905 }
23906 }
23907 }
23908
23909 abuf->written = written;
23910 return vpc;
23911 #undef FLD
23912 }
23913
23914 /* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23915
23916 static SEM_PC
23917 SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23918 {
23919 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23920 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23921 int UNUSED written = 0;
23922 IADDR UNUSED pc = abuf->addr;
23923 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23924
23925 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23926 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23927 frvbf_media_acc_not_aligned (current_cpu);
23928 } else {
23929 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23930 frvbf_media_register_not_aligned (current_cpu);
23931 } else {
23932 {
23933 UHI tmp_argihi;
23934 UHI tmp_argilo;
23935 UHI tmp_argjhi;
23936 UHI tmp_argjlo;
23937 {
23938 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23939 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23940 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23941 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23942 }
23943 {
23944 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23945 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23946 written |= (1 << 13);
23947 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23948 }
23949 {
23950 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23951 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23952 written |= (1 << 14);
23953 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23954 }
23955 {
23956 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23957 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23958 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23959 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23960 }
23961 {
23962 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23963 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23964 written |= (1 << 15);
23965 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23966 }
23967 {
23968 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23969 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23970 written |= (1 << 16);
23971 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23972 }
23973 }
23974 }
23975 }
23976 }
23977
23978 abuf->written = written;
23979 return vpc;
23980 #undef FLD
23981 }
23982
23983 /* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
23984
23985 static SEM_PC
23986 SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23987 {
23988 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23990 int UNUSED written = 0;
23991 IADDR UNUSED pc = abuf->addr;
23992 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23993
23994 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23995 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23996 frvbf_media_acc_not_aligned (current_cpu);
23997 } else {
23998 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23999 frvbf_media_register_not_aligned (current_cpu);
24000 } else {
24001 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24002 {
24003 HI tmp_argihi;
24004 HI tmp_argilo;
24005 HI tmp_argjhi;
24006 HI tmp_argjlo;
24007 {
24008 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24009 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24010 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24011 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24012 }
24013 {
24014 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24015 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24016 written |= (1 << 15);
24017 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24018 }
24019 {
24020 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24021 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24022 written |= (1 << 16);
24023 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24024 }
24025 {
24026 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24027 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24028 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24029 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24030 }
24031 {
24032 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24033 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24034 written |= (1 << 17);
24035 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24036 }
24037 {
24038 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24039 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24040 written |= (1 << 18);
24041 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24042 }
24043 }
24044 }
24045 }
24046 }
24047 }
24048
24049 abuf->written = written;
24050 return vpc;
24051 #undef FLD
24052 }
24053
24054 /* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24055
24056 static SEM_PC
24057 SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24058 {
24059 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24060 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24061 int UNUSED written = 0;
24062 IADDR UNUSED pc = abuf->addr;
24063 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24064
24065 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24066 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24067 frvbf_media_acc_not_aligned (current_cpu);
24068 } else {
24069 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24070 frvbf_media_register_not_aligned (current_cpu);
24071 } else {
24072 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24073 {
24074 UHI tmp_argihi;
24075 UHI tmp_argilo;
24076 UHI tmp_argjhi;
24077 UHI tmp_argjlo;
24078 {
24079 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24080 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24081 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24082 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24083 }
24084 {
24085 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24086 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24087 written |= (1 << 15);
24088 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24089 }
24090 {
24091 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24092 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24093 written |= (1 << 16);
24094 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24095 }
24096 {
24097 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24098 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24099 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24100 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24101 }
24102 {
24103 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24104 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24105 written |= (1 << 17);
24106 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24107 }
24108 {
24109 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24110 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24111 written |= (1 << 18);
24112 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24113 }
24114 }
24115 }
24116 }
24117 }
24118 }
24119
24120 abuf->written = written;
24121 return vpc;
24122 #undef FLD
24123 }
24124
24125 /* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24126
24127 static SEM_PC
24128 SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24129 {
24130 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24132 int UNUSED written = 0;
24133 IADDR UNUSED pc = abuf->addr;
24134 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24135
24136 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24137 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24138 frvbf_media_acc_not_aligned (current_cpu);
24139 } else {
24140 {
24141 HI tmp_argihi;
24142 HI tmp_argilo;
24143 HI tmp_argjhi;
24144 HI tmp_argjlo;
24145 {
24146 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24147 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24148 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24149 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24150 }
24151 {
24152 DI tmp_tmp;
24153 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24154 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24155 {
24156 {
24157 DI opval = MAKEDI (127, 0xffffffff);
24158 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24159 written |= (1 << 11);
24160 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24161 }
24162 frvbf_media_overflow (current_cpu, 8);
24163 }
24164 } else {
24165 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24166 {
24167 {
24168 DI opval = MAKEDI (0xffffff80, 0);
24169 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24170 written |= (1 << 11);
24171 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24172 }
24173 frvbf_media_overflow (current_cpu, 8);
24174 }
24175 } else {
24176 {
24177 DI opval = tmp_tmp;
24178 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24179 written |= (1 << 11);
24180 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24181 }
24182 }
24183 }
24184 }
24185 {
24186 DI tmp_tmp;
24187 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24188 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24189 {
24190 {
24191 DI opval = MAKEDI (127, 0xffffffff);
24192 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24193 written |= (1 << 12);
24194 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24195 }
24196 frvbf_media_overflow (current_cpu, 4);
24197 }
24198 } else {
24199 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24200 {
24201 {
24202 DI opval = MAKEDI (0xffffff80, 0);
24203 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24204 written |= (1 << 12);
24205 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24206 }
24207 frvbf_media_overflow (current_cpu, 4);
24208 }
24209 } else {
24210 {
24211 DI opval = tmp_tmp;
24212 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24213 written |= (1 << 12);
24214 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24215 }
24216 }
24217 }
24218 }
24219 }
24220 }
24221 }
24222
24223 abuf->written = written;
24224 return vpc;
24225 #undef FLD
24226 }
24227
24228 /* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24229
24230 static SEM_PC
24231 SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24232 {
24233 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24235 int UNUSED written = 0;
24236 IADDR UNUSED pc = abuf->addr;
24237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24238
24239 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24240 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24241 frvbf_media_acc_not_aligned (current_cpu);
24242 } else {
24243 {
24244 UHI tmp_argihi;
24245 UHI tmp_argilo;
24246 UHI tmp_argjhi;
24247 UHI tmp_argjlo;
24248 {
24249 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24250 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24251 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24252 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24253 }
24254 {
24255 DI tmp_tmp;
24256 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24257 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24258 {
24259 {
24260 UDI opval = MAKEDI (255, 0xffffffff);
24261 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24262 written |= (1 << 11);
24263 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24264 }
24265 frvbf_media_overflow (current_cpu, 8);
24266 }
24267 } else {
24268 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24269 {
24270 {
24271 UDI opval = MAKEDI (0, 0);
24272 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24273 written |= (1 << 11);
24274 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24275 }
24276 frvbf_media_overflow (current_cpu, 8);
24277 }
24278 } else {
24279 {
24280 UDI opval = tmp_tmp;
24281 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24282 written |= (1 << 11);
24283 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24284 }
24285 }
24286 }
24287 }
24288 {
24289 DI tmp_tmp;
24290 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24291 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24292 {
24293 {
24294 UDI opval = MAKEDI (255, 0xffffffff);
24295 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24296 written |= (1 << 12);
24297 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24298 }
24299 frvbf_media_overflow (current_cpu, 4);
24300 }
24301 } else {
24302 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24303 {
24304 {
24305 UDI opval = MAKEDI (0, 0);
24306 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24307 written |= (1 << 12);
24308 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24309 }
24310 frvbf_media_overflow (current_cpu, 4);
24311 }
24312 } else {
24313 {
24314 UDI opval = tmp_tmp;
24315 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24316 written |= (1 << 12);
24317 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24318 }
24319 }
24320 }
24321 }
24322 }
24323 }
24324 }
24325
24326 abuf->written = written;
24327 return vpc;
24328 #undef FLD
24329 }
24330
24331 /* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24332
24333 static SEM_PC
24334 SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24335 {
24336 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24337 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24338 int UNUSED written = 0;
24339 IADDR UNUSED pc = abuf->addr;
24340 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24341
24342 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24343 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24344 frvbf_media_acc_not_aligned (current_cpu);
24345 } else {
24346 {
24347 HI tmp_argihi;
24348 HI tmp_argilo;
24349 HI tmp_argjhi;
24350 HI tmp_argjlo;
24351 {
24352 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24353 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24354 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24355 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24356 }
24357 {
24358 DI tmp_tmp;
24359 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24360 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24361 {
24362 {
24363 DI opval = MAKEDI (127, 0xffffffff);
24364 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24365 written |= (1 << 11);
24366 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24367 }
24368 frvbf_media_overflow (current_cpu, 8);
24369 }
24370 } else {
24371 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24372 {
24373 {
24374 DI opval = MAKEDI (0xffffff80, 0);
24375 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24376 written |= (1 << 11);
24377 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24378 }
24379 frvbf_media_overflow (current_cpu, 8);
24380 }
24381 } else {
24382 {
24383 DI opval = tmp_tmp;
24384 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24385 written |= (1 << 11);
24386 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24387 }
24388 }
24389 }
24390 }
24391 {
24392 DI tmp_tmp;
24393 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24394 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24395 {
24396 {
24397 DI opval = MAKEDI (127, 0xffffffff);
24398 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24399 written |= (1 << 12);
24400 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24401 }
24402 frvbf_media_overflow (current_cpu, 4);
24403 }
24404 } else {
24405 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24406 {
24407 {
24408 DI opval = MAKEDI (0xffffff80, 0);
24409 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24410 written |= (1 << 12);
24411 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24412 }
24413 frvbf_media_overflow (current_cpu, 4);
24414 }
24415 } else {
24416 {
24417 DI opval = tmp_tmp;
24418 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24419 written |= (1 << 12);
24420 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24421 }
24422 }
24423 }
24424 }
24425 }
24426 }
24427 }
24428
24429 abuf->written = written;
24430 return vpc;
24431 #undef FLD
24432 }
24433
24434 /* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24435
24436 static SEM_PC
24437 SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24438 {
24439 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24441 int UNUSED written = 0;
24442 IADDR UNUSED pc = abuf->addr;
24443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24444
24445 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24446 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24447 frvbf_media_acc_not_aligned (current_cpu);
24448 } else {
24449 {
24450 UHI tmp_argihi;
24451 UHI tmp_argilo;
24452 UHI tmp_argjhi;
24453 UHI tmp_argjlo;
24454 {
24455 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24456 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24457 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24458 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24459 }
24460 {
24461 DI tmp_tmp;
24462 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24463 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24464 {
24465 {
24466 UDI opval = MAKEDI (255, 0xffffffff);
24467 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24468 written |= (1 << 11);
24469 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24470 }
24471 frvbf_media_overflow (current_cpu, 8);
24472 }
24473 } else {
24474 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24475 {
24476 {
24477 UDI opval = MAKEDI (0, 0);
24478 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24479 written |= (1 << 11);
24480 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24481 }
24482 frvbf_media_overflow (current_cpu, 8);
24483 }
24484 } else {
24485 {
24486 UDI opval = tmp_tmp;
24487 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24488 written |= (1 << 11);
24489 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24490 }
24491 }
24492 }
24493 }
24494 {
24495 DI tmp_tmp;
24496 tmp_tmp = SUBDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24497 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24498 {
24499 {
24500 UDI opval = MAKEDI (255, 0xffffffff);
24501 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24502 written |= (1 << 12);
24503 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24504 }
24505 frvbf_media_overflow (current_cpu, 4);
24506 }
24507 } else {
24508 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24509 {
24510 {
24511 UDI opval = MAKEDI (0, 0);
24512 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24513 written |= (1 << 12);
24514 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24515 }
24516 frvbf_media_overflow (current_cpu, 4);
24517 }
24518 } else {
24519 {
24520 UDI opval = tmp_tmp;
24521 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24522 written |= (1 << 12);
24523 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24524 }
24525 }
24526 }
24527 }
24528 }
24529 }
24530 }
24531
24532 abuf->written = written;
24533 return vpc;
24534 #undef FLD
24535 }
24536
24537 /* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24538
24539 static SEM_PC
24540 SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24541 {
24542 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24543 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24544 int UNUSED written = 0;
24545 IADDR UNUSED pc = abuf->addr;
24546 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24547
24548 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24549 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24550 frvbf_media_acc_not_aligned (current_cpu);
24551 } else {
24552 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24553 {
24554 HI tmp_argihi;
24555 HI tmp_argilo;
24556 HI tmp_argjhi;
24557 HI tmp_argjlo;
24558 {
24559 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24560 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24561 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24562 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24563 }
24564 {
24565 DI tmp_tmp;
24566 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24567 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24568 {
24569 {
24570 DI opval = MAKEDI (127, 0xffffffff);
24571 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24572 written |= (1 << 13);
24573 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24574 }
24575 frvbf_media_overflow (current_cpu, 8);
24576 }
24577 } else {
24578 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24579 {
24580 {
24581 DI opval = MAKEDI (0xffffff80, 0);
24582 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24583 written |= (1 << 13);
24584 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24585 }
24586 frvbf_media_overflow (current_cpu, 8);
24587 }
24588 } else {
24589 {
24590 DI opval = tmp_tmp;
24591 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24592 written |= (1 << 13);
24593 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24594 }
24595 }
24596 }
24597 }
24598 {
24599 DI tmp_tmp;
24600 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24601 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24602 {
24603 {
24604 DI opval = MAKEDI (127, 0xffffffff);
24605 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24606 written |= (1 << 14);
24607 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24608 }
24609 frvbf_media_overflow (current_cpu, 4);
24610 }
24611 } else {
24612 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24613 {
24614 {
24615 DI opval = MAKEDI (0xffffff80, 0);
24616 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24617 written |= (1 << 14);
24618 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24619 }
24620 frvbf_media_overflow (current_cpu, 4);
24621 }
24622 } else {
24623 {
24624 DI opval = tmp_tmp;
24625 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24626 written |= (1 << 14);
24627 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24628 }
24629 }
24630 }
24631 }
24632 }
24633 }
24634 }
24635 }
24636
24637 abuf->written = written;
24638 return vpc;
24639 #undef FLD
24640 }
24641
24642 /* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24643
24644 static SEM_PC
24645 SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24646 {
24647 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24649 int UNUSED written = 0;
24650 IADDR UNUSED pc = abuf->addr;
24651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24652
24653 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24654 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24655 frvbf_media_acc_not_aligned (current_cpu);
24656 } else {
24657 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24658 {
24659 UHI tmp_argihi;
24660 UHI tmp_argilo;
24661 UHI tmp_argjhi;
24662 UHI tmp_argjlo;
24663 {
24664 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24665 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24666 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24667 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24668 }
24669 {
24670 DI tmp_tmp;
24671 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24672 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24673 {
24674 {
24675 UDI opval = MAKEDI (255, 0xffffffff);
24676 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24677 written |= (1 << 13);
24678 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24679 }
24680 frvbf_media_overflow (current_cpu, 8);
24681 }
24682 } else {
24683 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24684 {
24685 {
24686 UDI opval = MAKEDI (0, 0);
24687 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24688 written |= (1 << 13);
24689 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24690 }
24691 frvbf_media_overflow (current_cpu, 8);
24692 }
24693 } else {
24694 {
24695 UDI opval = tmp_tmp;
24696 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24697 written |= (1 << 13);
24698 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24699 }
24700 }
24701 }
24702 }
24703 {
24704 DI tmp_tmp;
24705 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24706 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24707 {
24708 {
24709 UDI opval = MAKEDI (255, 0xffffffff);
24710 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24711 written |= (1 << 14);
24712 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24713 }
24714 frvbf_media_overflow (current_cpu, 4);
24715 }
24716 } else {
24717 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24718 {
24719 {
24720 UDI opval = MAKEDI (0, 0);
24721 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24722 written |= (1 << 14);
24723 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24724 }
24725 frvbf_media_overflow (current_cpu, 4);
24726 }
24727 } else {
24728 {
24729 UDI opval = tmp_tmp;
24730 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24731 written |= (1 << 14);
24732 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24733 }
24734 }
24735 }
24736 }
24737 }
24738 }
24739 }
24740 }
24741
24742 abuf->written = written;
24743 return vpc;
24744 #undef FLD
24745 }
24746
24747 /* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24748
24749 static SEM_PC
24750 SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24751 {
24752 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24754 int UNUSED written = 0;
24755 IADDR UNUSED pc = abuf->addr;
24756 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24757
24758 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24759 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24760 frvbf_media_acc_not_aligned (current_cpu);
24761 } else {
24762 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24763 frvbf_media_register_not_aligned (current_cpu);
24764 } else {
24765 {
24766 HI tmp_argihi;
24767 HI tmp_argilo;
24768 HI tmp_argjhi;
24769 HI tmp_argjlo;
24770 {
24771 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24772 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24773 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24774 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24775 }
24776 {
24777 DI tmp_tmp;
24778 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24779 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24780 {
24781 {
24782 DI opval = MAKEDI (127, 0xffffffff);
24783 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24784 written |= (1 << 17);
24785 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24786 }
24787 frvbf_media_overflow (current_cpu, 8);
24788 }
24789 } else {
24790 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24791 {
24792 {
24793 DI opval = MAKEDI (0xffffff80, 0);
24794 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24795 written |= (1 << 17);
24796 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24797 }
24798 frvbf_media_overflow (current_cpu, 8);
24799 }
24800 } else {
24801 {
24802 DI opval = tmp_tmp;
24803 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24804 written |= (1 << 17);
24805 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24806 }
24807 }
24808 }
24809 }
24810 {
24811 DI tmp_tmp;
24812 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24813 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24814 {
24815 {
24816 DI opval = MAKEDI (127, 0xffffffff);
24817 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24818 written |= (1 << 18);
24819 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24820 }
24821 frvbf_media_overflow (current_cpu, 4);
24822 }
24823 } else {
24824 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24825 {
24826 {
24827 DI opval = MAKEDI (0xffffff80, 0);
24828 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24829 written |= (1 << 18);
24830 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24831 }
24832 frvbf_media_overflow (current_cpu, 4);
24833 }
24834 } else {
24835 {
24836 DI opval = tmp_tmp;
24837 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24838 written |= (1 << 18);
24839 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24840 }
24841 }
24842 }
24843 }
24844 {
24845 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24846 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24847 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24848 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24849 }
24850 {
24851 DI tmp_tmp;
24852 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24853 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24854 {
24855 {
24856 DI opval = MAKEDI (127, 0xffffffff);
24857 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24858 written |= (1 << 19);
24859 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24860 }
24861 frvbf_media_overflow (current_cpu, 2);
24862 }
24863 } else {
24864 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24865 {
24866 {
24867 DI opval = MAKEDI (0xffffff80, 0);
24868 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24869 written |= (1 << 19);
24870 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24871 }
24872 frvbf_media_overflow (current_cpu, 2);
24873 }
24874 } else {
24875 {
24876 DI opval = tmp_tmp;
24877 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24878 written |= (1 << 19);
24879 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24880 }
24881 }
24882 }
24883 }
24884 {
24885 DI tmp_tmp;
24886 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24887 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24888 {
24889 {
24890 DI opval = MAKEDI (127, 0xffffffff);
24891 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24892 written |= (1 << 20);
24893 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24894 }
24895 frvbf_media_overflow (current_cpu, 1);
24896 }
24897 } else {
24898 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24899 {
24900 {
24901 DI opval = MAKEDI (0xffffff80, 0);
24902 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24903 written |= (1 << 20);
24904 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24905 }
24906 frvbf_media_overflow (current_cpu, 1);
24907 }
24908 } else {
24909 {
24910 DI opval = tmp_tmp;
24911 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24912 written |= (1 << 20);
24913 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24914 }
24915 }
24916 }
24917 }
24918 }
24919 }
24920 }
24921 }
24922
24923 abuf->written = written;
24924 return vpc;
24925 #undef FLD
24926 }
24927
24928 /* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
24929
24930 static SEM_PC
24931 SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24932 {
24933 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
24934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24935 int UNUSED written = 0;
24936 IADDR UNUSED pc = abuf->addr;
24937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24938
24939 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24940 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
24941 frvbf_media_acc_not_aligned (current_cpu);
24942 } else {
24943 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24944 frvbf_media_register_not_aligned (current_cpu);
24945 } else {
24946 {
24947 UHI tmp_argihi;
24948 UHI tmp_argilo;
24949 UHI tmp_argjhi;
24950 UHI tmp_argjlo;
24951 {
24952 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24953 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24954 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24955 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24956 }
24957 {
24958 DI tmp_tmp;
24959 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24960 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24961 {
24962 {
24963 UDI opval = MAKEDI (255, 0xffffffff);
24964 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24965 written |= (1 << 17);
24966 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24967 }
24968 frvbf_media_overflow (current_cpu, 8);
24969 }
24970 } else {
24971 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24972 {
24973 {
24974 UDI opval = MAKEDI (0, 0);
24975 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24976 written |= (1 << 17);
24977 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24978 }
24979 frvbf_media_overflow (current_cpu, 8);
24980 }
24981 } else {
24982 {
24983 UDI opval = tmp_tmp;
24984 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24985 written |= (1 << 17);
24986 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24987 }
24988 }
24989 }
24990 }
24991 {
24992 DI tmp_tmp;
24993 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24994 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24995 {
24996 {
24997 UDI opval = MAKEDI (255, 0xffffffff);
24998 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24999 written |= (1 << 18);
25000 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25001 }
25002 frvbf_media_overflow (current_cpu, 4);
25003 }
25004 } else {
25005 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25006 {
25007 {
25008 UDI opval = MAKEDI (0, 0);
25009 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25010 written |= (1 << 18);
25011 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25012 }
25013 frvbf_media_overflow (current_cpu, 4);
25014 }
25015 } else {
25016 {
25017 UDI opval = tmp_tmp;
25018 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25019 written |= (1 << 18);
25020 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25021 }
25022 }
25023 }
25024 }
25025 {
25026 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25027 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25028 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25029 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25030 }
25031 {
25032 DI tmp_tmp;
25033 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25034 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25035 {
25036 {
25037 UDI opval = MAKEDI (255, 0xffffffff);
25038 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25039 written |= (1 << 19);
25040 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25041 }
25042 frvbf_media_overflow (current_cpu, 2);
25043 }
25044 } else {
25045 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25046 {
25047 {
25048 UDI opval = MAKEDI (0, 0);
25049 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25050 written |= (1 << 19);
25051 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25052 }
25053 frvbf_media_overflow (current_cpu, 2);
25054 }
25055 } else {
25056 {
25057 UDI opval = tmp_tmp;
25058 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25059 written |= (1 << 19);
25060 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25061 }
25062 }
25063 }
25064 }
25065 {
25066 DI tmp_tmp;
25067 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25068 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25069 {
25070 {
25071 UDI opval = MAKEDI (255, 0xffffffff);
25072 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25073 written |= (1 << 20);
25074 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25075 }
25076 frvbf_media_overflow (current_cpu, 1);
25077 }
25078 } else {
25079 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25080 {
25081 {
25082 UDI opval = MAKEDI (0, 0);
25083 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25084 written |= (1 << 20);
25085 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25086 }
25087 frvbf_media_overflow (current_cpu, 1);
25088 }
25089 } else {
25090 {
25091 UDI opval = tmp_tmp;
25092 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25093 written |= (1 << 20);
25094 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25095 }
25096 }
25097 }
25098 }
25099 }
25100 }
25101 }
25102 }
25103
25104 abuf->written = written;
25105 return vpc;
25106 #undef FLD
25107 }
25108
25109 /* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25110
25111 static SEM_PC
25112 SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25113 {
25114 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25115 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25116 int UNUSED written = 0;
25117 IADDR UNUSED pc = abuf->addr;
25118 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25119
25120 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25121 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25122 frvbf_media_acc_not_aligned (current_cpu);
25123 } else {
25124 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25125 frvbf_media_register_not_aligned (current_cpu);
25126 } else {
25127 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25128 {
25129 HI tmp_argihi;
25130 HI tmp_argilo;
25131 HI tmp_argjhi;
25132 HI tmp_argjlo;
25133 {
25134 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25135 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25136 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25137 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25138 }
25139 {
25140 DI tmp_tmp;
25141 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25142 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25143 {
25144 {
25145 DI opval = MAKEDI (127, 0xffffffff);
25146 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25147 written |= (1 << 19);
25148 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25149 }
25150 frvbf_media_overflow (current_cpu, 8);
25151 }
25152 } else {
25153 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25154 {
25155 {
25156 DI opval = MAKEDI (0xffffff80, 0);
25157 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25158 written |= (1 << 19);
25159 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25160 }
25161 frvbf_media_overflow (current_cpu, 8);
25162 }
25163 } else {
25164 {
25165 DI opval = tmp_tmp;
25166 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25167 written |= (1 << 19);
25168 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25169 }
25170 }
25171 }
25172 }
25173 {
25174 DI tmp_tmp;
25175 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25176 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25177 {
25178 {
25179 DI opval = MAKEDI (127, 0xffffffff);
25180 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25181 written |= (1 << 20);
25182 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25183 }
25184 frvbf_media_overflow (current_cpu, 4);
25185 }
25186 } else {
25187 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25188 {
25189 {
25190 DI opval = MAKEDI (0xffffff80, 0);
25191 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25192 written |= (1 << 20);
25193 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25194 }
25195 frvbf_media_overflow (current_cpu, 4);
25196 }
25197 } else {
25198 {
25199 DI opval = tmp_tmp;
25200 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25201 written |= (1 << 20);
25202 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25203 }
25204 }
25205 }
25206 }
25207 {
25208 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25209 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25210 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25211 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25212 }
25213 {
25214 DI tmp_tmp;
25215 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25216 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25217 {
25218 {
25219 DI opval = MAKEDI (127, 0xffffffff);
25220 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25221 written |= (1 << 21);
25222 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25223 }
25224 frvbf_media_overflow (current_cpu, 2);
25225 }
25226 } else {
25227 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25228 {
25229 {
25230 DI opval = MAKEDI (0xffffff80, 0);
25231 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25232 written |= (1 << 21);
25233 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25234 }
25235 frvbf_media_overflow (current_cpu, 2);
25236 }
25237 } else {
25238 {
25239 DI opval = tmp_tmp;
25240 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25241 written |= (1 << 21);
25242 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25243 }
25244 }
25245 }
25246 }
25247 {
25248 DI tmp_tmp;
25249 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25250 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25251 {
25252 {
25253 DI opval = MAKEDI (127, 0xffffffff);
25254 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25255 written |= (1 << 22);
25256 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25257 }
25258 frvbf_media_overflow (current_cpu, 1);
25259 }
25260 } else {
25261 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25262 {
25263 {
25264 DI opval = MAKEDI (0xffffff80, 0);
25265 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25266 written |= (1 << 22);
25267 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25268 }
25269 frvbf_media_overflow (current_cpu, 1);
25270 }
25271 } else {
25272 {
25273 DI opval = tmp_tmp;
25274 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25275 written |= (1 << 22);
25276 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25277 }
25278 }
25279 }
25280 }
25281 }
25282 }
25283 }
25284 }
25285 }
25286
25287 abuf->written = written;
25288 return vpc;
25289 #undef FLD
25290 }
25291
25292 /* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25293
25294 static SEM_PC
25295 SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25296 {
25297 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25299 int UNUSED written = 0;
25300 IADDR UNUSED pc = abuf->addr;
25301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25302
25303 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25304 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25305 frvbf_media_acc_not_aligned (current_cpu);
25306 } else {
25307 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25308 frvbf_media_register_not_aligned (current_cpu);
25309 } else {
25310 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25311 {
25312 UHI tmp_argihi;
25313 UHI tmp_argilo;
25314 UHI tmp_argjhi;
25315 UHI tmp_argjlo;
25316 {
25317 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25318 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25319 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25320 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25321 }
25322 {
25323 DI tmp_tmp;
25324 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25325 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25326 {
25327 {
25328 UDI opval = MAKEDI (255, 0xffffffff);
25329 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25330 written |= (1 << 19);
25331 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25332 }
25333 frvbf_media_overflow (current_cpu, 8);
25334 }
25335 } else {
25336 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25337 {
25338 {
25339 UDI opval = MAKEDI (0, 0);
25340 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25341 written |= (1 << 19);
25342 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25343 }
25344 frvbf_media_overflow (current_cpu, 8);
25345 }
25346 } else {
25347 {
25348 UDI opval = tmp_tmp;
25349 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25350 written |= (1 << 19);
25351 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25352 }
25353 }
25354 }
25355 }
25356 {
25357 DI tmp_tmp;
25358 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25359 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25360 {
25361 {
25362 UDI opval = MAKEDI (255, 0xffffffff);
25363 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25364 written |= (1 << 20);
25365 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25366 }
25367 frvbf_media_overflow (current_cpu, 4);
25368 }
25369 } else {
25370 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25371 {
25372 {
25373 UDI opval = MAKEDI (0, 0);
25374 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25375 written |= (1 << 20);
25376 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25377 }
25378 frvbf_media_overflow (current_cpu, 4);
25379 }
25380 } else {
25381 {
25382 UDI opval = tmp_tmp;
25383 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25384 written |= (1 << 20);
25385 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25386 }
25387 }
25388 }
25389 }
25390 {
25391 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25392 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25393 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25394 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25395 }
25396 {
25397 DI tmp_tmp;
25398 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25399 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25400 {
25401 {
25402 UDI opval = MAKEDI (255, 0xffffffff);
25403 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25404 written |= (1 << 21);
25405 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25406 }
25407 frvbf_media_overflow (current_cpu, 2);
25408 }
25409 } else {
25410 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25411 {
25412 {
25413 UDI opval = MAKEDI (0, 0);
25414 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25415 written |= (1 << 21);
25416 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25417 }
25418 frvbf_media_overflow (current_cpu, 2);
25419 }
25420 } else {
25421 {
25422 UDI opval = tmp_tmp;
25423 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25424 written |= (1 << 21);
25425 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25426 }
25427 }
25428 }
25429 }
25430 {
25431 DI tmp_tmp;
25432 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25433 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25434 {
25435 {
25436 UDI opval = MAKEDI (255, 0xffffffff);
25437 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25438 written |= (1 << 22);
25439 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25440 }
25441 frvbf_media_overflow (current_cpu, 1);
25442 }
25443 } else {
25444 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25445 {
25446 {
25447 UDI opval = MAKEDI (0, 0);
25448 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25449 written |= (1 << 22);
25450 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25451 }
25452 frvbf_media_overflow (current_cpu, 1);
25453 }
25454 } else {
25455 {
25456 UDI opval = tmp_tmp;
25457 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25458 written |= (1 << 22);
25459 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25460 }
25461 }
25462 }
25463 }
25464 }
25465 }
25466 }
25467 }
25468 }
25469
25470 abuf->written = written;
25471 return vpc;
25472 #undef FLD
25473 }
25474
25475 /* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25476
25477 static SEM_PC
25478 SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25479 {
25480 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25482 int UNUSED written = 0;
25483 IADDR UNUSED pc = abuf->addr;
25484 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25485
25486 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25487 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25488 frvbf_media_acc_not_aligned (current_cpu);
25489 } else {
25490 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25491 frvbf_media_register_not_aligned (current_cpu);
25492 } else {
25493 {
25494 HI tmp_argihi;
25495 HI tmp_argilo;
25496 HI tmp_argjhi;
25497 HI tmp_argjlo;
25498 {
25499 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25500 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25501 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25502 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25503 }
25504 {
25505 DI tmp_tmp;
25506 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25507 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25508 {
25509 {
25510 DI opval = MAKEDI (127, 0xffffffff);
25511 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25512 written |= (1 << 19);
25513 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25514 }
25515 frvbf_media_overflow (current_cpu, 2);
25516 }
25517 } else {
25518 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25519 {
25520 {
25521 DI opval = MAKEDI (0xffffff80, 0);
25522 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25523 written |= (1 << 19);
25524 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25525 }
25526 frvbf_media_overflow (current_cpu, 2);
25527 }
25528 } else {
25529 {
25530 DI opval = tmp_tmp;
25531 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25532 written |= (1 << 19);
25533 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25534 }
25535 }
25536 }
25537 }
25538 {
25539 DI tmp_tmp;
25540 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25541 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25542 {
25543 {
25544 DI opval = MAKEDI (127, 0xffffffff);
25545 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25546 written |= (1 << 20);
25547 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25548 }
25549 frvbf_media_overflow (current_cpu, 1);
25550 }
25551 } else {
25552 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25553 {
25554 {
25555 DI opval = MAKEDI (0xffffff80, 0);
25556 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25557 written |= (1 << 20);
25558 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25559 }
25560 frvbf_media_overflow (current_cpu, 1);
25561 }
25562 } else {
25563 {
25564 DI opval = tmp_tmp;
25565 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25566 written |= (1 << 20);
25567 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25568 }
25569 }
25570 }
25571 }
25572 {
25573 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25574 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25575 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25576 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25577 }
25578 {
25579 DI tmp_tmp;
25580 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25581 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25582 {
25583 {
25584 DI opval = MAKEDI (127, 0xffffffff);
25585 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25586 written |= (1 << 17);
25587 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25588 }
25589 frvbf_media_overflow (current_cpu, 8);
25590 }
25591 } else {
25592 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25593 {
25594 {
25595 DI opval = MAKEDI (0xffffff80, 0);
25596 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25597 written |= (1 << 17);
25598 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25599 }
25600 frvbf_media_overflow (current_cpu, 8);
25601 }
25602 } else {
25603 {
25604 DI opval = tmp_tmp;
25605 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25606 written |= (1 << 17);
25607 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25608 }
25609 }
25610 }
25611 }
25612 {
25613 DI tmp_tmp;
25614 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25615 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25616 {
25617 {
25618 DI opval = MAKEDI (127, 0xffffffff);
25619 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25620 written |= (1 << 18);
25621 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25622 }
25623 frvbf_media_overflow (current_cpu, 4);
25624 }
25625 } else {
25626 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25627 {
25628 {
25629 DI opval = MAKEDI (0xffffff80, 0);
25630 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25631 written |= (1 << 18);
25632 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25633 }
25634 frvbf_media_overflow (current_cpu, 4);
25635 }
25636 } else {
25637 {
25638 DI opval = tmp_tmp;
25639 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25640 written |= (1 << 18);
25641 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25642 }
25643 }
25644 }
25645 }
25646 }
25647 }
25648 }
25649 }
25650
25651 abuf->written = written;
25652 return vpc;
25653 #undef FLD
25654 }
25655
25656 /* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25657
25658 static SEM_PC
25659 SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25660 {
25661 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25663 int UNUSED written = 0;
25664 IADDR UNUSED pc = abuf->addr;
25665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25666
25667 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25668 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25669 frvbf_media_acc_not_aligned (current_cpu);
25670 } else {
25671 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25672 frvbf_media_register_not_aligned (current_cpu);
25673 } else {
25674 {
25675 HI tmp_argihi;
25676 HI tmp_argilo;
25677 HI tmp_argjhi;
25678 HI tmp_argjlo;
25679 {
25680 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25681 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25682 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25683 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25684 }
25685 {
25686 DI tmp_tmp;
25687 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25688 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25689 {
25690 {
25691 DI opval = MAKEDI (127, 0xffffffff);
25692 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25693 written |= (1 << 19);
25694 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25695 }
25696 frvbf_media_overflow (current_cpu, 2);
25697 }
25698 } else {
25699 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25700 {
25701 {
25702 DI opval = MAKEDI (0xffffff80, 0);
25703 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25704 written |= (1 << 19);
25705 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25706 }
25707 frvbf_media_overflow (current_cpu, 2);
25708 }
25709 } else {
25710 {
25711 DI opval = tmp_tmp;
25712 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25713 written |= (1 << 19);
25714 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25715 }
25716 }
25717 }
25718 }
25719 {
25720 DI tmp_tmp;
25721 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25722 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25723 {
25724 {
25725 DI opval = MAKEDI (127, 0xffffffff);
25726 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25727 written |= (1 << 20);
25728 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25729 }
25730 frvbf_media_overflow (current_cpu, 1);
25731 }
25732 } else {
25733 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25734 {
25735 {
25736 DI opval = MAKEDI (0xffffff80, 0);
25737 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25738 written |= (1 << 20);
25739 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25740 }
25741 frvbf_media_overflow (current_cpu, 1);
25742 }
25743 } else {
25744 {
25745 DI opval = tmp_tmp;
25746 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25747 written |= (1 << 20);
25748 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25749 }
25750 }
25751 }
25752 }
25753 {
25754 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25755 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25756 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25757 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25758 }
25759 {
25760 DI tmp_tmp;
25761 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25762 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25763 {
25764 {
25765 DI opval = MAKEDI (127, 0xffffffff);
25766 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25767 written |= (1 << 17);
25768 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25769 }
25770 frvbf_media_overflow (current_cpu, 8);
25771 }
25772 } else {
25773 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25774 {
25775 {
25776 DI opval = MAKEDI (0xffffff80, 0);
25777 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25778 written |= (1 << 17);
25779 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25780 }
25781 frvbf_media_overflow (current_cpu, 8);
25782 }
25783 } else {
25784 {
25785 DI opval = tmp_tmp;
25786 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25787 written |= (1 << 17);
25788 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25789 }
25790 }
25791 }
25792 }
25793 {
25794 DI tmp_tmp;
25795 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25796 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25797 {
25798 {
25799 DI opval = MAKEDI (127, 0xffffffff);
25800 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25801 written |= (1 << 18);
25802 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25803 }
25804 frvbf_media_overflow (current_cpu, 4);
25805 }
25806 } else {
25807 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25808 {
25809 {
25810 DI opval = MAKEDI (0xffffff80, 0);
25811 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25812 written |= (1 << 18);
25813 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25814 }
25815 frvbf_media_overflow (current_cpu, 4);
25816 }
25817 } else {
25818 {
25819 DI opval = tmp_tmp;
25820 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25821 written |= (1 << 18);
25822 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25823 }
25824 }
25825 }
25826 }
25827 }
25828 }
25829 }
25830 }
25831
25832 abuf->written = written;
25833 return vpc;
25834 #undef FLD
25835 }
25836
25837 /* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25838
25839 static SEM_PC
25840 SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25841 {
25842 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25843 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25844 int UNUSED written = 0;
25845 IADDR UNUSED pc = abuf->addr;
25846 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25847
25848 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25849 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25850 frvbf_media_acc_not_aligned (current_cpu);
25851 } else {
25852 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25853 frvbf_media_register_not_aligned (current_cpu);
25854 } else {
25855 {
25856 HI tmp_argihi;
25857 HI tmp_argilo;
25858 HI tmp_argjhi;
25859 HI tmp_argjlo;
25860 {
25861 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25862 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25863 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25864 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25865 }
25866 {
25867 DI tmp_tmp;
25868 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25869 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25870 {
25871 {
25872 DI opval = MAKEDI (127, 0xffffffff);
25873 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25874 written |= (1 << 17);
25875 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25876 }
25877 frvbf_media_overflow (current_cpu, 8);
25878 }
25879 } else {
25880 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25881 {
25882 {
25883 DI opval = MAKEDI (0xffffff80, 0);
25884 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25885 written |= (1 << 17);
25886 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25887 }
25888 frvbf_media_overflow (current_cpu, 8);
25889 }
25890 } else {
25891 {
25892 DI opval = tmp_tmp;
25893 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25894 written |= (1 << 17);
25895 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25896 }
25897 }
25898 }
25899 }
25900 {
25901 DI tmp_tmp;
25902 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25903 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25904 {
25905 {
25906 DI opval = MAKEDI (127, 0xffffffff);
25907 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25908 written |= (1 << 18);
25909 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25910 }
25911 frvbf_media_overflow (current_cpu, 4);
25912 }
25913 } else {
25914 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25915 {
25916 {
25917 DI opval = MAKEDI (0xffffff80, 0);
25918 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25919 written |= (1 << 18);
25920 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25921 }
25922 frvbf_media_overflow (current_cpu, 4);
25923 }
25924 } else {
25925 {
25926 DI opval = tmp_tmp;
25927 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25928 written |= (1 << 18);
25929 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25930 }
25931 }
25932 }
25933 }
25934 {
25935 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25936 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25937 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25938 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25939 }
25940 {
25941 DI tmp_tmp;
25942 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25943 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25944 {
25945 {
25946 DI opval = MAKEDI (127, 0xffffffff);
25947 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25948 written |= (1 << 19);
25949 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25950 }
25951 frvbf_media_overflow (current_cpu, 2);
25952 }
25953 } else {
25954 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25955 {
25956 {
25957 DI opval = MAKEDI (0xffffff80, 0);
25958 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25959 written |= (1 << 19);
25960 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25961 }
25962 frvbf_media_overflow (current_cpu, 2);
25963 }
25964 } else {
25965 {
25966 DI opval = tmp_tmp;
25967 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25968 written |= (1 << 19);
25969 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25970 }
25971 }
25972 }
25973 }
25974 {
25975 DI tmp_tmp;
25976 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25977 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25978 {
25979 {
25980 DI opval = MAKEDI (127, 0xffffffff);
25981 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25982 written |= (1 << 20);
25983 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25984 }
25985 frvbf_media_overflow (current_cpu, 1);
25986 }
25987 } else {
25988 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25989 {
25990 {
25991 DI opval = MAKEDI (0xffffff80, 0);
25992 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25993 written |= (1 << 20);
25994 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25995 }
25996 frvbf_media_overflow (current_cpu, 1);
25997 }
25998 } else {
25999 {
26000 DI opval = tmp_tmp;
26001 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26002 written |= (1 << 20);
26003 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26004 }
26005 }
26006 }
26007 }
26008 }
26009 }
26010 }
26011 }
26012
26013 abuf->written = written;
26014 return vpc;
26015 #undef FLD
26016 }
26017
26018 /* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26019
26020 static SEM_PC
26021 SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26022 {
26023 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26024 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26025 int UNUSED written = 0;
26026 IADDR UNUSED pc = abuf->addr;
26027 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26028
26029 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26030 {
26031 HI tmp_argihi;
26032 HI tmp_argilo;
26033 HI tmp_argjhi;
26034 HI tmp_argjlo;
26035 {
26036 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26037 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26038 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26039 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26040 }
26041 {
26042 DI tmp_tmp1;
26043 DI tmp_tmp2;
26044 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26045 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26046 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26047 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26048 {
26049 {
26050 DI opval = MAKEDI (127, 0xffffffff);
26051 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26052 written |= (1 << 9);
26053 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26054 }
26055 frvbf_media_overflow (current_cpu, 8);
26056 }
26057 } else {
26058 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26059 {
26060 {
26061 DI opval = MAKEDI (0xffffff80, 0);
26062 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26063 written |= (1 << 9);
26064 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26065 }
26066 frvbf_media_overflow (current_cpu, 8);
26067 }
26068 } else {
26069 {
26070 DI opval = tmp_tmp1;
26071 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26072 written |= (1 << 9);
26073 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26074 }
26075 }
26076 }
26077 }
26078 }
26079 }
26080
26081 abuf->written = written;
26082 return vpc;
26083 #undef FLD
26084 }
26085
26086 /* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26087
26088 static SEM_PC
26089 SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26090 {
26091 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26093 int UNUSED written = 0;
26094 IADDR UNUSED pc = abuf->addr;
26095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26096
26097 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26098 {
26099 UHI tmp_argihi;
26100 UHI tmp_argilo;
26101 UHI tmp_argjhi;
26102 UHI tmp_argjlo;
26103 {
26104 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26105 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26106 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26107 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26108 }
26109 {
26110 DI tmp_tmp1;
26111 DI tmp_tmp2;
26112 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26113 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26114 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26115 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26116 {
26117 {
26118 DI opval = MAKEDI (255, 0xffffffff);
26119 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26120 written |= (1 << 9);
26121 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26122 }
26123 frvbf_media_overflow (current_cpu, 8);
26124 }
26125 } else {
26126 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26127 {
26128 {
26129 DI opval = MAKEDI (0, 0);
26130 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26131 written |= (1 << 9);
26132 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26133 }
26134 frvbf_media_overflow (current_cpu, 8);
26135 }
26136 } else {
26137 {
26138 DI opval = tmp_tmp1;
26139 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26140 written |= (1 << 9);
26141 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26142 }
26143 }
26144 }
26145 }
26146 }
26147 }
26148
26149 abuf->written = written;
26150 return vpc;
26151 #undef FLD
26152 }
26153
26154 /* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26155
26156 static SEM_PC
26157 SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26158 {
26159 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26161 int UNUSED written = 0;
26162 IADDR UNUSED pc = abuf->addr;
26163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26164
26165 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26166 {
26167 HI tmp_argihi;
26168 HI tmp_argilo;
26169 HI tmp_argjhi;
26170 HI tmp_argjlo;
26171 {
26172 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26173 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26174 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26175 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26176 }
26177 {
26178 DI tmp_tmp1;
26179 DI tmp_tmp2;
26180 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26181 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26182 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26183 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26184 {
26185 {
26186 DI opval = MAKEDI (127, 0xffffffff);
26187 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26188 written |= (1 << 9);
26189 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26190 }
26191 frvbf_media_overflow (current_cpu, 8);
26192 }
26193 } else {
26194 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26195 {
26196 {
26197 DI opval = MAKEDI (0xffffff80, 0);
26198 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26199 written |= (1 << 9);
26200 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26201 }
26202 frvbf_media_overflow (current_cpu, 8);
26203 }
26204 } else {
26205 {
26206 DI opval = tmp_tmp1;
26207 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26208 written |= (1 << 9);
26209 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26210 }
26211 }
26212 }
26213 }
26214 }
26215 }
26216
26217 abuf->written = written;
26218 return vpc;
26219 #undef FLD
26220 }
26221
26222 /* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26223
26224 static SEM_PC
26225 SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26226 {
26227 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26228 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26229 int UNUSED written = 0;
26230 IADDR UNUSED pc = abuf->addr;
26231 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26232
26233 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26234 {
26235 UHI tmp_argihi;
26236 UHI tmp_argilo;
26237 UHI tmp_argjhi;
26238 UHI tmp_argjlo;
26239 {
26240 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26241 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26242 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26243 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26244 }
26245 {
26246 DI tmp_tmp1;
26247 DI tmp_tmp2;
26248 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26249 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26250 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26251 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26252 {
26253 {
26254 DI opval = MAKEDI (255, 0xffffffff);
26255 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26256 written |= (1 << 9);
26257 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26258 }
26259 frvbf_media_overflow (current_cpu, 8);
26260 }
26261 } else {
26262 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26263 {
26264 {
26265 DI opval = MAKEDI (0, 0);
26266 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26267 written |= (1 << 9);
26268 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26269 }
26270 frvbf_media_overflow (current_cpu, 8);
26271 }
26272 } else {
26273 {
26274 DI opval = tmp_tmp1;
26275 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26276 written |= (1 << 9);
26277 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26278 }
26279 }
26280 }
26281 }
26282 }
26283 }
26284
26285 abuf->written = written;
26286 return vpc;
26287 #undef FLD
26288 }
26289
26290 /* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26291
26292 static SEM_PC
26293 SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26294 {
26295 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26297 int UNUSED written = 0;
26298 IADDR UNUSED pc = abuf->addr;
26299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26300
26301 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26302 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26303 {
26304 HI tmp_argihi;
26305 HI tmp_argilo;
26306 HI tmp_argjhi;
26307 HI tmp_argjlo;
26308 {
26309 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26310 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26311 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26312 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26313 }
26314 {
26315 DI tmp_tmp1;
26316 DI tmp_tmp2;
26317 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26318 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26319 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26320 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26321 {
26322 {
26323 DI opval = MAKEDI (127, 0xffffffff);
26324 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26325 written |= (1 << 11);
26326 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26327 }
26328 frvbf_media_overflow (current_cpu, 8);
26329 }
26330 } else {
26331 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26332 {
26333 {
26334 DI opval = MAKEDI (0xffffff80, 0);
26335 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26336 written |= (1 << 11);
26337 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26338 }
26339 frvbf_media_overflow (current_cpu, 8);
26340 }
26341 } else {
26342 {
26343 DI opval = tmp_tmp1;
26344 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26345 written |= (1 << 11);
26346 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26347 }
26348 }
26349 }
26350 }
26351 }
26352 }
26353 }
26354
26355 abuf->written = written;
26356 return vpc;
26357 #undef FLD
26358 }
26359
26360 /* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26361
26362 static SEM_PC
26363 SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26364 {
26365 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26367 int UNUSED written = 0;
26368 IADDR UNUSED pc = abuf->addr;
26369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26370
26371 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26372 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26373 {
26374 UHI tmp_argihi;
26375 UHI tmp_argilo;
26376 UHI tmp_argjhi;
26377 UHI tmp_argjlo;
26378 {
26379 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26380 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26381 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26382 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26383 }
26384 {
26385 DI tmp_tmp1;
26386 DI tmp_tmp2;
26387 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26388 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26389 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26390 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26391 {
26392 {
26393 DI opval = MAKEDI (255, 0xffffffff);
26394 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26395 written |= (1 << 11);
26396 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26397 }
26398 frvbf_media_overflow (current_cpu, 8);
26399 }
26400 } else {
26401 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26402 {
26403 {
26404 DI opval = MAKEDI (0, 0);
26405 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26406 written |= (1 << 11);
26407 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26408 }
26409 frvbf_media_overflow (current_cpu, 8);
26410 }
26411 } else {
26412 {
26413 DI opval = tmp_tmp1;
26414 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26415 written |= (1 << 11);
26416 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26417 }
26418 }
26419 }
26420 }
26421 }
26422 }
26423 }
26424
26425 abuf->written = written;
26426 return vpc;
26427 #undef FLD
26428 }
26429
26430 /* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26431
26432 static SEM_PC
26433 SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26434 {
26435 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26437 int UNUSED written = 0;
26438 IADDR UNUSED pc = abuf->addr;
26439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26440
26441 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26442 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26443 {
26444 HI tmp_argihi;
26445 HI tmp_argilo;
26446 HI tmp_argjhi;
26447 HI tmp_argjlo;
26448 {
26449 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26450 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26451 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26452 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26453 }
26454 {
26455 DI tmp_tmp1;
26456 DI tmp_tmp2;
26457 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26458 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26459 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26460 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26461 {
26462 {
26463 DI opval = MAKEDI (127, 0xffffffff);
26464 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26465 written |= (1 << 11);
26466 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26467 }
26468 frvbf_media_overflow (current_cpu, 8);
26469 }
26470 } else {
26471 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26472 {
26473 {
26474 DI opval = MAKEDI (0xffffff80, 0);
26475 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26476 written |= (1 << 11);
26477 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26478 }
26479 frvbf_media_overflow (current_cpu, 8);
26480 }
26481 } else {
26482 {
26483 DI opval = tmp_tmp1;
26484 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26485 written |= (1 << 11);
26486 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26487 }
26488 }
26489 }
26490 }
26491 }
26492 }
26493 }
26494
26495 abuf->written = written;
26496 return vpc;
26497 #undef FLD
26498 }
26499
26500 /* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26501
26502 static SEM_PC
26503 SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26504 {
26505 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26507 int UNUSED written = 0;
26508 IADDR UNUSED pc = abuf->addr;
26509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26510
26511 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26512 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26513 {
26514 UHI tmp_argihi;
26515 UHI tmp_argilo;
26516 UHI tmp_argjhi;
26517 UHI tmp_argjlo;
26518 {
26519 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26520 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26521 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26522 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26523 }
26524 {
26525 DI tmp_tmp1;
26526 DI tmp_tmp2;
26527 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26528 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26529 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26530 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26531 {
26532 {
26533 DI opval = MAKEDI (255, 0xffffffff);
26534 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26535 written |= (1 << 11);
26536 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26537 }
26538 frvbf_media_overflow (current_cpu, 8);
26539 }
26540 } else {
26541 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26542 {
26543 {
26544 DI opval = MAKEDI (0, 0);
26545 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26546 written |= (1 << 11);
26547 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26548 }
26549 frvbf_media_overflow (current_cpu, 8);
26550 }
26551 } else {
26552 {
26553 DI opval = tmp_tmp1;
26554 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26555 written |= (1 << 11);
26556 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26557 }
26558 }
26559 }
26560 }
26561 }
26562 }
26563 }
26564
26565 abuf->written = written;
26566 return vpc;
26567 #undef FLD
26568 }
26569
26570 /* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26571
26572 static SEM_PC
26573 SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26574 {
26575 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26576 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26577 int UNUSED written = 0;
26578 IADDR UNUSED pc = abuf->addr;
26579 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26580
26581 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26582 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26583 frvbf_media_acc_not_aligned (current_cpu);
26584 } else {
26585 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26586 frvbf_media_register_not_aligned (current_cpu);
26587 } else {
26588 {
26589 HI tmp_argihi;
26590 HI tmp_argilo;
26591 HI tmp_argjhi;
26592 HI tmp_argjlo;
26593 {
26594 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26595 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26596 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26597 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26598 }
26599 {
26600 DI tmp_tmp1;
26601 DI tmp_tmp2;
26602 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26603 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26604 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26605 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26606 {
26607 {
26608 DI opval = MAKEDI (127, 0xffffffff);
26609 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26610 written |= (1 << 13);
26611 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26612 }
26613 frvbf_media_overflow (current_cpu, 8);
26614 }
26615 } else {
26616 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26617 {
26618 {
26619 DI opval = MAKEDI (0xffffff80, 0);
26620 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26621 written |= (1 << 13);
26622 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26623 }
26624 frvbf_media_overflow (current_cpu, 8);
26625 }
26626 } else {
26627 {
26628 DI opval = tmp_tmp1;
26629 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26630 written |= (1 << 13);
26631 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26632 }
26633 }
26634 }
26635 }
26636 {
26637 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26638 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26639 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26640 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26641 }
26642 {
26643 DI tmp_tmp1;
26644 DI tmp_tmp2;
26645 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26646 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26647 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26648 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26649 {
26650 {
26651 DI opval = MAKEDI (127, 0xffffffff);
26652 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26653 written |= (1 << 14);
26654 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26655 }
26656 frvbf_media_overflow (current_cpu, 4);
26657 }
26658 } else {
26659 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26660 {
26661 {
26662 DI opval = MAKEDI (0xffffff80, 0);
26663 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26664 written |= (1 << 14);
26665 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26666 }
26667 frvbf_media_overflow (current_cpu, 4);
26668 }
26669 } else {
26670 {
26671 DI opval = tmp_tmp1;
26672 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26673 written |= (1 << 14);
26674 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26675 }
26676 }
26677 }
26678 }
26679 }
26680 }
26681 }
26682 }
26683
26684 abuf->written = written;
26685 return vpc;
26686 #undef FLD
26687 }
26688
26689 /* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26690
26691 static SEM_PC
26692 SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26693 {
26694 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26695 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26696 int UNUSED written = 0;
26697 IADDR UNUSED pc = abuf->addr;
26698 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26699
26700 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26701 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26702 frvbf_media_acc_not_aligned (current_cpu);
26703 } else {
26704 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26705 frvbf_media_register_not_aligned (current_cpu);
26706 } else {
26707 {
26708 UHI tmp_argihi;
26709 UHI tmp_argilo;
26710 UHI tmp_argjhi;
26711 UHI tmp_argjlo;
26712 {
26713 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26714 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26715 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26716 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26717 }
26718 {
26719 DI tmp_tmp1;
26720 DI tmp_tmp2;
26721 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26722 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26723 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26724 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26725 {
26726 {
26727 DI opval = MAKEDI (255, 0xffffffff);
26728 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26729 written |= (1 << 13);
26730 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26731 }
26732 frvbf_media_overflow (current_cpu, 8);
26733 }
26734 } else {
26735 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26736 {
26737 {
26738 DI opval = MAKEDI (0, 0);
26739 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26740 written |= (1 << 13);
26741 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26742 }
26743 frvbf_media_overflow (current_cpu, 8);
26744 }
26745 } else {
26746 {
26747 DI opval = tmp_tmp1;
26748 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26749 written |= (1 << 13);
26750 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26751 }
26752 }
26753 }
26754 }
26755 {
26756 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26757 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26758 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26759 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26760 }
26761 {
26762 DI tmp_tmp1;
26763 DI tmp_tmp2;
26764 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26765 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26766 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26767 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26768 {
26769 {
26770 DI opval = MAKEDI (255, 0xffffffff);
26771 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26772 written |= (1 << 14);
26773 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26774 }
26775 frvbf_media_overflow (current_cpu, 4);
26776 }
26777 } else {
26778 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26779 {
26780 {
26781 DI opval = MAKEDI (0, 0);
26782 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26783 written |= (1 << 14);
26784 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26785 }
26786 frvbf_media_overflow (current_cpu, 4);
26787 }
26788 } else {
26789 {
26790 DI opval = tmp_tmp1;
26791 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26792 written |= (1 << 14);
26793 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26794 }
26795 }
26796 }
26797 }
26798 }
26799 }
26800 }
26801 }
26802
26803 abuf->written = written;
26804 return vpc;
26805 #undef FLD
26806 }
26807
26808 /* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26809
26810 static SEM_PC
26811 SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26812 {
26813 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26815 int UNUSED written = 0;
26816 IADDR UNUSED pc = abuf->addr;
26817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26818
26819 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26820 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26821 frvbf_media_acc_not_aligned (current_cpu);
26822 } else {
26823 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26824 frvbf_media_register_not_aligned (current_cpu);
26825 } else {
26826 {
26827 HI tmp_argihi;
26828 HI tmp_argilo;
26829 HI tmp_argjhi;
26830 HI tmp_argjlo;
26831 {
26832 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26833 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26834 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26835 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26836 }
26837 {
26838 DI tmp_tmp1;
26839 DI tmp_tmp2;
26840 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26841 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26842 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26843 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26844 {
26845 {
26846 DI opval = MAKEDI (127, 0xffffffff);
26847 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26848 written |= (1 << 13);
26849 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26850 }
26851 frvbf_media_overflow (current_cpu, 8);
26852 }
26853 } else {
26854 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26855 {
26856 {
26857 DI opval = MAKEDI (0xffffff80, 0);
26858 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26859 written |= (1 << 13);
26860 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26861 }
26862 frvbf_media_overflow (current_cpu, 8);
26863 }
26864 } else {
26865 {
26866 DI opval = tmp_tmp1;
26867 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26868 written |= (1 << 13);
26869 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26870 }
26871 }
26872 }
26873 }
26874 {
26875 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26876 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26877 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26878 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26879 }
26880 {
26881 DI tmp_tmp1;
26882 DI tmp_tmp2;
26883 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26884 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26885 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26886 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26887 {
26888 {
26889 DI opval = MAKEDI (127, 0xffffffff);
26890 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26891 written |= (1 << 14);
26892 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26893 }
26894 frvbf_media_overflow (current_cpu, 4);
26895 }
26896 } else {
26897 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26898 {
26899 {
26900 DI opval = MAKEDI (0xffffff80, 0);
26901 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26902 written |= (1 << 14);
26903 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26904 }
26905 frvbf_media_overflow (current_cpu, 4);
26906 }
26907 } else {
26908 {
26909 DI opval = tmp_tmp1;
26910 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26911 written |= (1 << 14);
26912 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26913 }
26914 }
26915 }
26916 }
26917 }
26918 }
26919 }
26920 }
26921
26922 abuf->written = written;
26923 return vpc;
26924 #undef FLD
26925 }
26926
26927 /* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
26928
26929 static SEM_PC
26930 SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26931 {
26932 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26934 int UNUSED written = 0;
26935 IADDR UNUSED pc = abuf->addr;
26936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26937
26938 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26939 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26940 frvbf_media_acc_not_aligned (current_cpu);
26941 } else {
26942 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26943 frvbf_media_register_not_aligned (current_cpu);
26944 } else {
26945 {
26946 UHI tmp_argihi;
26947 UHI tmp_argilo;
26948 UHI tmp_argjhi;
26949 UHI tmp_argjlo;
26950 {
26951 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26952 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26953 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26954 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26955 }
26956 {
26957 DI tmp_tmp1;
26958 DI tmp_tmp2;
26959 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26960 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26961 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26962 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26963 {
26964 {
26965 DI opval = MAKEDI (255, 0xffffffff);
26966 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26967 written |= (1 << 13);
26968 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26969 }
26970 frvbf_media_overflow (current_cpu, 8);
26971 }
26972 } else {
26973 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26974 {
26975 {
26976 DI opval = MAKEDI (0, 0);
26977 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26978 written |= (1 << 13);
26979 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26980 }
26981 frvbf_media_overflow (current_cpu, 8);
26982 }
26983 } else {
26984 {
26985 DI opval = tmp_tmp1;
26986 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26987 written |= (1 << 13);
26988 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26989 }
26990 }
26991 }
26992 }
26993 {
26994 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26995 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26996 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26997 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26998 }
26999 {
27000 DI tmp_tmp1;
27001 DI tmp_tmp2;
27002 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27003 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27004 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27005 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27006 {
27007 {
27008 DI opval = MAKEDI (255, 0xffffffff);
27009 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27010 written |= (1 << 14);
27011 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27012 }
27013 frvbf_media_overflow (current_cpu, 4);
27014 }
27015 } else {
27016 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27017 {
27018 {
27019 DI opval = MAKEDI (0, 0);
27020 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27021 written |= (1 << 14);
27022 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27023 }
27024 frvbf_media_overflow (current_cpu, 4);
27025 }
27026 } else {
27027 {
27028 DI opval = tmp_tmp1;
27029 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27030 written |= (1 << 14);
27031 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27032 }
27033 }
27034 }
27035 }
27036 }
27037 }
27038 }
27039 }
27040
27041 abuf->written = written;
27042 return vpc;
27043 #undef FLD
27044 }
27045
27046 /* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27047
27048 static SEM_PC
27049 SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27050 {
27051 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27052 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27053 int UNUSED written = 0;
27054 IADDR UNUSED pc = abuf->addr;
27055 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27056
27057 {
27058 UHI tmp_tmp;
27059 if (ANDSI (FLD (f_u6), 1)) {
27060 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27061 } else {
27062 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27063 }
27064 {
27065 UHI opval = tmp_tmp;
27066 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27067 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27068 }
27069 {
27070 UHI opval = tmp_tmp;
27071 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27072 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27073 }
27074 }
27075
27076 return vpc;
27077 #undef FLD
27078 }
27079
27080 /* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27081
27082 static SEM_PC
27083 SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27084 {
27085 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27086 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27087 int UNUSED written = 0;
27088 IADDR UNUSED pc = abuf->addr;
27089 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27090
27091 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27092 {
27093 UHI tmp_tmp;
27094 if (ANDSI (FLD (f_u6), 1)) {
27095 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27096 } else {
27097 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27098 }
27099 {
27100 UHI opval = tmp_tmp;
27101 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27102 written |= (1 << 7);
27103 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27104 }
27105 {
27106 UHI opval = tmp_tmp;
27107 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27108 written |= (1 << 8);
27109 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27110 }
27111 }
27112 }
27113
27114 abuf->written = written;
27115 return vpc;
27116 #undef FLD
27117 }
27118
27119 /* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27120
27121 static SEM_PC
27122 SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27123 {
27124 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27126 int UNUSED written = 0;
27127 IADDR UNUSED pc = abuf->addr;
27128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27129
27130 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27131 frvbf_media_register_not_aligned (current_cpu);
27132 } else {
27133 {
27134 UHI tmp_tmp;
27135 {
27136 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27137 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27138 written |= (1 << 6);
27139 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27140 }
27141 if (ANDSI (FLD (f_u6), 1)) {
27142 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27143 } else {
27144 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27145 }
27146 {
27147 UHI opval = tmp_tmp;
27148 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27149 written |= (1 << 7);
27150 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27151 }
27152 {
27153 UHI opval = tmp_tmp;
27154 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27155 written |= (1 << 9);
27156 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27157 }
27158 {
27159 UHI opval = tmp_tmp;
27160 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27161 written |= (1 << 8);
27162 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27163 }
27164 {
27165 UHI opval = tmp_tmp;
27166 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27167 written |= (1 << 10);
27168 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27169 }
27170 }
27171 }
27172
27173 abuf->written = written;
27174 return vpc;
27175 #undef FLD
27176 }
27177
27178 /* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27179
27180 static SEM_PC
27181 SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27182 {
27183 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27185 int UNUSED written = 0;
27186 IADDR UNUSED pc = abuf->addr;
27187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27188
27189 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27190 frvbf_media_register_not_aligned (current_cpu);
27191 } else {
27192 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27193 {
27194 UHI tmp_tmp;
27195 {
27196 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27197 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27198 written |= (1 << 8);
27199 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27200 }
27201 if (ANDSI (FLD (f_u6), 1)) {
27202 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27203 } else {
27204 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27205 }
27206 {
27207 UHI opval = tmp_tmp;
27208 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27209 written |= (1 << 9);
27210 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27211 }
27212 {
27213 UHI opval = tmp_tmp;
27214 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27215 written |= (1 << 11);
27216 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27217 }
27218 {
27219 UHI opval = tmp_tmp;
27220 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27221 written |= (1 << 10);
27222 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27223 }
27224 {
27225 UHI opval = tmp_tmp;
27226 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27227 written |= (1 << 12);
27228 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27229 }
27230 }
27231 }
27232 }
27233
27234 abuf->written = written;
27235 return vpc;
27236 #undef FLD
27237 }
27238
27239 /* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27240
27241 static SEM_PC
27242 SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27243 {
27244 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
27245 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27246 int UNUSED written = 0;
27247 IADDR UNUSED pc = abuf->addr;
27248 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27249
27250 {
27251 {
27252 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27253 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27254 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27255 }
27256 {
27257 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27258 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27259 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27260 }
27261 }
27262
27263 return vpc;
27264 #undef FLD
27265 }
27266
27267 /* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27268
27269 static SEM_PC
27270 SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27271 {
27272 #define FLD(f) abuf->fields.sfmt_mdpackh.f
27273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27274 int UNUSED written = 0;
27275 IADDR UNUSED pc = abuf->addr;
27276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27277
27278 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27279 frvbf_media_register_not_aligned (current_cpu);
27280 } else {
27281 {
27282 {
27283 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27284 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27285 written |= (1 << 10);
27286 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27287 }
27288 {
27289 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27290 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27291 written |= (1 << 11);
27292 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27293 }
27294 {
27295 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27296 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27297 written |= (1 << 12);
27298 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27299 }
27300 {
27301 {
27302 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27303 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27304 written |= (1 << 13);
27305 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27306 }
27307 {
27308 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27309 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27310 written |= (1 << 15);
27311 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27312 }
27313 }
27314 {
27315 {
27316 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27317 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27318 written |= (1 << 14);
27319 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27320 }
27321 {
27322 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27323 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27324 written |= (1 << 16);
27325 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27326 }
27327 }
27328 }
27329 }
27330
27331 abuf->written = written;
27332 return vpc;
27333 #undef FLD
27334 }
27335
27336 /* munpackh: munpackh$pack $FRinti,$FRintkeven */
27337
27338 static SEM_PC
27339 SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27340 {
27341 #define FLD(f) abuf->fields.sfmt_munpackh.f
27342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27343 int UNUSED written = 0;
27344 IADDR UNUSED pc = abuf->addr;
27345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27346
27347 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27348 frvbf_media_register_not_aligned (current_cpu);
27349 } else {
27350 {
27351 {
27352 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27353 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27354 written |= (1 << 6);
27355 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27356 }
27357 {
27358 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27359 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27360 written |= (1 << 7);
27361 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27362 }
27363 {
27364 {
27365 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27366 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27367 written |= (1 << 8);
27368 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27369 }
27370 {
27371 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27372 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27373 written |= (1 << 10);
27374 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27375 }
27376 {
27377 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27378 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27379 written |= (1 << 9);
27380 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27381 }
27382 {
27383 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27384 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27385 written |= (1 << 11);
27386 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27387 }
27388 }
27389 }
27390 }
27391
27392 abuf->written = written;
27393 return vpc;
27394 #undef FLD
27395 }
27396
27397 /* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27398
27399 static SEM_PC
27400 SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27401 {
27402 #define FLD(f) abuf->fields.sfmt_mdunpackh.f
27403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27404 int UNUSED written = 0;
27405 IADDR UNUSED pc = abuf->addr;
27406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27407
27408 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27409 frvbf_media_register_not_aligned (current_cpu);
27410 } else {
27411 {
27412 {
27413 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27414 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27415 written |= (1 << 8);
27416 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27417 }
27418 {
27419 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27420 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27421 written |= (1 << 9);
27422 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27423 }
27424 {
27425 {
27426 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27427 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27428 written |= (1 << 10);
27429 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27430 }
27431 {
27432 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27433 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27434 written |= (1 << 14);
27435 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27436 }
27437 {
27438 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27439 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27440 written |= (1 << 12);
27441 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27442 }
27443 {
27444 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27445 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27446 written |= (1 << 16);
27447 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27448 }
27449 }
27450 {
27451 {
27452 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27453 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27454 written |= (1 << 11);
27455 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27456 }
27457 {
27458 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27459 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27460 written |= (1 << 15);
27461 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27462 }
27463 {
27464 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27465 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27466 written |= (1 << 13);
27467 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27468 }
27469 {
27470 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27471 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27472 written |= (1 << 17);
27473 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27474 }
27475 }
27476 }
27477 }
27478
27479 abuf->written = written;
27480 return vpc;
27481 #undef FLD
27482 }
27483
27484 /* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27485
27486 static SEM_PC
27487 SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27488 {
27489 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27491 int UNUSED written = 0;
27492 IADDR UNUSED pc = abuf->addr;
27493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27494
27495 {
27496 {
27497 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27498 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27499 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27500 }
27501 {
27502 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27503 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27504 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27505 }
27506 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27507 frvbf_media_register_not_aligned (current_cpu);
27508 } else {
27509 {
27510 {
27511 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27512 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27513 written |= (1 << 10);
27514 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27515 }
27516 {
27517 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27518 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27519 written |= (1 << 12);
27520 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27521 }
27522 {
27523 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27524 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27525 written |= (1 << 11);
27526 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27527 }
27528 {
27529 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27530 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27531 written |= (1 << 13);
27532 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27533 }
27534 }
27535 }
27536 }
27537
27538 abuf->written = written;
27539 return vpc;
27540 #undef FLD
27541 }
27542
27543 /* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27544
27545 static SEM_PC
27546 SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27547 {
27548 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27550 int UNUSED written = 0;
27551 IADDR UNUSED pc = abuf->addr;
27552 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27553
27554 {
27555 {
27556 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27557 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27558 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27559 }
27560 {
27561 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27562 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27563 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27564 }
27565 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27566 frvbf_media_register_not_aligned (current_cpu);
27567 } else {
27568 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27569 {
27570 {
27571 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27572 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27573 written |= (1 << 12);
27574 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27575 }
27576 {
27577 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27578 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27579 written |= (1 << 14);
27580 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27581 }
27582 {
27583 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27584 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27585 written |= (1 << 13);
27586 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27587 }
27588 {
27589 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27590 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27591 written |= (1 << 15);
27592 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27593 }
27594 }
27595 }
27596 }
27597 }
27598
27599 abuf->written = written;
27600 return vpc;
27601 #undef FLD
27602 }
27603
27604 /* mhtob: mhtob$pack $FRintjeven,$FRintk */
27605
27606 static SEM_PC
27607 SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27608 {
27609 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27611 int UNUSED written = 0;
27612 IADDR UNUSED pc = abuf->addr;
27613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27614
27615 {
27616 {
27617 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27618 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27619 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27620 }
27621 {
27622 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27623 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27624 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27625 }
27626 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27627 frvbf_media_register_not_aligned (current_cpu);
27628 } else {
27629 {
27630 {
27631 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27632 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27633 written |= (1 << 13);
27634 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27635 }
27636 {
27637 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27638 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27639 written |= (1 << 12);
27640 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27641 }
27642 {
27643 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27644 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27645 written |= (1 << 11);
27646 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27647 }
27648 {
27649 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27650 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27651 written |= (1 << 10);
27652 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27653 }
27654 }
27655 }
27656 }
27657
27658 abuf->written = written;
27659 return vpc;
27660 #undef FLD
27661 }
27662
27663 /* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27664
27665 static SEM_PC
27666 SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27667 {
27668 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27670 int UNUSED written = 0;
27671 IADDR UNUSED pc = abuf->addr;
27672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27673
27674 {
27675 {
27676 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27677 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27678 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27679 }
27680 {
27681 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27683 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27684 }
27685 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27686 frvbf_media_register_not_aligned (current_cpu);
27687 } else {
27688 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27689 {
27690 {
27691 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27692 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27693 written |= (1 << 15);
27694 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27695 }
27696 {
27697 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27698 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27699 written |= (1 << 14);
27700 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27701 }
27702 {
27703 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27704 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27705 written |= (1 << 13);
27706 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27707 }
27708 {
27709 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27710 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27711 written |= (1 << 12);
27712 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27713 }
27714 }
27715 }
27716 }
27717 }
27718
27719 abuf->written = written;
27720 return vpc;
27721 #undef FLD
27722 }
27723
27724 /* mbtohe: mbtohe$pack $FRintj,$FRintk */
27725
27726 static SEM_PC
27727 SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27728 {
27729 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27731 int UNUSED written = 0;
27732 IADDR UNUSED pc = abuf->addr;
27733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27734
27735 {
27736 {
27737 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27738 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27739 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27740 }
27741 {
27742 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27743 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27744 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27745 }
27746 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27747 frvbf_media_register_not_aligned (current_cpu);
27748 } else {
27749 {
27750 {
27751 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27752 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27753 written |= (1 << 10);
27754 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27755 }
27756 {
27757 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27758 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27759 written |= (1 << 14);
27760 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27761 }
27762 {
27763 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27764 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27765 written |= (1 << 11);
27766 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27767 }
27768 {
27769 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27770 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27771 written |= (1 << 15);
27772 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27773 }
27774 {
27775 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27776 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27777 written |= (1 << 12);
27778 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27779 }
27780 {
27781 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27782 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27783 written |= (1 << 16);
27784 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27785 }
27786 {
27787 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27788 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27789 written |= (1 << 13);
27790 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27791 }
27792 {
27793 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27794 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27795 written |= (1 << 17);
27796 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27797 }
27798 }
27799 }
27800 }
27801
27802 abuf->written = written;
27803 return vpc;
27804 #undef FLD
27805 }
27806
27807 /* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27808
27809 static SEM_PC
27810 SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27811 {
27812 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27814 int UNUSED written = 0;
27815 IADDR UNUSED pc = abuf->addr;
27816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27817
27818 {
27819 {
27820 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27821 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27822 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27823 }
27824 {
27825 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27826 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27827 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27828 }
27829 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27830 frvbf_media_register_not_aligned (current_cpu);
27831 } else {
27832 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27833 {
27834 {
27835 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27836 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27837 written |= (1 << 12);
27838 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27839 }
27840 {
27841 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27842 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27843 written |= (1 << 16);
27844 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27845 }
27846 {
27847 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27848 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27849 written |= (1 << 13);
27850 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27851 }
27852 {
27853 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27854 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27855 written |= (1 << 17);
27856 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27857 }
27858 {
27859 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27860 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27861 written |= (1 << 14);
27862 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27863 }
27864 {
27865 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27866 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27867 written |= (1 << 18);
27868 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27869 }
27870 {
27871 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27872 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27873 written |= (1 << 15);
27874 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27875 }
27876 {
27877 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27878 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27879 written |= (1 << 19);
27880 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27881 }
27882 }
27883 }
27884 }
27885 }
27886
27887 abuf->written = written;
27888 return vpc;
27889 #undef FLD
27890 }
27891
27892 /* mnop: mnop$pack */
27893
27894 static SEM_PC
27895 SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27896 {
27897 #define FLD(f) abuf->fields.fmt_empty.f
27898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27899 int UNUSED written = 0;
27900 IADDR UNUSED pc = abuf->addr;
27901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27902
27903 ((void) 0); /*nop*/
27904
27905 return vpc;
27906 #undef FLD
27907 }
27908
27909 /* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27910
27911 static SEM_PC
27912 SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27913 {
27914 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
27915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27916 int UNUSED written = 0;
27917 IADDR UNUSED pc = abuf->addr;
27918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27919
27920 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
27921
27922 return vpc;
27923 #undef FLD
27924 }
27925
27926 /* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
27927
27928 static SEM_PC
27929 SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27930 {
27931 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
27932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27933 int UNUSED written = 0;
27934 IADDR UNUSED pc = abuf->addr;
27935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27936
27937 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
27938
27939 return vpc;
27940 #undef FLD
27941 }
27942
27943 /* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
27944
27945 static SEM_PC
27946 SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27947 {
27948 #define FLD(f) abuf->fields.sfmt_mcuti.f
27949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27950 int UNUSED written = 0;
27951 IADDR UNUSED pc = abuf->addr;
27952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27953
27954 {
27955 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
27956 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27957 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27958 }
27959
27960 return vpc;
27961 #undef FLD
27962 }
27963
27964 /* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
27965
27966 static SEM_PC
27967 SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27968 {
27969 #define FLD(f) abuf->fields.sfmt_mrdaccg.f
27970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27971 int UNUSED written = 0;
27972 IADDR UNUSED pc = abuf->addr;
27973 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27974
27975 {
27976 SI opval = GET_H_ACCG (FLD (f_ACCGi));
27977 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27978 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27979 }
27980
27981 return vpc;
27982 #undef FLD
27983 }
27984
27985 /* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
27986
27987 static SEM_PC
27988 SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27989 {
27990 #define FLD(f) abuf->fields.sfmt_cmmachs.f
27991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27992 int UNUSED written = 0;
27993 IADDR UNUSED pc = abuf->addr;
27994 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27995
27996 {
27997 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
27998 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27999 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28000 }
28001
28002 return vpc;
28003 #undef FLD
28004 }
28005
28006 /* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28007
28008 static SEM_PC
28009 SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28010 {
28011 #define FLD(f) abuf->fields.sfmt_mwtaccg.f
28012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28013 int UNUSED written = 0;
28014 IADDR UNUSED pc = abuf->addr;
28015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28016
28017 {
28018 frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
28019 {
28020 USI opval = GET_H_FR_INT (FLD (f_FRi));
28021 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28022 TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28023 }
28024 }
28025
28026 return vpc;
28027 #undef FLD
28028 }
28029
28030 /* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28031
28032 static SEM_PC
28033 SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28034 {
28035 #define FLD(f) abuf->fields.fmt_empty.f
28036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28037 int UNUSED written = 0;
28038 IADDR UNUSED pc = abuf->addr;
28039 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28040
28041 frvbf_media_cop (current_cpu, 1);
28042
28043 return vpc;
28044 #undef FLD
28045 }
28046
28047 /* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28048
28049 static SEM_PC
28050 SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28051 {
28052 #define FLD(f) abuf->fields.fmt_empty.f
28053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28054 int UNUSED written = 0;
28055 IADDR UNUSED pc = abuf->addr;
28056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28057
28058 frvbf_media_cop (current_cpu, 2);
28059
28060 return vpc;
28061 #undef FLD
28062 }
28063
28064 /* fnop: fnop$pack */
28065
28066 static SEM_PC
28067 SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28068 {
28069 #define FLD(f) abuf->fields.fmt_empty.f
28070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28071 int UNUSED written = 0;
28072 IADDR UNUSED pc = abuf->addr;
28073 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28074
28075 ((void) 0); /*nop*/
28076
28077 return vpc;
28078 #undef FLD
28079 }
28080
28081 /* Table of all semantic fns. */
28082
28083 static const struct sem_fn_desc sem_fns[] = {
28084 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28085 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28086 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28087 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28088 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28089 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28090 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28091 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28092 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28093 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28094 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28095 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28096 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28097 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28098 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28099 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28100 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28101 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
28102 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28103 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28104 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
28105 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28106 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28107 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
28108 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28109 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
28110 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28111 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28112 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28113 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28114 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28115 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28116 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28117 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28118 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28119 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28120 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28121 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28122 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28123 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28124 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28125 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28126 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28127 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28128 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28129 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28130 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28131 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28132 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28133 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28134 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28135 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28136 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28137 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28138 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28139 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28140 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28141 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28142 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28143 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28144 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28145 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28146 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
28147 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28148 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
28149 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28150 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28151 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28152 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28153 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28154 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28155 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28156 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28157 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28158 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28159 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28160 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28161 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28162 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28163 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28164 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28165 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28166 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28167 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28168 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28169 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28170 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28171 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28172 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28173 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28174 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28175 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28176 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28177 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28178 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28179 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28180 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28181 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28182 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28183 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28184 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28185 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28186 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28187 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28188 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28189 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28190 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28191 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28192 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28193 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28194 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28195 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28196 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28197 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28198 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28199 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28200 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28201 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28202 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28203 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28204 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28205 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28206 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28207 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28208 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28209 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28210 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28211 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28212 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28213 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28214 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28215 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28216 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28217 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28218 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28219 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28220 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28221 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28222 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28223 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28224 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28225 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28226 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28227 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28228 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28229 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28230 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28231 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28232 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28233 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28234 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28235 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28236 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28237 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28238 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28239 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28240 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28241 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28242 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28243 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28244 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28245 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28246 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28247 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28248 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28249 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28250 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28251 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28252 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28253 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28254 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28255 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28256 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28257 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28258 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
28259 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28260 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28261 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28262 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28263 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28264 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28265 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28266 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
28267 { FRVBF_INSN_RSTB, SEM_FN_NAME (frvbf,rstb) },
28268 { FRVBF_INSN_RSTH, SEM_FN_NAME (frvbf,rsth) },
28269 { FRVBF_INSN_RST, SEM_FN_NAME (frvbf,rst) },
28270 { FRVBF_INSN_RSTBF, SEM_FN_NAME (frvbf,rstbf) },
28271 { FRVBF_INSN_RSTHF, SEM_FN_NAME (frvbf,rsthf) },
28272 { FRVBF_INSN_RSTF, SEM_FN_NAME (frvbf,rstf) },
28273 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28274 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28275 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
28276 { FRVBF_INSN_RSTD, SEM_FN_NAME (frvbf,rstd) },
28277 { FRVBF_INSN_RSTDF, SEM_FN_NAME (frvbf,rstdf) },
28278 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28279 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28280 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
28281 { FRVBF_INSN_RSTQ, SEM_FN_NAME (frvbf,rstq) },
28282 { FRVBF_INSN_RSTQF, SEM_FN_NAME (frvbf,rstqf) },
28283 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28284 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28285 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28286 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28287 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28288 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28289 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28290 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28291 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28292 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28293 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28294 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28295 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28296 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28297 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28298 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28299 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28300 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28301 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28302 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28303 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28304 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28305 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28306 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28307 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28308 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28309 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28310 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28311 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28312 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28313 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28314 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28315 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28316 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28317 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28318 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28319 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28320 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28321 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28322 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28323 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28324 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28325 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28326 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28327 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28328 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28329 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28330 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28331 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28332 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28333 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28334 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28335 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28336 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28337 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28338 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28339 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28340 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28341 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28342 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28343 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28344 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28345 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28346 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28347 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28348 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28349 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28350 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28351 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28352 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28353 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28354 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28355 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28356 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28357 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28358 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28359 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28360 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28361 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28362 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28363 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28364 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28365 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28366 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28367 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28368 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28369 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28370 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28371 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28372 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28373 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28374 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28375 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28376 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28377 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28378 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28379 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28380 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28381 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28382 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28383 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28384 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28385 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28386 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28387 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28388 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28389 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28390 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28391 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28392 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28393 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28394 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28395 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28396 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28397 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28398 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28399 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28400 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28401 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28402 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28403 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28404 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28405 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28406 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28407 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28408 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28409 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28410 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28411 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28412 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28413 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28414 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28415 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28416 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28417 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28418 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28419 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28420 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28421 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28422 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28423 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28424 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28425 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28426 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28427 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28428 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28429 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28430 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28431 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28432 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28433 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28434 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28435 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28436 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28437 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28438 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28439 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28440 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28441 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28442 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28443 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28444 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28445 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28446 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28447 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28448 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28449 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28450 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28451 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28452 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28453 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28454 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28455 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28456 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28457 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28458 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28459 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28460 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28461 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28462 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28463 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28464 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28465 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28466 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28467 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28468 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28469 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28470 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28471 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28472 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28473 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28474 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28475 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28476 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28477 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28478 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28479 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28480 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28481 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28482 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28483 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28484 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28485 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28486 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28487 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28488 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28489 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28490 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28491 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28492 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28493 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28494 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28495 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28496 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28497 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28498 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28499 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28500 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28501 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28502 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28503 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28504 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28505 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28506 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28507 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28508 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28509 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28510 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28511 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28512 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28513 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28514 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28515 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28516 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28517 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28518 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28519 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28520 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28521 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28522 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28523 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28524 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28525 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28526 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28527 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28528 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28529 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28530 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28531 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28532 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28533 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28534 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28535 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28536 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28537 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28538 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28539 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28540 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28541 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28542 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28543 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28544 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28545 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28546 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28547 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28548 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28549 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28550 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28551 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28552 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28553 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28554 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28555 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28556 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28557 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28558 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28559 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28560 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28561 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28562 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28563 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28564 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28565 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28566 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28567 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28568 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28569 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28570 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28571 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28572 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28573 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28574 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28575 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28576 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28577 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28578 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28579 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28580 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28581 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28582 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28583 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28584 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28585 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28586 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28587 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28588 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28589 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28590 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28591 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28592 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28593 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28594 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28595 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28596 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28597 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28598 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28599 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28600 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28601 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28602 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28603 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28604 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28605 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28606 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28607 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28608 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28609 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28610 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28611 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28612 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28613 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28614 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28615 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28616 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28617 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28618 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28619 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28620 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28621 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
28622 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28623 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28624 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28625 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28626 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28627 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28628 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28629 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28630 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28631 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28632 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28633 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28634 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28635 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28636 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28637 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28638 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28639 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28640 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28641 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28642 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28643 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28644 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28645 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28646 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28647 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28648 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28649 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28650 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28651 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28652 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28653 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28654 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28655 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28656 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28657 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28658 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28659 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28660 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28661 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28662 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28663 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28664 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28665 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28666 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28667 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28668 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28669 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28670 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28671 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28672 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28673 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28674 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28675 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28676 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28677 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28678 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28679 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28680 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28681 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28682 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28683 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28684 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28685 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28686 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28687 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28688 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28689 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28690 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28691 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28692 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28693 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28694 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28695 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28696 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28697 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28698 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28699 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28700 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28701 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28702 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28703 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28704 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28705 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28706 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28707 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28708 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28709 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28710 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28711 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28712 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28713 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28714 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28715 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28716 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28717 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28718 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28719 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28720 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28721 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28722 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28723 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28724 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28725 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28726 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28727 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28728 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28729 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28730 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28731 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28732 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28733 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28734 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28735 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28736 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28737 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28738 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28739 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28740 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28741 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28742 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28743 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28744 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28745 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28746 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28747 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28748 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28749 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28750 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28751 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28752 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28753 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28754 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28755 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28756 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28757 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28758 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28759 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28760 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28761 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28762 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28763 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28764 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28765 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28766 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28767 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28768 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
28769 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28770 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28771 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28772 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28773 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28774 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28775 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28776 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28777 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28778 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28779 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28780 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28781 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28782 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28783 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28784 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28785 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28786 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28787 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28788 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28789 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28790 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28791 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28792 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28793 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28794 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28795 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28796 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28797 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28798 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28799 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28800 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28801 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28802 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28803 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28804 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28805 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28806 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28807 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28808 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28809 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28810 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28811 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28812 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28813 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28814 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28815 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28816 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28817 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28818 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28819 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28820 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28821 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28822 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28823 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28824 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28825 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
28826 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28827 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28828 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
28829 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28830 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28831 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28832 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28833 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28834 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28835 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28836 { 0, 0 }
28837 };
28838
28839 /* Add the semantic fns to IDESC_TABLE. */
28840
28841 void
28842 SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28843 {
28844 IDESC *idesc_table = CPU_IDESC (current_cpu);
28845 const struct sem_fn_desc *sf;
28846 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28847
28848 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28849 {
28850 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28851 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28852 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28853 #if FAST_P
28854 if (valid_p)
28855 idesc_table[sf->index].sem_fast = sf->fn;
28856 else
28857 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28858 #else
28859 if (valid_p)
28860 idesc_table[sf->index].sem_full = sf->fn;
28861 else
28862 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28863 #endif
28864 }
28865 }
28866