]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/frv/sem.c
Switch the license of all files explicitly copyright the FSF
[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-2005 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 3 of the License, or
12 (at your option) 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
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
21
22 */
23
24 #define WANT_CPU frvbf
25 #define WANT_CPU_FRVBF
26
27 #include "sim-main.h"
28 #include "cgen-mem.h"
29 #include "cgen-ops.h"
30
31 #undef GET_ATTR
32 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
33 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
34 #else
35 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_/**/attr)
36 #endif
37
38 /* This is used so that we can compile two copies of the semantic code,
39 one with full feature support and one without that runs fast(er).
40 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
41 #if FAST_P
42 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
43 #undef TRACE_RESULT
44 #define TRACE_RESULT(cpu, abuf, name, type, val)
45 #else
46 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
47 #endif
48
49 /* x-invalid: --invalid-- */
50
51 static SEM_PC
52 SEM_FN_NAME (frvbf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
53 {
54 #define FLD(f) abuf->fields.fmt_empty.f
55 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
56 int UNUSED written = 0;
57 IADDR UNUSED pc = abuf->addr;
58 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
59
60 {
61 /* Update the recorded pc in the cpu state struct.
62 Only necessary for WITH_SCACHE case, but to avoid the
63 conditional compilation .... */
64 SET_H_PC (pc);
65 /* Virtual insns have zero size. Overwrite vpc with address of next insn
66 using the default-insn-bitsize spec. When executing insns in parallel
67 we may want to queue the fault and continue execution. */
68 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
69 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
70 }
71
72 return vpc;
73 #undef FLD
74 }
75
76 /* x-after: --after-- */
77
78 static SEM_PC
79 SEM_FN_NAME (frvbf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
80 {
81 #define FLD(f) abuf->fields.fmt_empty.f
82 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
83 int UNUSED written = 0;
84 IADDR UNUSED pc = abuf->addr;
85 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
86
87 {
88 #if WITH_SCACHE_PBB_FRVBF
89 frvbf_pbb_after (current_cpu, sem_arg);
90 #endif
91 }
92
93 return vpc;
94 #undef FLD
95 }
96
97 /* x-before: --before-- */
98
99 static SEM_PC
100 SEM_FN_NAME (frvbf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
101 {
102 #define FLD(f) abuf->fields.fmt_empty.f
103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
104 int UNUSED written = 0;
105 IADDR UNUSED pc = abuf->addr;
106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
107
108 {
109 #if WITH_SCACHE_PBB_FRVBF
110 frvbf_pbb_before (current_cpu, sem_arg);
111 #endif
112 }
113
114 return vpc;
115 #undef FLD
116 }
117
118 /* x-cti-chain: --cti-chain-- */
119
120 static SEM_PC
121 SEM_FN_NAME (frvbf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
122 {
123 #define FLD(f) abuf->fields.fmt_empty.f
124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
125 int UNUSED written = 0;
126 IADDR UNUSED pc = abuf->addr;
127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
128
129 {
130 #if WITH_SCACHE_PBB_FRVBF
131 #ifdef DEFINE_SWITCH
132 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
133 pbb_br_type, pbb_br_npc);
134 BREAK (sem);
135 #else
136 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
137 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
138 CPU_PBB_BR_TYPE (current_cpu),
139 CPU_PBB_BR_NPC (current_cpu));
140 #endif
141 #endif
142 }
143
144 return vpc;
145 #undef FLD
146 }
147
148 /* x-chain: --chain-- */
149
150 static SEM_PC
151 SEM_FN_NAME (frvbf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
152 {
153 #define FLD(f) abuf->fields.fmt_empty.f
154 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
155 int UNUSED written = 0;
156 IADDR UNUSED pc = abuf->addr;
157 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
158
159 {
160 #if WITH_SCACHE_PBB_FRVBF
161 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
162 #ifdef DEFINE_SWITCH
163 BREAK (sem);
164 #endif
165 #endif
166 }
167
168 return vpc;
169 #undef FLD
170 }
171
172 /* x-begin: --begin-- */
173
174 static SEM_PC
175 SEM_FN_NAME (frvbf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
176 {
177 #define FLD(f) abuf->fields.fmt_empty.f
178 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
179 int UNUSED written = 0;
180 IADDR UNUSED pc = abuf->addr;
181 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
182
183 {
184 #if WITH_SCACHE_PBB_FRVBF
185 #if defined DEFINE_SWITCH || defined FAST_P
186 /* In the switch case FAST_P is a constant, allowing several optimizations
187 in any called inline functions. */
188 vpc = frvbf_pbb_begin (current_cpu, FAST_P);
189 #else
190 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
191 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
192 #else
193 vpc = frvbf_pbb_begin (current_cpu, 0);
194 #endif
195 #endif
196 #endif
197 }
198
199 return vpc;
200 #undef FLD
201 }
202
203 /* add: add$pack $GRi,$GRj,$GRk */
204
205 static SEM_PC
206 SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
207 {
208 #define FLD(f) abuf->fields.sfmt_addcc.f
209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
210 int UNUSED written = 0;
211 IADDR UNUSED pc = abuf->addr;
212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
213
214 {
215 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
216 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
217 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
218 }
219
220 return vpc;
221 #undef FLD
222 }
223
224 /* sub: sub$pack $GRi,$GRj,$GRk */
225
226 static SEM_PC
227 SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
228 {
229 #define FLD(f) abuf->fields.sfmt_addcc.f
230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
231 int UNUSED written = 0;
232 IADDR UNUSED pc = abuf->addr;
233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
234
235 {
236 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
237 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
239 }
240
241 return vpc;
242 #undef FLD
243 }
244
245 /* and: and$pack $GRi,$GRj,$GRk */
246
247 static SEM_PC
248 SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
249 {
250 #define FLD(f) abuf->fields.sfmt_addcc.f
251 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
252 int UNUSED written = 0;
253 IADDR UNUSED pc = abuf->addr;
254 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
255
256 {
257 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
258 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
259 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
260 }
261
262 return vpc;
263 #undef FLD
264 }
265
266 /* or: or$pack $GRi,$GRj,$GRk */
267
268 static SEM_PC
269 SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
270 {
271 #define FLD(f) abuf->fields.sfmt_addcc.f
272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
273 int UNUSED written = 0;
274 IADDR UNUSED pc = abuf->addr;
275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
276
277 {
278 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
279 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
280 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
281 }
282
283 return vpc;
284 #undef FLD
285 }
286
287 /* xor: xor$pack $GRi,$GRj,$GRk */
288
289 static SEM_PC
290 SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
291 {
292 #define FLD(f) abuf->fields.sfmt_addcc.f
293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
294 int UNUSED written = 0;
295 IADDR UNUSED pc = abuf->addr;
296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
297
298 {
299 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
300 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
301 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
302 }
303
304 return vpc;
305 #undef FLD
306 }
307
308 /* not: not$pack $GRj,$GRk */
309
310 static SEM_PC
311 SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
312 {
313 #define FLD(f) abuf->fields.sfmt_scutss.f
314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
315 int UNUSED written = 0;
316 IADDR UNUSED pc = abuf->addr;
317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
318
319 {
320 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
321 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
322 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
323 }
324
325 return vpc;
326 #undef FLD
327 }
328
329 /* sdiv: sdiv$pack $GRi,$GRj,$GRk */
330
331 static SEM_PC
332 SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
333 {
334 #define FLD(f) abuf->fields.sfmt_addcc.f
335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
336 int UNUSED written = 0;
337 IADDR UNUSED pc = abuf->addr;
338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
339
340 {
341 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
342 ; /*clobber*/
343 }
344
345 return vpc;
346 #undef FLD
347 }
348
349 /* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
350
351 static SEM_PC
352 SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
353 {
354 #define FLD(f) abuf->fields.sfmt_addcc.f
355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
356 int UNUSED written = 0;
357 IADDR UNUSED pc = abuf->addr;
358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
359
360 {
361 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
362 ; /*clobber*/
363 }
364
365 return vpc;
366 #undef FLD
367 }
368
369 /* udiv: udiv$pack $GRi,$GRj,$GRk */
370
371 static SEM_PC
372 SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
373 {
374 #define FLD(f) abuf->fields.sfmt_addcc.f
375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
376 int UNUSED written = 0;
377 IADDR UNUSED pc = abuf->addr;
378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
379
380 {
381 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
382 ; /*clobber*/
383 }
384
385 return vpc;
386 #undef FLD
387 }
388
389 /* nudiv: nudiv$pack $GRi,$GRj,$GRk */
390
391 static SEM_PC
392 SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
393 {
394 #define FLD(f) abuf->fields.sfmt_addcc.f
395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
396 int UNUSED written = 0;
397 IADDR UNUSED pc = abuf->addr;
398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
399
400 {
401 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
402 ; /*clobber*/
403 }
404
405 return vpc;
406 #undef FLD
407 }
408
409 /* smul: smul$pack $GRi,$GRj,$GRdoublek */
410
411 static SEM_PC
412 SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
413 {
414 #define FLD(f) abuf->fields.sfmt_smulcc.f
415 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
416 int UNUSED written = 0;
417 IADDR UNUSED pc = abuf->addr;
418 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
419
420 {
421 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
422 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
423 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
424 }
425
426 return vpc;
427 #undef FLD
428 }
429
430 /* umul: umul$pack $GRi,$GRj,$GRdoublek */
431
432 static SEM_PC
433 SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
434 {
435 #define FLD(f) abuf->fields.sfmt_smulcc.f
436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
437 int UNUSED written = 0;
438 IADDR UNUSED pc = abuf->addr;
439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
440
441 {
442 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
443 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
444 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
445 }
446
447 return vpc;
448 #undef FLD
449 }
450
451 /* smu: smu$pack $GRi,$GRj */
452
453 static SEM_PC
454 SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
455 {
456 #define FLD(f) abuf->fields.sfmt_smass.f
457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
458 int UNUSED written = 0;
459 IADDR UNUSED pc = abuf->addr;
460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
461
462 {
463 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
464 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
465 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
466 }
467
468 return vpc;
469 #undef FLD
470 }
471
472 /* smass: smass$pack $GRi,$GRj */
473
474 static SEM_PC
475 SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
476 {
477 #define FLD(f) abuf->fields.sfmt_smass.f
478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
479 int UNUSED written = 0;
480 IADDR UNUSED pc = abuf->addr;
481 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
482
483 {
484 DI opval = (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (SUBDI (9223372036854775807, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (SUBDI (9223372036854775808, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (ADDDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
485 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
486 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
487 }
488
489 return vpc;
490 #undef FLD
491 }
492
493 /* smsss: smsss$pack $GRi,$GRj */
494
495 static SEM_PC
496 SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
497 {
498 #define FLD(f) abuf->fields.sfmt_smass.f
499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
500 int UNUSED written = 0;
501 IADDR UNUSED pc = abuf->addr;
502 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
503
504 {
505 DI opval = (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (ADDDI (9223372036854775807, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (ADDDI (9223372036854775808, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (SUBDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
506 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
507 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
508 }
509
510 return vpc;
511 #undef FLD
512 }
513
514 /* sll: sll$pack $GRi,$GRj,$GRk */
515
516 static SEM_PC
517 SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
518 {
519 #define FLD(f) abuf->fields.sfmt_addcc.f
520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
521 int UNUSED written = 0;
522 IADDR UNUSED pc = abuf->addr;
523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
524
525 {
526 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
527 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
528 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
529 }
530
531 return vpc;
532 #undef FLD
533 }
534
535 /* srl: srl$pack $GRi,$GRj,$GRk */
536
537 static SEM_PC
538 SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
539 {
540 #define FLD(f) abuf->fields.sfmt_addcc.f
541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
542 int UNUSED written = 0;
543 IADDR UNUSED pc = abuf->addr;
544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
545
546 {
547 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
548 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
549 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
550 }
551
552 return vpc;
553 #undef FLD
554 }
555
556 /* sra: sra$pack $GRi,$GRj,$GRk */
557
558 static SEM_PC
559 SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
560 {
561 #define FLD(f) abuf->fields.sfmt_addcc.f
562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
563 int UNUSED written = 0;
564 IADDR UNUSED pc = abuf->addr;
565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
566
567 {
568 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
569 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
570 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
571 }
572
573 return vpc;
574 #undef FLD
575 }
576
577 /* slass: slass$pack $GRi,$GRj,$GRk */
578
579 static SEM_PC
580 SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
581 {
582 #define FLD(f) abuf->fields.sfmt_addcc.f
583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
584 int UNUSED written = 0;
585 IADDR UNUSED pc = abuf->addr;
586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
587
588 {
589 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
590 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
591 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
592 }
593
594 return vpc;
595 #undef FLD
596 }
597
598 /* scutss: scutss$pack $GRj,$GRk */
599
600 static SEM_PC
601 SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
602 {
603 #define FLD(f) abuf->fields.sfmt_scutss.f
604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
605 int UNUSED written = 0;
606 IADDR UNUSED pc = abuf->addr;
607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
608
609 {
610 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
611 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
612 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
613 }
614
615 return vpc;
616 #undef FLD
617 }
618
619 /* scan: scan$pack $GRi,$GRj,$GRk */
620
621 static SEM_PC
622 SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
623 {
624 #define FLD(f) abuf->fields.sfmt_addcc.f
625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
626 int UNUSED written = 0;
627 IADDR UNUSED pc = abuf->addr;
628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
629
630 {
631 SI tmp_tmp1;
632 SI tmp_tmp2;
633 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
634 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
635 {
636 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
637 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
638 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
639 }
640 }
641
642 return vpc;
643 #undef FLD
644 }
645
646 /* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
647
648 static SEM_PC
649 SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
650 {
651 #define FLD(f) abuf->fields.sfmt_cswap.f
652 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
653 int UNUSED written = 0;
654 IADDR UNUSED pc = abuf->addr;
655 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
656
657 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
658 {
659 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
660 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
661 written |= (1 << 4);
662 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
663 }
664 }
665
666 abuf->written = written;
667 return vpc;
668 #undef FLD
669 }
670
671 /* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
672
673 static SEM_PC
674 SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
675 {
676 #define FLD(f) abuf->fields.sfmt_cswap.f
677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
678 int UNUSED written = 0;
679 IADDR UNUSED pc = abuf->addr;
680 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
681
682 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
683 {
684 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
685 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
686 written |= (1 << 4);
687 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
688 }
689 }
690
691 abuf->written = written;
692 return vpc;
693 #undef FLD
694 }
695
696 /* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
697
698 static SEM_PC
699 SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
700 {
701 #define FLD(f) abuf->fields.sfmt_cswap.f
702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
703 int UNUSED written = 0;
704 IADDR UNUSED pc = abuf->addr;
705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
706
707 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
708 {
709 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
710 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
711 written |= (1 << 4);
712 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
713 }
714 }
715
716 abuf->written = written;
717 return vpc;
718 #undef FLD
719 }
720
721 /* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
722
723 static SEM_PC
724 SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
725 {
726 #define FLD(f) abuf->fields.sfmt_cswap.f
727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
728 int UNUSED written = 0;
729 IADDR UNUSED pc = abuf->addr;
730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
731
732 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
733 {
734 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
735 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
736 written |= (1 << 4);
737 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
738 }
739 }
740
741 abuf->written = written;
742 return vpc;
743 #undef FLD
744 }
745
746 /* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
747
748 static SEM_PC
749 SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
750 {
751 #define FLD(f) abuf->fields.sfmt_cswap.f
752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
753 int UNUSED written = 0;
754 IADDR UNUSED pc = abuf->addr;
755 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
756
757 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
758 {
759 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
760 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
761 written |= (1 << 4);
762 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
763 }
764 }
765
766 abuf->written = written;
767 return vpc;
768 #undef FLD
769 }
770
771 /* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
772
773 static SEM_PC
774 SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
775 {
776 #define FLD(f) abuf->fields.sfmt_cswap.f
777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
778 int UNUSED written = 0;
779 IADDR UNUSED pc = abuf->addr;
780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
781
782 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
783 {
784 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
785 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
786 written |= (1 << 3);
787 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
788 }
789 }
790
791 abuf->written = written;
792 return vpc;
793 #undef FLD
794 }
795
796 /* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
797
798 static SEM_PC
799 SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
800 {
801 #define FLD(f) abuf->fields.sfmt_clddu.f
802 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
803 int UNUSED written = 0;
804 IADDR UNUSED pc = abuf->addr;
805 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
806
807 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
808 {
809 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
810 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
811 written |= (1 << 4);
812 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
813 }
814 }
815
816 abuf->written = written;
817 return vpc;
818 #undef FLD
819 }
820
821 /* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
822
823 static SEM_PC
824 SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
825 {
826 #define FLD(f) abuf->fields.sfmt_cswap.f
827 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
828 int UNUSED written = 0;
829 IADDR UNUSED pc = abuf->addr;
830 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
831
832 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
833 {
834 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
835 ; /*clobber*/
836 }
837 }
838
839 abuf->written = written;
840 return vpc;
841 #undef FLD
842 }
843
844 /* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
845
846 static SEM_PC
847 SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
848 {
849 #define FLD(f) abuf->fields.sfmt_cswap.f
850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
851 int UNUSED written = 0;
852 IADDR UNUSED pc = abuf->addr;
853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
854
855 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
856 {
857 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
858 ; /*clobber*/
859 }
860 }
861
862 abuf->written = written;
863 return vpc;
864 #undef FLD
865 }
866
867 /* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
868
869 static SEM_PC
870 SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
871 {
872 #define FLD(f) abuf->fields.sfmt_cswap.f
873 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
874 int UNUSED written = 0;
875 IADDR UNUSED pc = abuf->addr;
876 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
877
878 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
879 {
880 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
882 written |= (1 << 4);
883 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
884 }
885 }
886
887 abuf->written = written;
888 return vpc;
889 #undef FLD
890 }
891
892 /* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
893
894 static SEM_PC
895 SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
896 {
897 #define FLD(f) abuf->fields.sfmt_cswap.f
898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
899 int UNUSED written = 0;
900 IADDR UNUSED pc = abuf->addr;
901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
902
903 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
904 {
905 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
906 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
907 written |= (1 << 4);
908 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
909 }
910 }
911
912 abuf->written = written;
913 return vpc;
914 #undef FLD
915 }
916
917 /* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
918
919 static SEM_PC
920 SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
921 {
922 #define FLD(f) abuf->fields.sfmt_cswap.f
923 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
924 int UNUSED written = 0;
925 IADDR UNUSED pc = abuf->addr;
926 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
927
928 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
929 {
930 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
931 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
932 written |= (1 << 4);
933 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
934 }
935 }
936
937 abuf->written = written;
938 return vpc;
939 #undef FLD
940 }
941
942 /* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
943
944 static SEM_PC
945 SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
946 {
947 #define FLD(f) abuf->fields.sfmt_cswap.f
948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
949 int UNUSED written = 0;
950 IADDR UNUSED pc = abuf->addr;
951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
952
953 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
954 {
955 SI tmp_tmp1;
956 SI tmp_tmp2;
957 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
958 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
959 {
960 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
961 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
962 written |= (1 << 4);
963 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
964 }
965 }
966 }
967
968 abuf->written = written;
969 return vpc;
970 #undef FLD
971 }
972
973 /* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
974
975 static SEM_PC
976 SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
977 {
978 #define FLD(f) abuf->fields.sfmt_addcc.f
979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
980 int UNUSED written = 0;
981 IADDR UNUSED pc = abuf->addr;
982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
983
984 {
985 BI tmp_tmp;
986 QI tmp_cc;
987 SI tmp_result;
988 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
989 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
990 if (EQBI (tmp_tmp, 0)) {
991 tmp_cc = ANDQI (tmp_cc, 13);
992 } else {
993 tmp_cc = ORQI (tmp_cc, 2);
994 }
995 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
996 if (EQBI (tmp_tmp, 0)) {
997 tmp_cc = ANDQI (tmp_cc, 14);
998 } else {
999 tmp_cc = ORQI (tmp_cc, 1);
1000 }
1001 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1002 if (EQSI (tmp_result, 0)) {
1003 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1004 } else {
1005 if (LTSI (tmp_result, 0)) {
1006 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1007 } else {
1008 tmp_cc = ANDQI (tmp_cc, 3);
1009 }
1010 }
1011 {
1012 SI opval = tmp_result;
1013 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1014 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1015 }
1016 {
1017 UQI opval = tmp_cc;
1018 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1019 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1020 }
1021 }
1022
1023 return vpc;
1024 #undef FLD
1025 }
1026
1027 /* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1028
1029 static SEM_PC
1030 SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1031 {
1032 #define FLD(f) abuf->fields.sfmt_addcc.f
1033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1034 int UNUSED written = 0;
1035 IADDR UNUSED pc = abuf->addr;
1036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1037
1038 {
1039 BI tmp_tmp;
1040 QI tmp_cc;
1041 SI tmp_result;
1042 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1043 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1044 if (EQBI (tmp_tmp, 0)) {
1045 tmp_cc = ANDQI (tmp_cc, 13);
1046 } else {
1047 tmp_cc = ORQI (tmp_cc, 2);
1048 }
1049 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1050 if (EQBI (tmp_tmp, 0)) {
1051 tmp_cc = ANDQI (tmp_cc, 14);
1052 } else {
1053 tmp_cc = ORQI (tmp_cc, 1);
1054 }
1055 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1056 if (EQSI (tmp_result, 0)) {
1057 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1058 } else {
1059 if (LTSI (tmp_result, 0)) {
1060 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1061 } else {
1062 tmp_cc = ANDQI (tmp_cc, 3);
1063 }
1064 }
1065 {
1066 SI opval = tmp_result;
1067 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1068 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1069 }
1070 {
1071 UQI opval = tmp_cc;
1072 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1073 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1074 }
1075 }
1076
1077 return vpc;
1078 #undef FLD
1079 }
1080
1081 /* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1082
1083 static SEM_PC
1084 SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1085 {
1086 #define FLD(f) abuf->fields.sfmt_addcc.f
1087 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1088 int UNUSED written = 0;
1089 IADDR UNUSED pc = abuf->addr;
1090 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1091
1092 {
1093 SI tmp_tmp;
1094 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1095 {
1096 SI opval = tmp_tmp;
1097 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1098 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1099 }
1100 if (EQSI (tmp_tmp, 0)) {
1101 {
1102 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1103 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1104 written |= (1 << 4);
1105 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1106 }
1107 } else {
1108 if (LTSI (tmp_tmp, 0)) {
1109 {
1110 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1111 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1112 written |= (1 << 4);
1113 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1114 }
1115 } else {
1116 {
1117 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1118 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1119 written |= (1 << 4);
1120 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1121 }
1122 }
1123 }
1124 }
1125
1126 abuf->written = written;
1127 return vpc;
1128 #undef FLD
1129 }
1130
1131 /* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1132
1133 static SEM_PC
1134 SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1135 {
1136 #define FLD(f) abuf->fields.sfmt_addcc.f
1137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1138 int UNUSED written = 0;
1139 IADDR UNUSED pc = abuf->addr;
1140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1141
1142 {
1143 SI tmp_tmp;
1144 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1145 {
1146 SI opval = tmp_tmp;
1147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1148 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1149 }
1150 if (EQSI (tmp_tmp, 0)) {
1151 {
1152 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1153 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1154 written |= (1 << 4);
1155 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1156 }
1157 } else {
1158 if (LTSI (tmp_tmp, 0)) {
1159 {
1160 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1161 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1162 written |= (1 << 4);
1163 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1164 }
1165 } else {
1166 {
1167 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1168 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1169 written |= (1 << 4);
1170 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1171 }
1172 }
1173 }
1174 }
1175
1176 abuf->written = written;
1177 return vpc;
1178 #undef FLD
1179 }
1180
1181 /* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1182
1183 static SEM_PC
1184 SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1185 {
1186 #define FLD(f) abuf->fields.sfmt_addcc.f
1187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1188 int UNUSED written = 0;
1189 IADDR UNUSED pc = abuf->addr;
1190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1191
1192 {
1193 SI tmp_tmp;
1194 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1195 {
1196 SI opval = tmp_tmp;
1197 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1198 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1199 }
1200 if (EQSI (tmp_tmp, 0)) {
1201 {
1202 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1203 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1204 written |= (1 << 4);
1205 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1206 }
1207 } else {
1208 if (LTSI (tmp_tmp, 0)) {
1209 {
1210 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1211 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1212 written |= (1 << 4);
1213 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1214 }
1215 } else {
1216 {
1217 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1218 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1219 written |= (1 << 4);
1220 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1221 }
1222 }
1223 }
1224 }
1225
1226 abuf->written = written;
1227 return vpc;
1228 #undef FLD
1229 }
1230
1231 /* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1232
1233 static SEM_PC
1234 SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1235 {
1236 #define FLD(f) abuf->fields.sfmt_addcc.f
1237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1238 int UNUSED written = 0;
1239 IADDR UNUSED pc = abuf->addr;
1240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1241
1242 {
1243 SI tmp_shift;
1244 SI tmp_tmp;
1245 QI tmp_cc;
1246 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1247 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1248 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1249 {
1250 SI opval = tmp_tmp;
1251 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1252 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1253 }
1254 if (EQSI (tmp_tmp, 0)) {
1255 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1256 } else {
1257 if (LTSI (tmp_tmp, 0)) {
1258 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1259 } else {
1260 tmp_cc = ANDQI (tmp_cc, 3);
1261 }
1262 }
1263 {
1264 UQI opval = tmp_cc;
1265 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1266 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1267 }
1268 }
1269
1270 return vpc;
1271 #undef FLD
1272 }
1273
1274 /* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1275
1276 static SEM_PC
1277 SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1278 {
1279 #define FLD(f) abuf->fields.sfmt_addcc.f
1280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1281 int UNUSED written = 0;
1282 IADDR UNUSED pc = abuf->addr;
1283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1284
1285 {
1286 SI tmp_shift;
1287 SI tmp_tmp;
1288 QI tmp_cc;
1289 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1290 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1291 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1292 {
1293 SI opval = tmp_tmp;
1294 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1295 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1296 }
1297 if (EQSI (tmp_tmp, 0)) {
1298 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1299 } else {
1300 if (LTSI (tmp_tmp, 0)) {
1301 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1302 } else {
1303 tmp_cc = ANDQI (tmp_cc, 3);
1304 }
1305 }
1306 {
1307 UQI opval = tmp_cc;
1308 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1309 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1310 }
1311 }
1312
1313 return vpc;
1314 #undef FLD
1315 }
1316
1317 /* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1318
1319 static SEM_PC
1320 SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1321 {
1322 #define FLD(f) abuf->fields.sfmt_addcc.f
1323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1324 int UNUSED written = 0;
1325 IADDR UNUSED pc = abuf->addr;
1326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1327
1328 {
1329 SI tmp_shift;
1330 SI tmp_tmp;
1331 QI tmp_cc;
1332 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1333 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1334 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1335 {
1336 SI opval = tmp_tmp;
1337 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1338 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1339 }
1340 if (EQSI (tmp_tmp, 0)) {
1341 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1342 } else {
1343 if (LTSI (tmp_tmp, 0)) {
1344 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1345 } else {
1346 tmp_cc = ANDQI (tmp_cc, 3);
1347 }
1348 }
1349 {
1350 UQI opval = tmp_cc;
1351 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1352 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1353 }
1354 }
1355
1356 return vpc;
1357 #undef FLD
1358 }
1359
1360 /* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1361
1362 static SEM_PC
1363 SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1364 {
1365 #define FLD(f) abuf->fields.sfmt_smulcc.f
1366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1367 int UNUSED written = 0;
1368 IADDR UNUSED pc = abuf->addr;
1369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1370
1371 {
1372 DI tmp_tmp;
1373 QI tmp_cc;
1374 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1375 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1376 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1377 tmp_cc = ANDQI (tmp_cc, 7);
1378 } else {
1379 tmp_cc = ORQI (tmp_cc, 8);
1380 }
1381 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1382 tmp_cc = ANDQI (tmp_cc, 11);
1383 } else {
1384 tmp_cc = ORQI (tmp_cc, 4);
1385 }
1386 {
1387 DI opval = tmp_tmp;
1388 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1389 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1390 }
1391 {
1392 UQI opval = tmp_cc;
1393 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1394 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1395 }
1396 }
1397
1398 return vpc;
1399 #undef FLD
1400 }
1401
1402 /* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1403
1404 static SEM_PC
1405 SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1406 {
1407 #define FLD(f) abuf->fields.sfmt_smulcc.f
1408 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1409 int UNUSED written = 0;
1410 IADDR UNUSED pc = abuf->addr;
1411 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1412
1413 {
1414 DI tmp_tmp;
1415 QI tmp_cc;
1416 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1417 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1418 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1419 tmp_cc = ANDQI (tmp_cc, 7);
1420 } else {
1421 tmp_cc = ORQI (tmp_cc, 8);
1422 }
1423 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1424 tmp_cc = ANDQI (tmp_cc, 11);
1425 } else {
1426 tmp_cc = ORQI (tmp_cc, 4);
1427 }
1428 {
1429 DI opval = tmp_tmp;
1430 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1431 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1432 }
1433 {
1434 UQI opval = tmp_cc;
1435 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1436 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1437 }
1438 }
1439
1440 return vpc;
1441 #undef FLD
1442 }
1443
1444 /* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1445
1446 static SEM_PC
1447 SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1448 {
1449 #define FLD(f) abuf->fields.sfmt_caddcc.f
1450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1451 int UNUSED written = 0;
1452 IADDR UNUSED pc = abuf->addr;
1453 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1454
1455 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1456 {
1457 BI tmp_tmp;
1458 QI tmp_cc;
1459 SI tmp_result;
1460 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1461 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1462 if (EQBI (tmp_tmp, 0)) {
1463 tmp_cc = ANDQI (tmp_cc, 13);
1464 } else {
1465 tmp_cc = ORQI (tmp_cc, 2);
1466 }
1467 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1468 if (EQBI (tmp_tmp, 0)) {
1469 tmp_cc = ANDQI (tmp_cc, 14);
1470 } else {
1471 tmp_cc = ORQI (tmp_cc, 1);
1472 }
1473 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1474 if (EQSI (tmp_result, 0)) {
1475 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1476 } else {
1477 if (LTSI (tmp_result, 0)) {
1478 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1479 } else {
1480 tmp_cc = ANDQI (tmp_cc, 3);
1481 }
1482 }
1483 {
1484 SI opval = tmp_result;
1485 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1486 written |= (1 << 6);
1487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1488 }
1489 {
1490 UQI opval = tmp_cc;
1491 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1492 written |= (1 << 7);
1493 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1494 }
1495 }
1496 }
1497
1498 abuf->written = written;
1499 return vpc;
1500 #undef FLD
1501 }
1502
1503 /* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1504
1505 static SEM_PC
1506 SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1507 {
1508 #define FLD(f) abuf->fields.sfmt_caddcc.f
1509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1510 int UNUSED written = 0;
1511 IADDR UNUSED pc = abuf->addr;
1512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1513
1514 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1515 {
1516 BI tmp_tmp;
1517 QI tmp_cc;
1518 SI tmp_result;
1519 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1520 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1521 if (EQBI (tmp_tmp, 0)) {
1522 tmp_cc = ANDQI (tmp_cc, 13);
1523 } else {
1524 tmp_cc = ORQI (tmp_cc, 2);
1525 }
1526 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1527 if (EQBI (tmp_tmp, 0)) {
1528 tmp_cc = ANDQI (tmp_cc, 14);
1529 } else {
1530 tmp_cc = ORQI (tmp_cc, 1);
1531 }
1532 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1533 if (EQSI (tmp_result, 0)) {
1534 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1535 } else {
1536 if (LTSI (tmp_result, 0)) {
1537 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1538 } else {
1539 tmp_cc = ANDQI (tmp_cc, 3);
1540 }
1541 }
1542 {
1543 SI opval = tmp_result;
1544 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1545 written |= (1 << 6);
1546 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1547 }
1548 {
1549 UQI opval = tmp_cc;
1550 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1551 written |= (1 << 7);
1552 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1553 }
1554 }
1555 }
1556
1557 abuf->written = written;
1558 return vpc;
1559 #undef FLD
1560 }
1561
1562 /* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1563
1564 static SEM_PC
1565 SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1566 {
1567 #define FLD(f) abuf->fields.sfmt_csmulcc.f
1568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1569 int UNUSED written = 0;
1570 IADDR UNUSED pc = abuf->addr;
1571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1572
1573 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1574 {
1575 DI tmp_tmp;
1576 QI tmp_cc;
1577 tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]);
1578 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1579 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1580 tmp_cc = ANDQI (tmp_cc, 7);
1581 } else {
1582 tmp_cc = ORQI (tmp_cc, 8);
1583 }
1584 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1585 tmp_cc = ANDQI (tmp_cc, 11);
1586 } else {
1587 tmp_cc = ORQI (tmp_cc, 4);
1588 }
1589 {
1590 DI opval = tmp_tmp;
1591 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1592 written |= (1 << 6);
1593 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1594 }
1595 {
1596 UQI opval = tmp_cc;
1597 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1598 written |= (1 << 7);
1599 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1600 }
1601 }
1602 }
1603
1604 abuf->written = written;
1605 return vpc;
1606 #undef FLD
1607 }
1608
1609 /* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1610
1611 static SEM_PC
1612 SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1613 {
1614 #define FLD(f) abuf->fields.sfmt_caddcc.f
1615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1616 int UNUSED written = 0;
1617 IADDR UNUSED pc = abuf->addr;
1618 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1619
1620 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1621 {
1622 SI tmp_tmp;
1623 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1624 {
1625 SI opval = tmp_tmp;
1626 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1627 written |= (1 << 6);
1628 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1629 }
1630 if (EQSI (tmp_tmp, 0)) {
1631 {
1632 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1633 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1634 written |= (1 << 7);
1635 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1636 }
1637 } else {
1638 if (LTSI (tmp_tmp, 0)) {
1639 {
1640 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1641 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1642 written |= (1 << 7);
1643 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1644 }
1645 } else {
1646 {
1647 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1648 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1649 written |= (1 << 7);
1650 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1651 }
1652 }
1653 }
1654 }
1655 }
1656
1657 abuf->written = written;
1658 return vpc;
1659 #undef FLD
1660 }
1661
1662 /* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1663
1664 static SEM_PC
1665 SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1666 {
1667 #define FLD(f) abuf->fields.sfmt_caddcc.f
1668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1669 int UNUSED written = 0;
1670 IADDR UNUSED pc = abuf->addr;
1671 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1672
1673 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1674 {
1675 SI tmp_tmp;
1676 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1677 {
1678 SI opval = tmp_tmp;
1679 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1680 written |= (1 << 6);
1681 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1682 }
1683 if (EQSI (tmp_tmp, 0)) {
1684 {
1685 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1686 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1687 written |= (1 << 7);
1688 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1689 }
1690 } else {
1691 if (LTSI (tmp_tmp, 0)) {
1692 {
1693 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1694 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1695 written |= (1 << 7);
1696 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1697 }
1698 } else {
1699 {
1700 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1701 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1702 written |= (1 << 7);
1703 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1704 }
1705 }
1706 }
1707 }
1708 }
1709
1710 abuf->written = written;
1711 return vpc;
1712 #undef FLD
1713 }
1714
1715 /* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1716
1717 static SEM_PC
1718 SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1719 {
1720 #define FLD(f) abuf->fields.sfmt_caddcc.f
1721 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1722 int UNUSED written = 0;
1723 IADDR UNUSED pc = abuf->addr;
1724 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1725
1726 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1727 {
1728 SI tmp_tmp;
1729 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1730 {
1731 SI opval = tmp_tmp;
1732 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1733 written |= (1 << 6);
1734 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1735 }
1736 if (EQSI (tmp_tmp, 0)) {
1737 {
1738 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4);
1739 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1740 written |= (1 << 7);
1741 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1742 }
1743 } else {
1744 if (LTSI (tmp_tmp, 0)) {
1745 {
1746 UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8);
1747 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1748 written |= (1 << 7);
1749 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1750 }
1751 } else {
1752 {
1753 UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3);
1754 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1755 written |= (1 << 7);
1756 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1757 }
1758 }
1759 }
1760 }
1761 }
1762
1763 abuf->written = written;
1764 return vpc;
1765 #undef FLD
1766 }
1767
1768 /* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1769
1770 static SEM_PC
1771 SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1772 {
1773 #define FLD(f) abuf->fields.sfmt_caddcc.f
1774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1775 int UNUSED written = 0;
1776 IADDR UNUSED pc = abuf->addr;
1777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1778
1779 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1780 {
1781 SI tmp_shift;
1782 SI tmp_tmp;
1783 QI tmp_cc;
1784 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1785 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1786 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1787 {
1788 SI opval = tmp_tmp;
1789 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1790 written |= (1 << 6);
1791 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1792 }
1793 if (EQSI (tmp_tmp, 0)) {
1794 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1795 } else {
1796 if (LTSI (tmp_tmp, 0)) {
1797 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1798 } else {
1799 tmp_cc = ANDQI (tmp_cc, 3);
1800 }
1801 }
1802 {
1803 UQI opval = tmp_cc;
1804 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1805 written |= (1 << 7);
1806 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1807 }
1808 }
1809 }
1810
1811 abuf->written = written;
1812 return vpc;
1813 #undef FLD
1814 }
1815
1816 /* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1817
1818 static SEM_PC
1819 SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1820 {
1821 #define FLD(f) abuf->fields.sfmt_caddcc.f
1822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1823 int UNUSED written = 0;
1824 IADDR UNUSED pc = abuf->addr;
1825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1826
1827 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1828 {
1829 SI tmp_shift;
1830 SI tmp_tmp;
1831 QI tmp_cc;
1832 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1833 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1834 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1835 {
1836 SI opval = tmp_tmp;
1837 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1838 written |= (1 << 6);
1839 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1840 }
1841 if (EQSI (tmp_tmp, 0)) {
1842 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1843 } else {
1844 if (LTSI (tmp_tmp, 0)) {
1845 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1846 } else {
1847 tmp_cc = ANDQI (tmp_cc, 3);
1848 }
1849 }
1850 {
1851 UQI opval = tmp_cc;
1852 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1853 written |= (1 << 7);
1854 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1855 }
1856 }
1857 }
1858
1859 abuf->written = written;
1860 return vpc;
1861 #undef FLD
1862 }
1863
1864 /* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1865
1866 static SEM_PC
1867 SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1868 {
1869 #define FLD(f) abuf->fields.sfmt_caddcc.f
1870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1871 int UNUSED written = 0;
1872 IADDR UNUSED pc = abuf->addr;
1873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1874
1875 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1876 {
1877 SI tmp_shift;
1878 SI tmp_tmp;
1879 QI tmp_cc;
1880 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1881 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))]));
1882 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1883 {
1884 SI opval = tmp_tmp;
1885 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1886 written |= (1 << 6);
1887 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1888 }
1889 if (EQSI (tmp_tmp, 0)) {
1890 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1891 } else {
1892 if (LTSI (tmp_tmp, 0)) {
1893 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1894 } else {
1895 tmp_cc = ANDQI (tmp_cc, 3);
1896 }
1897 }
1898 {
1899 UQI opval = tmp_cc;
1900 sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval);
1901 written |= (1 << 7);
1902 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1903 }
1904 }
1905 }
1906
1907 abuf->written = written;
1908 return vpc;
1909 #undef FLD
1910 }
1911
1912 /* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1913
1914 static SEM_PC
1915 SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1916 {
1917 #define FLD(f) abuf->fields.sfmt_addcc.f
1918 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1919 int UNUSED written = 0;
1920 IADDR UNUSED pc = abuf->addr;
1921 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1922
1923 {
1924 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1925 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1926 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1927 }
1928
1929 return vpc;
1930 #undef FLD
1931 }
1932
1933 /* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1934
1935 static SEM_PC
1936 SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1937 {
1938 #define FLD(f) abuf->fields.sfmt_addcc.f
1939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1940 int UNUSED written = 0;
1941 IADDR UNUSED pc = abuf->addr;
1942 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1943
1944 {
1945 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1946 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1947 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1948 }
1949
1950 return vpc;
1951 #undef FLD
1952 }
1953
1954 /* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1955
1956 static SEM_PC
1957 SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1958 {
1959 #define FLD(f) abuf->fields.sfmt_addcc.f
1960 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1961 int UNUSED written = 0;
1962 IADDR UNUSED pc = abuf->addr;
1963 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1964
1965 {
1966 SI tmp_tmp;
1967 QI tmp_cc;
1968 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1969 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1970 if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1971 tmp_cc = ANDQI (tmp_cc, 13);
1972 } else {
1973 tmp_cc = ORQI (tmp_cc, 2);
1974 }
1975 if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1976 tmp_cc = ANDQI (tmp_cc, 14);
1977 } else {
1978 tmp_cc = ORQI (tmp_cc, 1);
1979 }
1980 if (EQSI (tmp_tmp, 0)) {
1981 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1982 } else {
1983 if (LTSI (tmp_tmp, 0)) {
1984 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1985 } else {
1986 tmp_cc = ANDQI (tmp_cc, 3);
1987 }
1988 }
1989 {
1990 SI opval = tmp_tmp;
1991 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1992 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1993 }
1994 {
1995 UQI opval = tmp_cc;
1996 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1997 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1998 }
1999 }
2000
2001 return vpc;
2002 #undef FLD
2003 }
2004
2005 /* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2006
2007 static SEM_PC
2008 SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2009 {
2010 #define FLD(f) abuf->fields.sfmt_addcc.f
2011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2012 int UNUSED written = 0;
2013 IADDR UNUSED pc = abuf->addr;
2014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2015
2016 {
2017 SI tmp_tmp;
2018 QI tmp_cc;
2019 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2020 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2021 if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2022 tmp_cc = ANDQI (tmp_cc, 13);
2023 } else {
2024 tmp_cc = ORQI (tmp_cc, 2);
2025 }
2026 if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2027 tmp_cc = ANDQI (tmp_cc, 14);
2028 } else {
2029 tmp_cc = ORQI (tmp_cc, 1);
2030 }
2031 if (EQSI (tmp_tmp, 0)) {
2032 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2033 } else {
2034 if (LTSI (tmp_tmp, 0)) {
2035 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2036 } else {
2037 tmp_cc = ANDQI (tmp_cc, 3);
2038 }
2039 }
2040 {
2041 SI opval = tmp_tmp;
2042 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2043 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2044 }
2045 {
2046 UQI opval = tmp_cc;
2047 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2048 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2049 }
2050 }
2051
2052 return vpc;
2053 #undef FLD
2054 }
2055
2056 /* addss: addss$pack $GRi,$GRj,$GRk */
2057
2058 static SEM_PC
2059 SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2060 {
2061 #define FLD(f) abuf->fields.sfmt_addcc.f
2062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2063 int UNUSED written = 0;
2064 IADDR UNUSED pc = abuf->addr;
2065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2066
2067 {
2068 {
2069 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2070 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2071 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2072 }
2073 if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2074 {
2075 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2076 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2077 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2078 }
2079 }
2080 }
2081
2082 return vpc;
2083 #undef FLD
2084 }
2085
2086 /* subss: subss$pack $GRi,$GRj,$GRk */
2087
2088 static SEM_PC
2089 SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2090 {
2091 #define FLD(f) abuf->fields.sfmt_addcc.f
2092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2093 int UNUSED written = 0;
2094 IADDR UNUSED pc = abuf->addr;
2095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2096
2097 {
2098 {
2099 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2100 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2101 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2102 }
2103 if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2104 {
2105 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2106 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2107 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2108 }
2109 }
2110 }
2111
2112 return vpc;
2113 #undef FLD
2114 }
2115
2116 /* addi: addi$pack $GRi,$s12,$GRk */
2117
2118 static SEM_PC
2119 SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2120 {
2121 #define FLD(f) abuf->fields.sfmt_swapi.f
2122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2123 int UNUSED written = 0;
2124 IADDR UNUSED pc = abuf->addr;
2125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2126
2127 {
2128 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2129 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2130 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2131 }
2132
2133 return vpc;
2134 #undef FLD
2135 }
2136
2137 /* subi: subi$pack $GRi,$s12,$GRk */
2138
2139 static SEM_PC
2140 SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2141 {
2142 #define FLD(f) abuf->fields.sfmt_swapi.f
2143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2144 int UNUSED written = 0;
2145 IADDR UNUSED pc = abuf->addr;
2146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2147
2148 {
2149 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2150 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2151 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2152 }
2153
2154 return vpc;
2155 #undef FLD
2156 }
2157
2158 /* andi: andi$pack $GRi,$s12,$GRk */
2159
2160 static SEM_PC
2161 SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2162 {
2163 #define FLD(f) abuf->fields.sfmt_swapi.f
2164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2165 int UNUSED written = 0;
2166 IADDR UNUSED pc = abuf->addr;
2167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2168
2169 {
2170 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2171 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2172 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2173 }
2174
2175 return vpc;
2176 #undef FLD
2177 }
2178
2179 /* ori: ori$pack $GRi,$s12,$GRk */
2180
2181 static SEM_PC
2182 SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2183 {
2184 #define FLD(f) abuf->fields.sfmt_swapi.f
2185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2186 int UNUSED written = 0;
2187 IADDR UNUSED pc = abuf->addr;
2188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2189
2190 {
2191 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2192 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2193 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2194 }
2195
2196 return vpc;
2197 #undef FLD
2198 }
2199
2200 /* xori: xori$pack $GRi,$s12,$GRk */
2201
2202 static SEM_PC
2203 SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2204 {
2205 #define FLD(f) abuf->fields.sfmt_swapi.f
2206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2207 int UNUSED written = 0;
2208 IADDR UNUSED pc = abuf->addr;
2209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2210
2211 {
2212 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2213 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2214 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2215 }
2216
2217 return vpc;
2218 #undef FLD
2219 }
2220
2221 /* sdivi: sdivi$pack $GRi,$s12,$GRk */
2222
2223 static SEM_PC
2224 SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2225 {
2226 #define FLD(f) abuf->fields.sfmt_swapi.f
2227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2228 int UNUSED written = 0;
2229 IADDR UNUSED pc = abuf->addr;
2230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2231
2232 {
2233 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2234 ; /*clobber*/
2235 }
2236
2237 return vpc;
2238 #undef FLD
2239 }
2240
2241 /* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2242
2243 static SEM_PC
2244 SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2245 {
2246 #define FLD(f) abuf->fields.sfmt_swapi.f
2247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2248 int UNUSED written = 0;
2249 IADDR UNUSED pc = abuf->addr;
2250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2251
2252 {
2253 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2254 ; /*clobber*/
2255 }
2256
2257 return vpc;
2258 #undef FLD
2259 }
2260
2261 /* udivi: udivi$pack $GRi,$s12,$GRk */
2262
2263 static SEM_PC
2264 SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2265 {
2266 #define FLD(f) abuf->fields.sfmt_swapi.f
2267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2268 int UNUSED written = 0;
2269 IADDR UNUSED pc = abuf->addr;
2270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2271
2272 {
2273 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2274 ; /*clobber*/
2275 }
2276
2277 return vpc;
2278 #undef FLD
2279 }
2280
2281 /* nudivi: nudivi$pack $GRi,$s12,$GRk */
2282
2283 static SEM_PC
2284 SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2285 {
2286 #define FLD(f) abuf->fields.sfmt_swapi.f
2287 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2288 int UNUSED written = 0;
2289 IADDR UNUSED pc = abuf->addr;
2290 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2291
2292 {
2293 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2294 ; /*clobber*/
2295 }
2296
2297 return vpc;
2298 #undef FLD
2299 }
2300
2301 /* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2302
2303 static SEM_PC
2304 SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2305 {
2306 #define FLD(f) abuf->fields.sfmt_smuli.f
2307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2308 int UNUSED written = 0;
2309 IADDR UNUSED pc = abuf->addr;
2310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2311
2312 {
2313 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2314 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2315 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2316 }
2317
2318 return vpc;
2319 #undef FLD
2320 }
2321
2322 /* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2323
2324 static SEM_PC
2325 SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2326 {
2327 #define FLD(f) abuf->fields.sfmt_smuli.f
2328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2329 int UNUSED written = 0;
2330 IADDR UNUSED pc = abuf->addr;
2331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2332
2333 {
2334 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2335 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2336 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2337 }
2338
2339 return vpc;
2340 #undef FLD
2341 }
2342
2343 /* slli: slli$pack $GRi,$s12,$GRk */
2344
2345 static SEM_PC
2346 SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2347 {
2348 #define FLD(f) abuf->fields.sfmt_swapi.f
2349 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2350 int UNUSED written = 0;
2351 IADDR UNUSED pc = abuf->addr;
2352 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2353
2354 {
2355 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2356 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2357 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2358 }
2359
2360 return vpc;
2361 #undef FLD
2362 }
2363
2364 /* srli: srli$pack $GRi,$s12,$GRk */
2365
2366 static SEM_PC
2367 SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2368 {
2369 #define FLD(f) abuf->fields.sfmt_swapi.f
2370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2371 int UNUSED written = 0;
2372 IADDR UNUSED pc = abuf->addr;
2373 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2374
2375 {
2376 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2377 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2378 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2379 }
2380
2381 return vpc;
2382 #undef FLD
2383 }
2384
2385 /* srai: srai$pack $GRi,$s12,$GRk */
2386
2387 static SEM_PC
2388 SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2389 {
2390 #define FLD(f) abuf->fields.sfmt_swapi.f
2391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2392 int UNUSED written = 0;
2393 IADDR UNUSED pc = abuf->addr;
2394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2395
2396 {
2397 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2398 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2399 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2400 }
2401
2402 return vpc;
2403 #undef FLD
2404 }
2405
2406 /* scani: scani$pack $GRi,$s12,$GRk */
2407
2408 static SEM_PC
2409 SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2410 {
2411 #define FLD(f) abuf->fields.sfmt_swapi.f
2412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2413 int UNUSED written = 0;
2414 IADDR UNUSED pc = abuf->addr;
2415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2416
2417 {
2418 SI tmp_tmp1;
2419 SI tmp_tmp2;
2420 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2421 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2422 {
2423 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2424 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2425 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2426 }
2427 }
2428
2429 return vpc;
2430 #undef FLD
2431 }
2432
2433 /* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2434
2435 static SEM_PC
2436 SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2437 {
2438 #define FLD(f) abuf->fields.sfmt_addicc.f
2439 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2440 int UNUSED written = 0;
2441 IADDR UNUSED pc = abuf->addr;
2442 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2443
2444 {
2445 BI tmp_tmp;
2446 QI tmp_cc;
2447 SI tmp_result;
2448 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2449 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2450 if (EQBI (tmp_tmp, 0)) {
2451 tmp_cc = ANDQI (tmp_cc, 13);
2452 } else {
2453 tmp_cc = ORQI (tmp_cc, 2);
2454 }
2455 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2456 if (EQBI (tmp_tmp, 0)) {
2457 tmp_cc = ANDQI (tmp_cc, 14);
2458 } else {
2459 tmp_cc = ORQI (tmp_cc, 1);
2460 }
2461 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2462 if (EQSI (tmp_result, 0)) {
2463 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2464 } else {
2465 if (LTSI (tmp_result, 0)) {
2466 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2467 } else {
2468 tmp_cc = ANDQI (tmp_cc, 3);
2469 }
2470 }
2471 {
2472 SI opval = tmp_result;
2473 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2474 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2475 }
2476 {
2477 UQI opval = tmp_cc;
2478 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2479 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2480 }
2481 }
2482
2483 return vpc;
2484 #undef FLD
2485 }
2486
2487 /* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2488
2489 static SEM_PC
2490 SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2491 {
2492 #define FLD(f) abuf->fields.sfmt_addicc.f
2493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2494 int UNUSED written = 0;
2495 IADDR UNUSED pc = abuf->addr;
2496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2497
2498 {
2499 BI tmp_tmp;
2500 QI tmp_cc;
2501 SI tmp_result;
2502 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2503 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2504 if (EQBI (tmp_tmp, 0)) {
2505 tmp_cc = ANDQI (tmp_cc, 13);
2506 } else {
2507 tmp_cc = ORQI (tmp_cc, 2);
2508 }
2509 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2510 if (EQBI (tmp_tmp, 0)) {
2511 tmp_cc = ANDQI (tmp_cc, 14);
2512 } else {
2513 tmp_cc = ORQI (tmp_cc, 1);
2514 }
2515 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2516 if (EQSI (tmp_result, 0)) {
2517 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2518 } else {
2519 if (LTSI (tmp_result, 0)) {
2520 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2521 } else {
2522 tmp_cc = ANDQI (tmp_cc, 3);
2523 }
2524 }
2525 {
2526 SI opval = tmp_result;
2527 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2528 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2529 }
2530 {
2531 UQI opval = tmp_cc;
2532 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2533 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2534 }
2535 }
2536
2537 return vpc;
2538 #undef FLD
2539 }
2540
2541 /* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2542
2543 static SEM_PC
2544 SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2545 {
2546 #define FLD(f) abuf->fields.sfmt_addicc.f
2547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2548 int UNUSED written = 0;
2549 IADDR UNUSED pc = abuf->addr;
2550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2551
2552 {
2553 SI tmp_tmp;
2554 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2555 {
2556 SI opval = tmp_tmp;
2557 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2558 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2559 }
2560 if (EQSI (tmp_tmp, 0)) {
2561 {
2562 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2563 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2564 written |= (1 << 4);
2565 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2566 }
2567 } else {
2568 if (LTSI (tmp_tmp, 0)) {
2569 {
2570 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2571 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2572 written |= (1 << 4);
2573 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2574 }
2575 } else {
2576 {
2577 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2578 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2579 written |= (1 << 4);
2580 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2581 }
2582 }
2583 }
2584 }
2585
2586 abuf->written = written;
2587 return vpc;
2588 #undef FLD
2589 }
2590
2591 /* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2592
2593 static SEM_PC
2594 SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2595 {
2596 #define FLD(f) abuf->fields.sfmt_addicc.f
2597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2598 int UNUSED written = 0;
2599 IADDR UNUSED pc = abuf->addr;
2600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2601
2602 {
2603 SI tmp_tmp;
2604 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2605 {
2606 SI opval = tmp_tmp;
2607 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2608 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2609 }
2610 if (EQSI (tmp_tmp, 0)) {
2611 {
2612 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2613 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2614 written |= (1 << 4);
2615 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2616 }
2617 } else {
2618 if (LTSI (tmp_tmp, 0)) {
2619 {
2620 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2621 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2622 written |= (1 << 4);
2623 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2624 }
2625 } else {
2626 {
2627 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2628 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2629 written |= (1 << 4);
2630 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2631 }
2632 }
2633 }
2634 }
2635
2636 abuf->written = written;
2637 return vpc;
2638 #undef FLD
2639 }
2640
2641 /* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2642
2643 static SEM_PC
2644 SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2645 {
2646 #define FLD(f) abuf->fields.sfmt_addicc.f
2647 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2648 int UNUSED written = 0;
2649 IADDR UNUSED pc = abuf->addr;
2650 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2651
2652 {
2653 SI tmp_tmp;
2654 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2655 {
2656 SI opval = tmp_tmp;
2657 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2658 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2659 }
2660 if (EQSI (tmp_tmp, 0)) {
2661 {
2662 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2663 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2664 written |= (1 << 4);
2665 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2666 }
2667 } else {
2668 if (LTSI (tmp_tmp, 0)) {
2669 {
2670 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2671 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2672 written |= (1 << 4);
2673 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2674 }
2675 } else {
2676 {
2677 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2678 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2679 written |= (1 << 4);
2680 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2681 }
2682 }
2683 }
2684 }
2685
2686 abuf->written = written;
2687 return vpc;
2688 #undef FLD
2689 }
2690
2691 /* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2692
2693 static SEM_PC
2694 SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2695 {
2696 #define FLD(f) abuf->fields.sfmt_smulicc.f
2697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2698 int UNUSED written = 0;
2699 IADDR UNUSED pc = abuf->addr;
2700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2701
2702 {
2703 DI tmp_tmp;
2704 QI tmp_cc;
2705 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2706 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2707 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2708 tmp_cc = ANDQI (tmp_cc, 7);
2709 } else {
2710 tmp_cc = ORQI (tmp_cc, 8);
2711 }
2712 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2713 tmp_cc = ANDQI (tmp_cc, 11);
2714 } else {
2715 tmp_cc = ORQI (tmp_cc, 4);
2716 }
2717 {
2718 DI opval = tmp_tmp;
2719 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2720 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2721 }
2722 {
2723 UQI opval = tmp_cc;
2724 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2725 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2726 }
2727 }
2728
2729 return vpc;
2730 #undef FLD
2731 }
2732
2733 /* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2734
2735 static SEM_PC
2736 SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2737 {
2738 #define FLD(f) abuf->fields.sfmt_smulicc.f
2739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2740 int UNUSED written = 0;
2741 IADDR UNUSED pc = abuf->addr;
2742 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2743
2744 {
2745 DI tmp_tmp;
2746 QI tmp_cc;
2747 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2748 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2749 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2750 tmp_cc = ANDQI (tmp_cc, 7);
2751 } else {
2752 tmp_cc = ORQI (tmp_cc, 8);
2753 }
2754 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2755 tmp_cc = ANDQI (tmp_cc, 11);
2756 } else {
2757 tmp_cc = ORQI (tmp_cc, 4);
2758 }
2759 {
2760 DI opval = tmp_tmp;
2761 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2762 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2763 }
2764 {
2765 UQI opval = tmp_cc;
2766 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2767 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2768 }
2769 }
2770
2771 return vpc;
2772 #undef FLD
2773 }
2774
2775 /* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2776
2777 static SEM_PC
2778 SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2779 {
2780 #define FLD(f) abuf->fields.sfmt_addicc.f
2781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2782 int UNUSED written = 0;
2783 IADDR UNUSED pc = abuf->addr;
2784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2785
2786 {
2787 SI tmp_shift;
2788 SI tmp_tmp;
2789 QI tmp_cc;
2790 tmp_shift = ANDSI (FLD (f_s10), 31);
2791 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2792 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2793 {
2794 SI opval = tmp_tmp;
2795 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2796 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2797 }
2798 if (EQSI (tmp_tmp, 0)) {
2799 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2800 } else {
2801 if (LTSI (tmp_tmp, 0)) {
2802 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2803 } else {
2804 tmp_cc = ANDQI (tmp_cc, 3);
2805 }
2806 }
2807 {
2808 UQI opval = tmp_cc;
2809 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2810 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2811 }
2812 }
2813
2814 return vpc;
2815 #undef FLD
2816 }
2817
2818 /* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2819
2820 static SEM_PC
2821 SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2822 {
2823 #define FLD(f) abuf->fields.sfmt_addicc.f
2824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2825 int UNUSED written = 0;
2826 IADDR UNUSED pc = abuf->addr;
2827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2828
2829 {
2830 SI tmp_shift;
2831 SI tmp_tmp;
2832 QI tmp_cc;
2833 tmp_shift = ANDSI (FLD (f_s10), 31);
2834 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2835 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2836 {
2837 SI opval = tmp_tmp;
2838 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2839 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2840 }
2841 if (EQSI (tmp_tmp, 0)) {
2842 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2843 } else {
2844 if (LTSI (tmp_tmp, 0)) {
2845 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2846 } else {
2847 tmp_cc = ANDQI (tmp_cc, 3);
2848 }
2849 }
2850 {
2851 UQI opval = tmp_cc;
2852 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2853 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2854 }
2855 }
2856
2857 return vpc;
2858 #undef FLD
2859 }
2860
2861 /* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2862
2863 static SEM_PC
2864 SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2865 {
2866 #define FLD(f) abuf->fields.sfmt_addicc.f
2867 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2868 int UNUSED written = 0;
2869 IADDR UNUSED pc = abuf->addr;
2870 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2871
2872 {
2873 SI tmp_shift;
2874 SI tmp_tmp;
2875 QI tmp_cc;
2876 tmp_shift = ANDSI (FLD (f_s10), 31);
2877 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2878 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2879 {
2880 SI opval = tmp_tmp;
2881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2882 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2883 }
2884 if (EQSI (tmp_tmp, 0)) {
2885 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2886 } else {
2887 if (LTSI (tmp_tmp, 0)) {
2888 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2889 } else {
2890 tmp_cc = ANDQI (tmp_cc, 3);
2891 }
2892 }
2893 {
2894 UQI opval = tmp_cc;
2895 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2896 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2897 }
2898 }
2899
2900 return vpc;
2901 #undef FLD
2902 }
2903
2904 /* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2905
2906 static SEM_PC
2907 SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2908 {
2909 #define FLD(f) abuf->fields.sfmt_addicc.f
2910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2911 int UNUSED written = 0;
2912 IADDR UNUSED pc = abuf->addr;
2913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2914
2915 {
2916 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2917 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2918 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2919 }
2920
2921 return vpc;
2922 #undef FLD
2923 }
2924
2925 /* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2926
2927 static SEM_PC
2928 SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2929 {
2930 #define FLD(f) abuf->fields.sfmt_addicc.f
2931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2932 int UNUSED written = 0;
2933 IADDR UNUSED pc = abuf->addr;
2934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2935
2936 {
2937 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2938 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2939 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2940 }
2941
2942 return vpc;
2943 #undef FLD
2944 }
2945
2946 /* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2947
2948 static SEM_PC
2949 SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2950 {
2951 #define FLD(f) abuf->fields.sfmt_addicc.f
2952 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2953 int UNUSED written = 0;
2954 IADDR UNUSED pc = abuf->addr;
2955 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2956
2957 {
2958 SI tmp_tmp;
2959 QI tmp_cc;
2960 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2961 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2962 if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2963 tmp_cc = ANDQI (tmp_cc, 13);
2964 } else {
2965 tmp_cc = ORQI (tmp_cc, 2);
2966 }
2967 if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2968 tmp_cc = ANDQI (tmp_cc, 14);
2969 } else {
2970 tmp_cc = ORQI (tmp_cc, 1);
2971 }
2972 if (EQSI (tmp_tmp, 0)) {
2973 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2974 } else {
2975 if (LTSI (tmp_tmp, 0)) {
2976 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2977 } else {
2978 tmp_cc = ANDQI (tmp_cc, 3);
2979 }
2980 }
2981 {
2982 SI opval = tmp_tmp;
2983 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2984 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2985 }
2986 {
2987 UQI opval = tmp_cc;
2988 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2989 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2990 }
2991 }
2992
2993 return vpc;
2994 #undef FLD
2995 }
2996
2997 /* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2998
2999 static SEM_PC
3000 SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3001 {
3002 #define FLD(f) abuf->fields.sfmt_addicc.f
3003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3004 int UNUSED written = 0;
3005 IADDR UNUSED pc = abuf->addr;
3006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3007
3008 {
3009 SI tmp_tmp;
3010 QI tmp_cc;
3011 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3012 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
3013 if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3014 tmp_cc = ANDQI (tmp_cc, 13);
3015 } else {
3016 tmp_cc = ORQI (tmp_cc, 2);
3017 }
3018 if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3019 tmp_cc = ANDQI (tmp_cc, 14);
3020 } else {
3021 tmp_cc = ORQI (tmp_cc, 1);
3022 }
3023 if (EQSI (tmp_tmp, 0)) {
3024 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3025 } else {
3026 if (LTSI (tmp_tmp, 0)) {
3027 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3028 } else {
3029 tmp_cc = ANDQI (tmp_cc, 3);
3030 }
3031 }
3032 {
3033 SI opval = tmp_tmp;
3034 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3035 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3036 }
3037 {
3038 UQI opval = tmp_cc;
3039 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3040 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3041 }
3042 }
3043
3044 return vpc;
3045 #undef FLD
3046 }
3047
3048 /* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3049
3050 static SEM_PC
3051 SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3052 {
3053 #define FLD(f) abuf->fields.sfmt_smulcc.f
3054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3055 int UNUSED written = 0;
3056 IADDR UNUSED pc = abuf->addr;
3057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3058
3059 {
3060 QI tmp_cc;
3061 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3062 tmp_cc = ANDQI (tmp_cc, 7);
3063 } else {
3064 tmp_cc = ORQI (tmp_cc, 8);
3065 }
3066 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3067 tmp_cc = ANDQI (tmp_cc, 11);
3068 } else {
3069 tmp_cc = ORQI (tmp_cc, 4);
3070 }
3071 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3072 tmp_cc = ANDQI (tmp_cc, 13);
3073 } else {
3074 tmp_cc = ORQI (tmp_cc, 2);
3075 }
3076 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3077 tmp_cc = ANDQI (tmp_cc, 14);
3078 } else {
3079 tmp_cc = ORQI (tmp_cc, 1);
3080 }
3081 {
3082 UQI opval = tmp_cc;
3083 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3084 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3085 }
3086 }
3087
3088 return vpc;
3089 #undef FLD
3090 }
3091
3092 /* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3093
3094 static SEM_PC
3095 SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3096 {
3097 #define FLD(f) abuf->fields.sfmt_smulcc.f
3098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3099 int UNUSED written = 0;
3100 IADDR UNUSED pc = abuf->addr;
3101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3102
3103 {
3104 QI tmp_cc;
3105 tmp_cc = 0;
3106 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)) {
3107 tmp_cc = ANDQI (tmp_cc, 14);
3108 } else {
3109 tmp_cc = ORQI (tmp_cc, 1);
3110 }
3111 {
3112 UQI opval = tmp_cc;
3113 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3114 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3115 }
3116 }
3117
3118 return vpc;
3119 #undef FLD
3120 }
3121
3122 /* setlo: setlo$pack $ulo16,$GRklo */
3123
3124 static SEM_PC
3125 SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3126 {
3127 #define FLD(f) abuf->fields.sfmt_setlo.f
3128 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3129 int UNUSED written = 0;
3130 IADDR UNUSED pc = abuf->addr;
3131 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3132
3133 {
3134 UHI opval = FLD (f_u16);
3135 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3136 TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3137 }
3138
3139 return vpc;
3140 #undef FLD
3141 }
3142
3143 /* sethi: sethi$pack $uhi16,$GRkhi */
3144
3145 static SEM_PC
3146 SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3147 {
3148 #define FLD(f) abuf->fields.sfmt_sethi.f
3149 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3150 int UNUSED written = 0;
3151 IADDR UNUSED pc = abuf->addr;
3152 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3153
3154 {
3155 UHI opval = FLD (f_u16);
3156 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3157 TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3158 }
3159
3160 return vpc;
3161 #undef FLD
3162 }
3163
3164 /* setlos: setlos$pack $slo16,$GRk */
3165
3166 static SEM_PC
3167 SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3168 {
3169 #define FLD(f) abuf->fields.sfmt_setlos.f
3170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3171 int UNUSED written = 0;
3172 IADDR UNUSED pc = abuf->addr;
3173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3174
3175 {
3176 SI opval = FLD (f_s16);
3177 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3178 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3179 }
3180
3181 return vpc;
3182 #undef FLD
3183 }
3184
3185 /* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3186
3187 static SEM_PC
3188 SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3189 {
3190 #define FLD(f) abuf->fields.sfmt_addcc.f
3191 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3192 int UNUSED written = 0;
3193 IADDR UNUSED pc = abuf->addr;
3194 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3195
3196 {
3197 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3198 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3199 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3200 }
3201
3202 return vpc;
3203 #undef FLD
3204 }
3205
3206 /* ldub: ldub$pack @($GRi,$GRj),$GRk */
3207
3208 static SEM_PC
3209 SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3210 {
3211 #define FLD(f) abuf->fields.sfmt_addcc.f
3212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3213 int UNUSED written = 0;
3214 IADDR UNUSED pc = abuf->addr;
3215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3216
3217 {
3218 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3219 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3220 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3221 }
3222
3223 return vpc;
3224 #undef FLD
3225 }
3226
3227 /* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3228
3229 static SEM_PC
3230 SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3231 {
3232 #define FLD(f) abuf->fields.sfmt_addcc.f
3233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3234 int UNUSED written = 0;
3235 IADDR UNUSED pc = abuf->addr;
3236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3237
3238 {
3239 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3240 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3241 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3242 }
3243
3244 return vpc;
3245 #undef FLD
3246 }
3247
3248 /* lduh: lduh$pack @($GRi,$GRj),$GRk */
3249
3250 static SEM_PC
3251 SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3252 {
3253 #define FLD(f) abuf->fields.sfmt_addcc.f
3254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3255 int UNUSED written = 0;
3256 IADDR UNUSED pc = abuf->addr;
3257 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3258
3259 {
3260 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3261 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3262 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3263 }
3264
3265 return vpc;
3266 #undef FLD
3267 }
3268
3269 /* ld: ld$pack $ldann($GRi,$GRj),$GRk */
3270
3271 static SEM_PC
3272 SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3273 {
3274 #define FLD(f) abuf->fields.sfmt_addcc.f
3275 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3276 int UNUSED written = 0;
3277 IADDR UNUSED pc = abuf->addr;
3278 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3279
3280 {
3281 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3282 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3283 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3284 }
3285
3286 return vpc;
3287 #undef FLD
3288 }
3289
3290 /* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3291
3292 static SEM_PC
3293 SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3294 {
3295 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3297 int UNUSED written = 0;
3298 IADDR UNUSED pc = abuf->addr;
3299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3300
3301 {
3302 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3303 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3304 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3305 }
3306
3307 return vpc;
3308 #undef FLD
3309 }
3310
3311 /* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3312
3313 static SEM_PC
3314 SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3315 {
3316 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3318 int UNUSED written = 0;
3319 IADDR UNUSED pc = abuf->addr;
3320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3321
3322 {
3323 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3324 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3325 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3326 }
3327
3328 return vpc;
3329 #undef FLD
3330 }
3331
3332 /* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3333
3334 static SEM_PC
3335 SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3336 {
3337 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3339 int UNUSED written = 0;
3340 IADDR UNUSED pc = abuf->addr;
3341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3342
3343 {
3344 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3345 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3346 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3347 }
3348
3349 return vpc;
3350 #undef FLD
3351 }
3352
3353 /* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3354
3355 static SEM_PC
3356 SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3357 {
3358 #define FLD(f) abuf->fields.sfmt_ldcu.f
3359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3360 int UNUSED written = 0;
3361 IADDR UNUSED pc = abuf->addr;
3362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3363
3364 {
3365 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3366 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3367 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3368 }
3369
3370 return vpc;
3371 #undef FLD
3372 }
3373
3374 /* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3375
3376 static SEM_PC
3377 SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3378 {
3379 #define FLD(f) abuf->fields.sfmt_addcc.f
3380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3381 int UNUSED written = 0;
3382 IADDR UNUSED pc = abuf->addr;
3383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3384
3385 {
3386 BI tmp_do_op;
3387 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3388 if (tmp_do_op) {
3389 {
3390 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3391 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3392 written |= (1 << 6);
3393 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3394 }
3395 }
3396 }
3397
3398 abuf->written = written;
3399 return vpc;
3400 #undef FLD
3401 }
3402
3403 /* nldub: nldub$pack @($GRi,$GRj),$GRk */
3404
3405 static SEM_PC
3406 SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3407 {
3408 #define FLD(f) abuf->fields.sfmt_addcc.f
3409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3410 int UNUSED written = 0;
3411 IADDR UNUSED pc = abuf->addr;
3412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3413
3414 {
3415 BI tmp_do_op;
3416 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3417 if (tmp_do_op) {
3418 {
3419 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3420 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3421 written |= (1 << 6);
3422 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3423 }
3424 }
3425 }
3426
3427 abuf->written = written;
3428 return vpc;
3429 #undef FLD
3430 }
3431
3432 /* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3433
3434 static SEM_PC
3435 SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3436 {
3437 #define FLD(f) abuf->fields.sfmt_addcc.f
3438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3439 int UNUSED written = 0;
3440 IADDR UNUSED pc = abuf->addr;
3441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3442
3443 {
3444 BI tmp_do_op;
3445 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3446 if (tmp_do_op) {
3447 {
3448 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3449 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3450 written |= (1 << 6);
3451 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3452 }
3453 }
3454 }
3455
3456 abuf->written = written;
3457 return vpc;
3458 #undef FLD
3459 }
3460
3461 /* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3462
3463 static SEM_PC
3464 SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3465 {
3466 #define FLD(f) abuf->fields.sfmt_addcc.f
3467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3468 int UNUSED written = 0;
3469 IADDR UNUSED pc = abuf->addr;
3470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3471
3472 {
3473 BI tmp_do_op;
3474 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3475 if (tmp_do_op) {
3476 {
3477 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3478 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3479 written |= (1 << 6);
3480 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3481 }
3482 }
3483 }
3484
3485 abuf->written = written;
3486 return vpc;
3487 #undef FLD
3488 }
3489
3490 /* nld: nld$pack @($GRi,$GRj),$GRk */
3491
3492 static SEM_PC
3493 SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3494 {
3495 #define FLD(f) abuf->fields.sfmt_addcc.f
3496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3497 int UNUSED written = 0;
3498 IADDR UNUSED pc = abuf->addr;
3499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3500
3501 {
3502 BI tmp_do_op;
3503 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3504 if (tmp_do_op) {
3505 {
3506 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3507 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3508 written |= (1 << 6);
3509 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3510 }
3511 }
3512 }
3513
3514 abuf->written = written;
3515 return vpc;
3516 #undef FLD
3517 }
3518
3519 /* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3520
3521 static SEM_PC
3522 SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3523 {
3524 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3526 int UNUSED written = 0;
3527 IADDR UNUSED pc = abuf->addr;
3528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3529
3530 {
3531 BI tmp_do_op;
3532 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3533 if (tmp_do_op) {
3534 {
3535 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3536 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3537 written |= (1 << 6);
3538 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3539 }
3540 }
3541 }
3542
3543 abuf->written = written;
3544 return vpc;
3545 #undef FLD
3546 }
3547
3548 /* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3549
3550 static SEM_PC
3551 SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3552 {
3553 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3555 int UNUSED written = 0;
3556 IADDR UNUSED pc = abuf->addr;
3557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3558
3559 {
3560 BI tmp_do_op;
3561 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3562 if (tmp_do_op) {
3563 {
3564 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3565 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3566 written |= (1 << 6);
3567 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3568 }
3569 }
3570 }
3571
3572 abuf->written = written;
3573 return vpc;
3574 #undef FLD
3575 }
3576
3577 /* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3578
3579 static SEM_PC
3580 SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3581 {
3582 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3584 int UNUSED written = 0;
3585 IADDR UNUSED pc = abuf->addr;
3586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3587
3588 {
3589 BI tmp_do_op;
3590 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3591 if (tmp_do_op) {
3592 {
3593 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3594 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3595 written |= (1 << 6);
3596 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3597 }
3598 }
3599 }
3600
3601 abuf->written = written;
3602 return vpc;
3603 #undef FLD
3604 }
3605
3606 /* ldd: ldd$pack $lddann($GRi,$GRj),$GRdoublek */
3607
3608 static SEM_PC
3609 SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3610 {
3611 #define FLD(f) abuf->fields.sfmt_smulcc.f
3612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3613 int UNUSED written = 0;
3614 IADDR UNUSED pc = abuf->addr;
3615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3616
3617 {
3618 SI tmp_address;
3619 if (NESI (FLD (f_GRk), 0)) {
3620 {
3621 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3622 {
3623 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3624 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3625 written |= (1 << 4);
3626 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3627 }
3628 }
3629 }
3630 }
3631
3632 abuf->written = written;
3633 return vpc;
3634 #undef FLD
3635 }
3636
3637 /* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3638
3639 static SEM_PC
3640 SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3641 {
3642 #define FLD(f) abuf->fields.sfmt_clddfu.f
3643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3644 int UNUSED written = 0;
3645 IADDR UNUSED pc = abuf->addr;
3646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3647
3648 {
3649 SI tmp_address;
3650 {
3651 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3652 {
3653 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3654 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3655 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3656 }
3657 }
3658 }
3659
3660 return vpc;
3661 #undef FLD
3662 }
3663
3664 /* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3665
3666 static SEM_PC
3667 SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3668 {
3669 #define FLD(f) abuf->fields.sfmt_lddcu.f
3670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3671 int UNUSED written = 0;
3672 IADDR UNUSED pc = abuf->addr;
3673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3674
3675 {
3676 SI tmp_address;
3677 {
3678 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3679 {
3680 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3681 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3682 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3683 }
3684 }
3685 }
3686
3687 return vpc;
3688 #undef FLD
3689 }
3690
3691 /* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3692
3693 static SEM_PC
3694 SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3695 {
3696 #define FLD(f) abuf->fields.sfmt_smulcc.f
3697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3698 int UNUSED written = 0;
3699 IADDR UNUSED pc = abuf->addr;
3700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3701
3702 {
3703 SI tmp_address;
3704 {
3705 BI tmp_do_op;
3706 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3707 if (tmp_do_op) {
3708 if (NESI (FLD (f_GRk), 0)) {
3709 {
3710 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3711 {
3712 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3713 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3714 written |= (1 << 6);
3715 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3716 }
3717 }
3718 }
3719 }
3720 }
3721 }
3722
3723 abuf->written = written;
3724 return vpc;
3725 #undef FLD
3726 }
3727
3728 /* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3729
3730 static SEM_PC
3731 SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3732 {
3733 #define FLD(f) abuf->fields.sfmt_clddfu.f
3734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3735 int UNUSED written = 0;
3736 IADDR UNUSED pc = abuf->addr;
3737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3738
3739 {
3740 SI tmp_address;
3741 {
3742 BI tmp_do_op;
3743 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3744 if (tmp_do_op) {
3745 {
3746 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3747 {
3748 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3749 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3750 written |= (1 << 6);
3751 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3752 }
3753 }
3754 }
3755 }
3756 }
3757
3758 abuf->written = written;
3759 return vpc;
3760 #undef FLD
3761 }
3762
3763 /* ldq: ldq$pack @($GRi,$GRj),$GRk */
3764
3765 static SEM_PC
3766 SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3767 {
3768 #define FLD(f) abuf->fields.sfmt_smulcc.f
3769 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3770 int UNUSED written = 0;
3771 IADDR UNUSED pc = abuf->addr;
3772 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3773
3774 {
3775 SI tmp_address;
3776 {
3777 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3778 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3779 }
3780 }
3781
3782 return vpc;
3783 #undef FLD
3784 }
3785
3786 /* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3787
3788 static SEM_PC
3789 SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3790 {
3791 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3792 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3793 int UNUSED written = 0;
3794 IADDR UNUSED pc = abuf->addr;
3795 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3796
3797 {
3798 SI tmp_address;
3799 {
3800 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3801 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3802 }
3803 }
3804
3805 return vpc;
3806 #undef FLD
3807 }
3808
3809 /* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3810
3811 static SEM_PC
3812 SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3813 {
3814 #define FLD(f) abuf->fields.sfmt_stdcu.f
3815 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3816 int UNUSED written = 0;
3817 IADDR UNUSED pc = abuf->addr;
3818 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3819
3820 {
3821 SI tmp_address;
3822 {
3823 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3824 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3825 }
3826 }
3827
3828 return vpc;
3829 #undef FLD
3830 }
3831
3832 /* nldq: nldq$pack @($GRi,$GRj),$GRk */
3833
3834 static SEM_PC
3835 SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3836 {
3837 #define FLD(f) abuf->fields.sfmt_smulcc.f
3838 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3839 int UNUSED written = 0;
3840 IADDR UNUSED pc = abuf->addr;
3841 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3842
3843 {
3844 SI tmp_address;
3845 {
3846 BI tmp_do_op;
3847 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3848 if (tmp_do_op) {
3849 {
3850 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3851 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3852 }
3853 }
3854 }
3855 }
3856
3857 return vpc;
3858 #undef FLD
3859 }
3860
3861 /* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3862
3863 static SEM_PC
3864 SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3865 {
3866 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3867 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3868 int UNUSED written = 0;
3869 IADDR UNUSED pc = abuf->addr;
3870 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3871
3872 {
3873 SI tmp_address;
3874 {
3875 BI tmp_do_op;
3876 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3877 if (tmp_do_op) {
3878 {
3879 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3880 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3881 }
3882 }
3883 }
3884 }
3885
3886 return vpc;
3887 #undef FLD
3888 }
3889
3890 /* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3891
3892 static SEM_PC
3893 SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3894 {
3895 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3897 int UNUSED written = 0;
3898 IADDR UNUSED pc = abuf->addr;
3899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3900
3901 {
3902 USI tmp_address;
3903 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3904 {
3905 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3906 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3907 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3908 }
3909 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3910 {
3911 {
3912 SI opval = tmp_address;
3913 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3914 written |= (1 << 5);
3915 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3916 }
3917 frvbf_force_update (current_cpu);
3918 }
3919 }
3920 }
3921
3922 abuf->written = written;
3923 return vpc;
3924 #undef FLD
3925 }
3926
3927 /* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3928
3929 static SEM_PC
3930 SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3931 {
3932 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3934 int UNUSED written = 0;
3935 IADDR UNUSED pc = abuf->addr;
3936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3937
3938 {
3939 USI tmp_address;
3940 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3941 {
3942 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3944 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3945 }
3946 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3947 {
3948 {
3949 SI opval = tmp_address;
3950 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3951 written |= (1 << 5);
3952 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3953 }
3954 frvbf_force_update (current_cpu);
3955 }
3956 }
3957 }
3958
3959 abuf->written = written;
3960 return vpc;
3961 #undef FLD
3962 }
3963
3964 /* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3965
3966 static SEM_PC
3967 SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3968 {
3969 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3971 int UNUSED written = 0;
3972 IADDR UNUSED pc = abuf->addr;
3973 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3974
3975 {
3976 USI tmp_address;
3977 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3978 {
3979 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3981 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3982 }
3983 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3984 {
3985 {
3986 SI opval = tmp_address;
3987 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3988 written |= (1 << 5);
3989 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3990 }
3991 frvbf_force_update (current_cpu);
3992 }
3993 }
3994 }
3995
3996 abuf->written = written;
3997 return vpc;
3998 #undef FLD
3999 }
4000
4001 /* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
4002
4003 static SEM_PC
4004 SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4005 {
4006 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4008 int UNUSED written = 0;
4009 IADDR UNUSED pc = abuf->addr;
4010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4011
4012 {
4013 USI tmp_address;
4014 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4015 {
4016 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4017 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4018 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4019 }
4020 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4021 {
4022 {
4023 SI opval = tmp_address;
4024 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4025 written |= (1 << 5);
4026 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4027 }
4028 frvbf_force_update (current_cpu);
4029 }
4030 }
4031 }
4032
4033 abuf->written = written;
4034 return vpc;
4035 #undef FLD
4036 }
4037
4038 /* ldu: ldu$pack @($GRi,$GRj),$GRk */
4039
4040 static SEM_PC
4041 SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4042 {
4043 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4044 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4045 int UNUSED written = 0;
4046 IADDR UNUSED pc = abuf->addr;
4047 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4048
4049 {
4050 USI tmp_address;
4051 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4052 {
4053 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4054 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4055 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4056 }
4057 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4058 {
4059 {
4060 SI opval = tmp_address;
4061 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4062 written |= (1 << 5);
4063 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4064 }
4065 frvbf_force_update (current_cpu);
4066 }
4067 }
4068 }
4069
4070 abuf->written = written;
4071 return vpc;
4072 #undef FLD
4073 }
4074
4075 /* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4076
4077 static SEM_PC
4078 SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4079 {
4080 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4081 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4082 int UNUSED written = 0;
4083 IADDR UNUSED pc = abuf->addr;
4084 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4085
4086 {
4087 BI tmp_do_op;
4088 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4089 if (tmp_do_op) {
4090 {
4091 USI tmp_address;
4092 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4093 {
4094 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4095 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4096 written |= (1 << 7);
4097 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4098 }
4099 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4100 {
4101 {
4102 SI opval = tmp_address;
4103 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4104 written |= (1 << 6);
4105 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4106 }
4107 frvbf_force_update (current_cpu);
4108 }
4109 }
4110 }
4111 }
4112 }
4113
4114 abuf->written = written;
4115 return vpc;
4116 #undef FLD
4117 }
4118
4119 /* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4120
4121 static SEM_PC
4122 SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4123 {
4124 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4126 int UNUSED written = 0;
4127 IADDR UNUSED pc = abuf->addr;
4128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4129
4130 {
4131 BI tmp_do_op;
4132 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4133 if (tmp_do_op) {
4134 {
4135 USI tmp_address;
4136 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4137 {
4138 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4139 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4140 written |= (1 << 7);
4141 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4142 }
4143 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4144 {
4145 {
4146 SI opval = tmp_address;
4147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4148 written |= (1 << 6);
4149 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4150 }
4151 frvbf_force_update (current_cpu);
4152 }
4153 }
4154 }
4155 }
4156 }
4157
4158 abuf->written = written;
4159 return vpc;
4160 #undef FLD
4161 }
4162
4163 /* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4164
4165 static SEM_PC
4166 SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4167 {
4168 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4170 int UNUSED written = 0;
4171 IADDR UNUSED pc = abuf->addr;
4172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4173
4174 {
4175 BI tmp_do_op;
4176 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4177 if (tmp_do_op) {
4178 {
4179 USI tmp_address;
4180 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4181 {
4182 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4183 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4184 written |= (1 << 7);
4185 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4186 }
4187 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4188 {
4189 {
4190 SI opval = tmp_address;
4191 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4192 written |= (1 << 6);
4193 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4194 }
4195 frvbf_force_update (current_cpu);
4196 }
4197 }
4198 }
4199 }
4200 }
4201
4202 abuf->written = written;
4203 return vpc;
4204 #undef FLD
4205 }
4206
4207 /* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4208
4209 static SEM_PC
4210 SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4211 {
4212 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4214 int UNUSED written = 0;
4215 IADDR UNUSED pc = abuf->addr;
4216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4217
4218 {
4219 BI tmp_do_op;
4220 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4221 if (tmp_do_op) {
4222 {
4223 USI tmp_address;
4224 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4225 {
4226 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4227 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4228 written |= (1 << 7);
4229 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4230 }
4231 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4232 {
4233 {
4234 SI opval = tmp_address;
4235 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4236 written |= (1 << 6);
4237 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4238 }
4239 frvbf_force_update (current_cpu);
4240 }
4241 }
4242 }
4243 }
4244 }
4245
4246 abuf->written = written;
4247 return vpc;
4248 #undef FLD
4249 }
4250
4251 /* nldu: nldu$pack @($GRi,$GRj),$GRk */
4252
4253 static SEM_PC
4254 SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4255 {
4256 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4258 int UNUSED written = 0;
4259 IADDR UNUSED pc = abuf->addr;
4260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4261
4262 {
4263 BI tmp_do_op;
4264 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4265 if (tmp_do_op) {
4266 {
4267 USI tmp_address;
4268 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4269 {
4270 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4271 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4272 written |= (1 << 7);
4273 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4274 }
4275 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4276 {
4277 {
4278 SI opval = tmp_address;
4279 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4280 written |= (1 << 6);
4281 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4282 }
4283 frvbf_force_update (current_cpu);
4284 }
4285 }
4286 }
4287 }
4288 }
4289
4290 abuf->written = written;
4291 return vpc;
4292 #undef FLD
4293 }
4294
4295 /* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4296
4297 static SEM_PC
4298 SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4299 {
4300 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4302 int UNUSED written = 0;
4303 IADDR UNUSED pc = abuf->addr;
4304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4305
4306 {
4307 USI tmp_address;
4308 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4309 {
4310 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4311 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4312 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4313 }
4314 {
4315 SI opval = tmp_address;
4316 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4317 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4318 }
4319 frvbf_force_update (current_cpu);
4320 }
4321
4322 return vpc;
4323 #undef FLD
4324 }
4325
4326 /* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4327
4328 static SEM_PC
4329 SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4330 {
4331 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4333 int UNUSED written = 0;
4334 IADDR UNUSED pc = abuf->addr;
4335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4336
4337 {
4338 USI tmp_address;
4339 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4340 {
4341 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4342 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4343 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4344 }
4345 {
4346 SI opval = tmp_address;
4347 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4348 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4349 }
4350 frvbf_force_update (current_cpu);
4351 }
4352
4353 return vpc;
4354 #undef FLD
4355 }
4356
4357 /* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4358
4359 static SEM_PC
4360 SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4361 {
4362 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4364 int UNUSED written = 0;
4365 IADDR UNUSED pc = abuf->addr;
4366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4367
4368 {
4369 USI tmp_address;
4370 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4371 {
4372 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4373 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4374 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4375 }
4376 {
4377 SI opval = tmp_address;
4378 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4379 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4380 }
4381 frvbf_force_update (current_cpu);
4382 }
4383
4384 return vpc;
4385 #undef FLD
4386 }
4387
4388 /* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4389
4390 static SEM_PC
4391 SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4392 {
4393 #define FLD(f) abuf->fields.sfmt_ldcu.f
4394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4395 int UNUSED written = 0;
4396 IADDR UNUSED pc = abuf->addr;
4397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4398
4399 {
4400 USI tmp_address;
4401 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4402 {
4403 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4404 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4405 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4406 }
4407 {
4408 SI opval = tmp_address;
4409 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4410 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4411 }
4412 frvbf_force_update (current_cpu);
4413 }
4414
4415 return vpc;
4416 #undef FLD
4417 }
4418
4419 /* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4420
4421 static SEM_PC
4422 SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4423 {
4424 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4426 int UNUSED written = 0;
4427 IADDR UNUSED pc = abuf->addr;
4428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4429
4430 {
4431 BI tmp_do_op;
4432 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4433 if (tmp_do_op) {
4434 {
4435 USI tmp_address;
4436 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4437 {
4438 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4439 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4440 written |= (1 << 6);
4441 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4442 }
4443 {
4444 SI opval = tmp_address;
4445 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4446 written |= (1 << 7);
4447 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4448 }
4449 frvbf_force_update (current_cpu);
4450 }
4451 }
4452 }
4453
4454 abuf->written = written;
4455 return vpc;
4456 #undef FLD
4457 }
4458
4459 /* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4460
4461 static SEM_PC
4462 SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4463 {
4464 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4465 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4466 int UNUSED written = 0;
4467 IADDR UNUSED pc = abuf->addr;
4468 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4469
4470 {
4471 BI tmp_do_op;
4472 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4473 if (tmp_do_op) {
4474 {
4475 USI tmp_address;
4476 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4477 {
4478 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4479 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4480 written |= (1 << 6);
4481 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4482 }
4483 {
4484 SI opval = tmp_address;
4485 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4486 written |= (1 << 7);
4487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4488 }
4489 frvbf_force_update (current_cpu);
4490 }
4491 }
4492 }
4493
4494 abuf->written = written;
4495 return vpc;
4496 #undef FLD
4497 }
4498
4499 /* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4500
4501 static SEM_PC
4502 SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4503 {
4504 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4506 int UNUSED written = 0;
4507 IADDR UNUSED pc = abuf->addr;
4508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4509
4510 {
4511 BI tmp_do_op;
4512 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4513 if (tmp_do_op) {
4514 {
4515 USI tmp_address;
4516 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4517 {
4518 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4519 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4520 written |= (1 << 6);
4521 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4522 }
4523 {
4524 SI opval = tmp_address;
4525 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4526 written |= (1 << 7);
4527 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4528 }
4529 frvbf_force_update (current_cpu);
4530 }
4531 }
4532 }
4533
4534 abuf->written = written;
4535 return vpc;
4536 #undef FLD
4537 }
4538
4539 /* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4540
4541 static SEM_PC
4542 SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4543 {
4544 #define FLD(f) abuf->fields.sfmt_clddu.f
4545 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4546 int UNUSED written = 0;
4547 IADDR UNUSED pc = abuf->addr;
4548 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4549
4550 {
4551 SI tmp_address;
4552 if (NESI (FLD (f_GRk), 0)) {
4553 {
4554 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4555 {
4556 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4557 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4558 written |= (1 << 5);
4559 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4560 }
4561 }
4562 }
4563 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4564 {
4565 {
4566 SI opval = tmp_address;
4567 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4568 written |= (1 << 6);
4569 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4570 }
4571 frvbf_force_update (current_cpu);
4572 }
4573 }
4574 }
4575
4576 abuf->written = written;
4577 return vpc;
4578 #undef FLD
4579 }
4580
4581 /* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4582
4583 static SEM_PC
4584 SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4585 {
4586 #define FLD(f) abuf->fields.sfmt_clddu.f
4587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4588 int UNUSED written = 0;
4589 IADDR UNUSED pc = abuf->addr;
4590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4591
4592 {
4593 BI tmp_do_op;
4594 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4595 if (tmp_do_op) {
4596 {
4597 SI tmp_address;
4598 if (NESI (FLD (f_GRk), 0)) {
4599 {
4600 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4601 {
4602 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4603 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4604 written |= (1 << 6);
4605 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4606 }
4607 }
4608 }
4609 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4610 {
4611 {
4612 SI opval = tmp_address;
4613 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4614 written |= (1 << 7);
4615 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4616 }
4617 frvbf_force_update (current_cpu);
4618 }
4619 }
4620 }
4621 }
4622 }
4623
4624 abuf->written = written;
4625 return vpc;
4626 #undef FLD
4627 }
4628
4629 /* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4630
4631 static SEM_PC
4632 SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4633 {
4634 #define FLD(f) abuf->fields.sfmt_clddfu.f
4635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4636 int UNUSED written = 0;
4637 IADDR UNUSED pc = abuf->addr;
4638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4639
4640 {
4641 SI tmp_address;
4642 {
4643 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4644 {
4645 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4646 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4647 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4648 }
4649 }
4650 {
4651 SI opval = tmp_address;
4652 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4653 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4654 }
4655 frvbf_force_update (current_cpu);
4656 }
4657
4658 return vpc;
4659 #undef FLD
4660 }
4661
4662 /* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4663
4664 static SEM_PC
4665 SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4666 {
4667 #define FLD(f) abuf->fields.sfmt_lddcu.f
4668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4669 int UNUSED written = 0;
4670 IADDR UNUSED pc = abuf->addr;
4671 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4672
4673 {
4674 SI tmp_address;
4675 {
4676 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4677 {
4678 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4679 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4680 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4681 }
4682 }
4683 {
4684 SI opval = tmp_address;
4685 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4686 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4687 }
4688 frvbf_force_update (current_cpu);
4689 }
4690
4691 return vpc;
4692 #undef FLD
4693 }
4694
4695 /* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4696
4697 static SEM_PC
4698 SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4699 {
4700 #define FLD(f) abuf->fields.sfmt_clddfu.f
4701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4702 int UNUSED written = 0;
4703 IADDR UNUSED pc = abuf->addr;
4704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4705
4706 {
4707 BI tmp_do_op;
4708 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4709 if (tmp_do_op) {
4710 {
4711 SI tmp_address;
4712 {
4713 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4714 {
4715 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4716 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4717 written |= (1 << 6);
4718 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4719 }
4720 }
4721 {
4722 SI opval = tmp_address;
4723 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4724 written |= (1 << 7);
4725 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4726 }
4727 frvbf_force_update (current_cpu);
4728 }
4729 }
4730 }
4731
4732 abuf->written = written;
4733 return vpc;
4734 #undef FLD
4735 }
4736
4737 /* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4738
4739 static SEM_PC
4740 SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4741 {
4742 #define FLD(f) abuf->fields.sfmt_cstdu.f
4743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4744 int UNUSED written = 0;
4745 IADDR UNUSED pc = abuf->addr;
4746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4747
4748 {
4749 SI tmp_address;
4750 {
4751 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4752 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4753 }
4754 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4755 {
4756 {
4757 SI opval = tmp_address;
4758 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4759 written |= (1 << 5);
4760 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4761 }
4762 frvbf_force_update (current_cpu);
4763 }
4764 }
4765 }
4766
4767 abuf->written = written;
4768 return vpc;
4769 #undef FLD
4770 }
4771
4772 /* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4773
4774 static SEM_PC
4775 SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4776 {
4777 #define FLD(f) abuf->fields.sfmt_cstdu.f
4778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4779 int UNUSED written = 0;
4780 IADDR UNUSED pc = abuf->addr;
4781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4782
4783 {
4784 BI tmp_do_op;
4785 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4786 if (tmp_do_op) {
4787 {
4788 SI tmp_address;
4789 {
4790 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4791 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4792 }
4793 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4794 {
4795 {
4796 SI opval = tmp_address;
4797 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4798 written |= (1 << 6);
4799 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4800 }
4801 frvbf_force_update (current_cpu);
4802 }
4803 }
4804 }
4805 }
4806 }
4807
4808 abuf->written = written;
4809 return vpc;
4810 #undef FLD
4811 }
4812
4813 /* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4814
4815 static SEM_PC
4816 SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4817 {
4818 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4820 int UNUSED written = 0;
4821 IADDR UNUSED pc = abuf->addr;
4822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4823
4824 {
4825 SI tmp_address;
4826 {
4827 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4828 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4829 }
4830 {
4831 SI opval = tmp_address;
4832 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4833 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4834 }
4835 frvbf_force_update (current_cpu);
4836 }
4837
4838 return vpc;
4839 #undef FLD
4840 }
4841
4842 /* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4843
4844 static SEM_PC
4845 SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4846 {
4847 #define FLD(f) abuf->fields.sfmt_stdcu.f
4848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4849 int UNUSED written = 0;
4850 IADDR UNUSED pc = abuf->addr;
4851 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4852
4853 {
4854 SI tmp_address;
4855 {
4856 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4857 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4858 }
4859 {
4860 SI opval = tmp_address;
4861 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4862 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4863 }
4864 frvbf_force_update (current_cpu);
4865 }
4866
4867 return vpc;
4868 #undef FLD
4869 }
4870
4871 /* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4872
4873 static SEM_PC
4874 SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4875 {
4876 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4877 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4878 int UNUSED written = 0;
4879 IADDR UNUSED pc = abuf->addr;
4880 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4881
4882 {
4883 BI tmp_do_op;
4884 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4885 if (tmp_do_op) {
4886 {
4887 SI tmp_address;
4888 {
4889 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4890 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4891 }
4892 {
4893 SI opval = tmp_address;
4894 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4895 written |= (1 << 6);
4896 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4897 }
4898 frvbf_force_update (current_cpu);
4899 }
4900 }
4901 }
4902
4903 abuf->written = written;
4904 return vpc;
4905 #undef FLD
4906 }
4907
4908 /* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4909
4910 static SEM_PC
4911 SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4912 {
4913 #define FLD(f) abuf->fields.sfmt_swapi.f
4914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4915 int UNUSED written = 0;
4916 IADDR UNUSED pc = abuf->addr;
4917 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4918
4919 {
4920 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4921 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4922 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4923 }
4924
4925 return vpc;
4926 #undef FLD
4927 }
4928
4929 /* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4930
4931 static SEM_PC
4932 SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4933 {
4934 #define FLD(f) abuf->fields.sfmt_swapi.f
4935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4936 int UNUSED written = 0;
4937 IADDR UNUSED pc = abuf->addr;
4938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4939
4940 {
4941 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4942 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4943 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4944 }
4945
4946 return vpc;
4947 #undef FLD
4948 }
4949
4950 /* ldi: ldi$pack @($GRi,$d12),$GRk */
4951
4952 static SEM_PC
4953 SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4954 {
4955 #define FLD(f) abuf->fields.sfmt_swapi.f
4956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4957 int UNUSED written = 0;
4958 IADDR UNUSED pc = abuf->addr;
4959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4960
4961 {
4962 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4963 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4965 }
4966
4967 return vpc;
4968 #undef FLD
4969 }
4970
4971 /* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4972
4973 static SEM_PC
4974 SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4975 {
4976 #define FLD(f) abuf->fields.sfmt_swapi.f
4977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4978 int UNUSED written = 0;
4979 IADDR UNUSED pc = abuf->addr;
4980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4981
4982 {
4983 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4984 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4986 }
4987
4988 return vpc;
4989 #undef FLD
4990 }
4991
4992 /* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4993
4994 static SEM_PC
4995 SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4996 {
4997 #define FLD(f) abuf->fields.sfmt_swapi.f
4998 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4999 int UNUSED written = 0;
5000 IADDR UNUSED pc = abuf->addr;
5001 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5002
5003 {
5004 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5005 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5006 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5007 }
5008
5009 return vpc;
5010 #undef FLD
5011 }
5012
5013 /* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5014
5015 static SEM_PC
5016 SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5017 {
5018 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5020 int UNUSED written = 0;
5021 IADDR UNUSED pc = abuf->addr;
5022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5023
5024 {
5025 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5026 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5027 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5028 }
5029
5030 return vpc;
5031 #undef FLD
5032 }
5033
5034 /* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5035
5036 static SEM_PC
5037 SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5038 {
5039 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5041 int UNUSED written = 0;
5042 IADDR UNUSED pc = abuf->addr;
5043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5044
5045 {
5046 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5047 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5048 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5049 }
5050
5051 return vpc;
5052 #undef FLD
5053 }
5054
5055 /* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5056
5057 static SEM_PC
5058 SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5059 {
5060 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5061 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5062 int UNUSED written = 0;
5063 IADDR UNUSED pc = abuf->addr;
5064 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5065
5066 {
5067 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5068 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5069 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5070 }
5071
5072 return vpc;
5073 #undef FLD
5074 }
5075
5076 /* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5077
5078 static SEM_PC
5079 SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5080 {
5081 #define FLD(f) abuf->fields.sfmt_swapi.f
5082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5083 int UNUSED written = 0;
5084 IADDR UNUSED pc = abuf->addr;
5085 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5086
5087 {
5088 BI tmp_do_op;
5089 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5090 if (tmp_do_op) {
5091 {
5092 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5093 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5094 written |= (1 << 5);
5095 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5096 }
5097 }
5098 }
5099
5100 abuf->written = written;
5101 return vpc;
5102 #undef FLD
5103 }
5104
5105 /* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5106
5107 static SEM_PC
5108 SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5109 {
5110 #define FLD(f) abuf->fields.sfmt_swapi.f
5111 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5112 int UNUSED written = 0;
5113 IADDR UNUSED pc = abuf->addr;
5114 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5115
5116 {
5117 BI tmp_do_op;
5118 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5119 if (tmp_do_op) {
5120 {
5121 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5122 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5123 written |= (1 << 5);
5124 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5125 }
5126 }
5127 }
5128
5129 abuf->written = written;
5130 return vpc;
5131 #undef FLD
5132 }
5133
5134 /* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5135
5136 static SEM_PC
5137 SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5138 {
5139 #define FLD(f) abuf->fields.sfmt_swapi.f
5140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5141 int UNUSED written = 0;
5142 IADDR UNUSED pc = abuf->addr;
5143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5144
5145 {
5146 BI tmp_do_op;
5147 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5148 if (tmp_do_op) {
5149 {
5150 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5151 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5152 written |= (1 << 5);
5153 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5154 }
5155 }
5156 }
5157
5158 abuf->written = written;
5159 return vpc;
5160 #undef FLD
5161 }
5162
5163 /* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5164
5165 static SEM_PC
5166 SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5167 {
5168 #define FLD(f) abuf->fields.sfmt_swapi.f
5169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5170 int UNUSED written = 0;
5171 IADDR UNUSED pc = abuf->addr;
5172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5173
5174 {
5175 BI tmp_do_op;
5176 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5177 if (tmp_do_op) {
5178 {
5179 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5180 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5181 written |= (1 << 5);
5182 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5183 }
5184 }
5185 }
5186
5187 abuf->written = written;
5188 return vpc;
5189 #undef FLD
5190 }
5191
5192 /* nldi: nldi$pack @($GRi,$d12),$GRk */
5193
5194 static SEM_PC
5195 SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5196 {
5197 #define FLD(f) abuf->fields.sfmt_swapi.f
5198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5199 int UNUSED written = 0;
5200 IADDR UNUSED pc = abuf->addr;
5201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5202
5203 {
5204 BI tmp_do_op;
5205 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5206 if (tmp_do_op) {
5207 {
5208 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5209 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5210 written |= (1 << 5);
5211 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5212 }
5213 }
5214 }
5215
5216 abuf->written = written;
5217 return vpc;
5218 #undef FLD
5219 }
5220
5221 /* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5222
5223 static SEM_PC
5224 SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5225 {
5226 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5228 int UNUSED written = 0;
5229 IADDR UNUSED pc = abuf->addr;
5230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5231
5232 {
5233 BI tmp_do_op;
5234 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5235 if (tmp_do_op) {
5236 {
5237 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5238 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5239 written |= (1 << 5);
5240 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5241 }
5242 }
5243 }
5244
5245 abuf->written = written;
5246 return vpc;
5247 #undef FLD
5248 }
5249
5250 /* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5251
5252 static SEM_PC
5253 SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5254 {
5255 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5256 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5257 int UNUSED written = 0;
5258 IADDR UNUSED pc = abuf->addr;
5259 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5260
5261 {
5262 BI tmp_do_op;
5263 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5264 if (tmp_do_op) {
5265 {
5266 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5267 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5268 written |= (1 << 5);
5269 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5270 }
5271 }
5272 }
5273
5274 abuf->written = written;
5275 return vpc;
5276 #undef FLD
5277 }
5278
5279 /* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5280
5281 static SEM_PC
5282 SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5283 {
5284 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5285 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5286 int UNUSED written = 0;
5287 IADDR UNUSED pc = abuf->addr;
5288 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5289
5290 {
5291 BI tmp_do_op;
5292 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5293 if (tmp_do_op) {
5294 {
5295 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5296 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5297 written |= (1 << 5);
5298 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5299 }
5300 }
5301 }
5302
5303 abuf->written = written;
5304 return vpc;
5305 #undef FLD
5306 }
5307
5308 /* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5309
5310 static SEM_PC
5311 SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5312 {
5313 #define FLD(f) abuf->fields.sfmt_smuli.f
5314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5315 int UNUSED written = 0;
5316 IADDR UNUSED pc = abuf->addr;
5317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5318
5319 {
5320 SI tmp_address;
5321 if (NESI (FLD (f_GRk), 0)) {
5322 {
5323 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5324 {
5325 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5326 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5327 written |= (1 << 4);
5328 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5329 }
5330 }
5331 }
5332 }
5333
5334 abuf->written = written;
5335 return vpc;
5336 #undef FLD
5337 }
5338
5339 /* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5340
5341 static SEM_PC
5342 SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5343 {
5344 #define FLD(f) abuf->fields.sfmt_lddfi.f
5345 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5346 int UNUSED written = 0;
5347 IADDR UNUSED pc = abuf->addr;
5348 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5349
5350 {
5351 SI tmp_address;
5352 {
5353 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5354 {
5355 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5356 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5357 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5358 }
5359 }
5360 }
5361
5362 return vpc;
5363 #undef FLD
5364 }
5365
5366 /* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5367
5368 static SEM_PC
5369 SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5370 {
5371 #define FLD(f) abuf->fields.sfmt_smuli.f
5372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5373 int UNUSED written = 0;
5374 IADDR UNUSED pc = abuf->addr;
5375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5376
5377 {
5378 SI tmp_address;
5379 {
5380 BI tmp_do_op;
5381 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5382 if (tmp_do_op) {
5383 if (NESI (FLD (f_GRk), 0)) {
5384 {
5385 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5386 {
5387 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5388 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5389 written |= (1 << 5);
5390 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5391 }
5392 }
5393 }
5394 }
5395 }
5396 }
5397
5398 abuf->written = written;
5399 return vpc;
5400 #undef FLD
5401 }
5402
5403 /* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5404
5405 static SEM_PC
5406 SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5407 {
5408 #define FLD(f) abuf->fields.sfmt_lddfi.f
5409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5410 int UNUSED written = 0;
5411 IADDR UNUSED pc = abuf->addr;
5412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5413
5414 {
5415 SI tmp_address;
5416 {
5417 BI tmp_do_op;
5418 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5419 if (tmp_do_op) {
5420 {
5421 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5422 {
5423 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5424 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5425 written |= (1 << 5);
5426 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5427 }
5428 }
5429 }
5430 }
5431 }
5432
5433 abuf->written = written;
5434 return vpc;
5435 #undef FLD
5436 }
5437
5438 /* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5439
5440 static SEM_PC
5441 SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5442 {
5443 #define FLD(f) abuf->fields.sfmt_stdi.f
5444 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5445 int UNUSED written = 0;
5446 IADDR UNUSED pc = abuf->addr;
5447 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5448
5449 {
5450 SI tmp_address;
5451 {
5452 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5453 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5454 }
5455 }
5456
5457 return vpc;
5458 #undef FLD
5459 }
5460
5461 /* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5462
5463 static SEM_PC
5464 SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5465 {
5466 #define FLD(f) abuf->fields.sfmt_stdfi.f
5467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5468 int UNUSED written = 0;
5469 IADDR UNUSED pc = abuf->addr;
5470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5471
5472 {
5473 SI tmp_address;
5474 {
5475 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5476 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5477 }
5478 }
5479
5480 return vpc;
5481 #undef FLD
5482 }
5483
5484 /* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5485
5486 static SEM_PC
5487 SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5488 {
5489 #define FLD(f) abuf->fields.sfmt_stdfi.f
5490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5491 int UNUSED written = 0;
5492 IADDR UNUSED pc = abuf->addr;
5493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5494
5495 {
5496 SI tmp_address;
5497 {
5498 BI tmp_do_op;
5499 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5500 if (tmp_do_op) {
5501 {
5502 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5503 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5504 }
5505 }
5506 }
5507 }
5508
5509 return vpc;
5510 #undef FLD
5511 }
5512
5513 /* stb: stb$pack $GRk,@($GRi,$GRj) */
5514
5515 static SEM_PC
5516 SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5517 {
5518 #define FLD(f) abuf->fields.sfmt_cswap.f
5519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5520 int UNUSED written = 0;
5521 IADDR UNUSED pc = abuf->addr;
5522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5523
5524 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)));
5525
5526 return vpc;
5527 #undef FLD
5528 }
5529
5530 /* sth: sth$pack $GRk,@($GRi,$GRj) */
5531
5532 static SEM_PC
5533 SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5534 {
5535 #define FLD(f) abuf->fields.sfmt_cswap.f
5536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5537 int UNUSED written = 0;
5538 IADDR UNUSED pc = abuf->addr;
5539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5540
5541 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)));
5542
5543 return vpc;
5544 #undef FLD
5545 }
5546
5547 /* st: st$pack $GRk,@($GRi,$GRj) */
5548
5549 static SEM_PC
5550 SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5551 {
5552 #define FLD(f) abuf->fields.sfmt_cswap.f
5553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5554 int UNUSED written = 0;
5555 IADDR UNUSED pc = abuf->addr;
5556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5557
5558 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)));
5559
5560 return vpc;
5561 #undef FLD
5562 }
5563
5564 /* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5565
5566 static SEM_PC
5567 SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5568 {
5569 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5571 int UNUSED written = 0;
5572 IADDR UNUSED pc = abuf->addr;
5573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5574
5575 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)));
5576
5577 return vpc;
5578 #undef FLD
5579 }
5580
5581 /* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5582
5583 static SEM_PC
5584 SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5585 {
5586 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5588 int UNUSED written = 0;
5589 IADDR UNUSED pc = abuf->addr;
5590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5591
5592 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)));
5593
5594 return vpc;
5595 #undef FLD
5596 }
5597
5598 /* stf: stf$pack $FRintk,@($GRi,$GRj) */
5599
5600 static SEM_PC
5601 SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5602 {
5603 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5605 int UNUSED written = 0;
5606 IADDR UNUSED pc = abuf->addr;
5607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5608
5609 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)));
5610
5611 return vpc;
5612 #undef FLD
5613 }
5614
5615 /* stc: stc$pack $CPRk,@($GRi,$GRj) */
5616
5617 static SEM_PC
5618 SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5619 {
5620 #define FLD(f) abuf->fields.sfmt_stcu.f
5621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5622 int UNUSED written = 0;
5623 IADDR UNUSED pc = abuf->addr;
5624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5625
5626 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)]));
5627
5628 return vpc;
5629 #undef FLD
5630 }
5631
5632 /* std: std$pack $GRdoublek,@($GRi,$GRj) */
5633
5634 static SEM_PC
5635 SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5636 {
5637 #define FLD(f) abuf->fields.sfmt_cstdu.f
5638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5639 int UNUSED written = 0;
5640 IADDR UNUSED pc = abuf->addr;
5641 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5642
5643 {
5644 SI tmp_address;
5645 {
5646 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5647 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5648 }
5649 }
5650
5651 return vpc;
5652 #undef FLD
5653 }
5654
5655 /* stdf: stdf$pack $FRdoublek,@($GRi,$GRj) */
5656
5657 static SEM_PC
5658 SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5659 {
5660 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5661 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5662 int UNUSED written = 0;
5663 IADDR UNUSED pc = abuf->addr;
5664 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5665
5666 {
5667 SI tmp_address;
5668 {
5669 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5670 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5671 }
5672 }
5673
5674 return vpc;
5675 #undef FLD
5676 }
5677
5678 /* stdc: stdc$pack $CPRdoublek,@($GRi,$GRj) */
5679
5680 static SEM_PC
5681 SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5682 {
5683 #define FLD(f) abuf->fields.sfmt_stdcu.f
5684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5685 int UNUSED written = 0;
5686 IADDR UNUSED pc = abuf->addr;
5687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5688
5689 {
5690 SI tmp_address;
5691 {
5692 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5693 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5694 }
5695 }
5696
5697 return vpc;
5698 #undef FLD
5699 }
5700
5701 /* stq: stq$pack $GRk,@($GRi,$GRj) */
5702
5703 static SEM_PC
5704 SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5705 {
5706 #define FLD(f) abuf->fields.sfmt_smulcc.f
5707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5708 int UNUSED written = 0;
5709 IADDR UNUSED pc = abuf->addr;
5710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5711
5712 {
5713 SI tmp_address;
5714 {
5715 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5716 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5717 }
5718 }
5719
5720 return vpc;
5721 #undef FLD
5722 }
5723
5724 /* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5725
5726 static SEM_PC
5727 SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5728 {
5729 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5731 int UNUSED written = 0;
5732 IADDR UNUSED pc = abuf->addr;
5733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5734
5735 {
5736 SI tmp_address;
5737 {
5738 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5739 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5740 }
5741 }
5742
5743 return vpc;
5744 #undef FLD
5745 }
5746
5747 /* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5748
5749 static SEM_PC
5750 SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5751 {
5752 #define FLD(f) abuf->fields.sfmt_stdcu.f
5753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5754 int UNUSED written = 0;
5755 IADDR UNUSED pc = abuf->addr;
5756 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5757
5758 {
5759 SI tmp_address;
5760 {
5761 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5762 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5763 }
5764 }
5765
5766 return vpc;
5767 #undef FLD
5768 }
5769
5770 /* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5771
5772 static SEM_PC
5773 SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5774 {
5775 #define FLD(f) abuf->fields.sfmt_cstbu.f
5776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5777 int UNUSED written = 0;
5778 IADDR UNUSED pc = abuf->addr;
5779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5780
5781 {
5782 USI tmp_address;
5783 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5784 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5785 {
5786 SI opval = tmp_address;
5787 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5789 }
5790 }
5791
5792 return vpc;
5793 #undef FLD
5794 }
5795
5796 /* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5797
5798 static SEM_PC
5799 SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5800 {
5801 #define FLD(f) abuf->fields.sfmt_cstbu.f
5802 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5803 int UNUSED written = 0;
5804 IADDR UNUSED pc = abuf->addr;
5805 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5806
5807 {
5808 USI tmp_address;
5809 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5810 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5811 {
5812 SI opval = tmp_address;
5813 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5814 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5815 }
5816 }
5817
5818 return vpc;
5819 #undef FLD
5820 }
5821
5822 /* stu: stu$pack $GRk,@($GRi,$GRj) */
5823
5824 static SEM_PC
5825 SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5826 {
5827 #define FLD(f) abuf->fields.sfmt_cstbu.f
5828 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5829 int UNUSED written = 0;
5830 IADDR UNUSED pc = abuf->addr;
5831 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5832
5833 {
5834 USI tmp_address;
5835 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5836 frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5837 {
5838 SI opval = tmp_address;
5839 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5841 }
5842 }
5843
5844 return vpc;
5845 #undef FLD
5846 }
5847
5848 /* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5849
5850 static SEM_PC
5851 SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5852 {
5853 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5854 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5855 int UNUSED written = 0;
5856 IADDR UNUSED pc = abuf->addr;
5857 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5858
5859 {
5860 USI tmp_address;
5861 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5862 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5863 {
5864 SI opval = tmp_address;
5865 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5866 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5867 }
5868 }
5869
5870 return vpc;
5871 #undef FLD
5872 }
5873
5874 /* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5875
5876 static SEM_PC
5877 SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5878 {
5879 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5881 int UNUSED written = 0;
5882 IADDR UNUSED pc = abuf->addr;
5883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5884
5885 {
5886 USI tmp_address;
5887 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5888 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5889 {
5890 SI opval = tmp_address;
5891 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5892 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5893 }
5894 }
5895
5896 return vpc;
5897 #undef FLD
5898 }
5899
5900 /* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5901
5902 static SEM_PC
5903 SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5904 {
5905 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5907 int UNUSED written = 0;
5908 IADDR UNUSED pc = abuf->addr;
5909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5910
5911 {
5912 USI tmp_address;
5913 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5914 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5915 {
5916 SI opval = tmp_address;
5917 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5918 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5919 }
5920 }
5921
5922 return vpc;
5923 #undef FLD
5924 }
5925
5926 /* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
5927
5928 static SEM_PC
5929 SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5930 {
5931 #define FLD(f) abuf->fields.sfmt_stcu.f
5932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5933 int UNUSED written = 0;
5934 IADDR UNUSED pc = abuf->addr;
5935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5936
5937 {
5938 USI tmp_address;
5939 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5940 frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
5941 {
5942 SI opval = tmp_address;
5943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5944 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5945 }
5946 }
5947
5948 return vpc;
5949 #undef FLD
5950 }
5951
5952 /* stdu: stdu$pack $GRdoublek,@($GRi,$GRj) */
5953
5954 static SEM_PC
5955 SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5956 {
5957 #define FLD(f) abuf->fields.sfmt_cstdu.f
5958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5959 int UNUSED written = 0;
5960 IADDR UNUSED pc = abuf->addr;
5961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5962
5963 {
5964 SI tmp_address;
5965 {
5966 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5967 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5968 }
5969 {
5970 SI opval = tmp_address;
5971 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5972 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5973 }
5974 }
5975
5976 return vpc;
5977 #undef FLD
5978 }
5979
5980 /* stdfu: stdfu$pack $FRdoublek,@($GRi,$GRj) */
5981
5982 static SEM_PC
5983 SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5984 {
5985 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5987 int UNUSED written = 0;
5988 IADDR UNUSED pc = abuf->addr;
5989 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5990
5991 {
5992 SI tmp_address;
5993 {
5994 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5995 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5996 }
5997 {
5998 SI opval = tmp_address;
5999 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6000 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6001 }
6002 }
6003
6004 return vpc;
6005 #undef FLD
6006 }
6007
6008 /* stdcu: stdcu$pack $CPRdoublek,@($GRi,$GRj) */
6009
6010 static SEM_PC
6011 SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6012 {
6013 #define FLD(f) abuf->fields.sfmt_stdcu.f
6014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6015 int UNUSED written = 0;
6016 IADDR UNUSED pc = abuf->addr;
6017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6018
6019 {
6020 SI tmp_address;
6021 {
6022 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6023 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6024 }
6025 {
6026 SI opval = tmp_address;
6027 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6028 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6029 }
6030 }
6031
6032 return vpc;
6033 #undef FLD
6034 }
6035
6036 /* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6037
6038 static SEM_PC
6039 SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6040 {
6041 #define FLD(f) abuf->fields.sfmt_cstdu.f
6042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6043 int UNUSED written = 0;
6044 IADDR UNUSED pc = abuf->addr;
6045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6046
6047 {
6048 SI tmp_address;
6049 {
6050 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6051 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6052 }
6053 {
6054 SI opval = tmp_address;
6055 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6056 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6057 }
6058 }
6059
6060 return vpc;
6061 #undef FLD
6062 }
6063
6064 /* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6065
6066 static SEM_PC
6067 SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6068 {
6069 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6071 int UNUSED written = 0;
6072 IADDR UNUSED pc = abuf->addr;
6073 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6074
6075 {
6076 SI tmp_address;
6077 {
6078 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6079 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6080 }
6081 {
6082 SI opval = tmp_address;
6083 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6084 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6085 }
6086 }
6087
6088 return vpc;
6089 #undef FLD
6090 }
6091
6092 /* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6093
6094 static SEM_PC
6095 SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6096 {
6097 #define FLD(f) abuf->fields.sfmt_stdcu.f
6098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6099 int UNUSED written = 0;
6100 IADDR UNUSED pc = abuf->addr;
6101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6102
6103 {
6104 SI tmp_address;
6105 {
6106 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6107 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6108 }
6109 {
6110 SI opval = tmp_address;
6111 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6112 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6113 }
6114 }
6115
6116 return vpc;
6117 #undef FLD
6118 }
6119
6120 /* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6121
6122 static SEM_PC
6123 SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6124 {
6125 #define FLD(f) abuf->fields.sfmt_cswap.f
6126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6127 int UNUSED written = 0;
6128 IADDR UNUSED pc = abuf->addr;
6129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6130
6131 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6132 {
6133 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6134 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6135 written |= (1 << 5);
6136 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6137 }
6138 }
6139
6140 abuf->written = written;
6141 return vpc;
6142 #undef FLD
6143 }
6144
6145 /* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6146
6147 static SEM_PC
6148 SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6149 {
6150 #define FLD(f) abuf->fields.sfmt_cswap.f
6151 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6152 int UNUSED written = 0;
6153 IADDR UNUSED pc = abuf->addr;
6154 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6155
6156 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6157 {
6158 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6159 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6160 written |= (1 << 5);
6161 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6162 }
6163 }
6164
6165 abuf->written = written;
6166 return vpc;
6167 #undef FLD
6168 }
6169
6170 /* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6171
6172 static SEM_PC
6173 SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6174 {
6175 #define FLD(f) abuf->fields.sfmt_cswap.f
6176 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6177 int UNUSED written = 0;
6178 IADDR UNUSED pc = abuf->addr;
6179 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6180
6181 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6182 {
6183 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6184 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6185 written |= (1 << 5);
6186 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6187 }
6188 }
6189
6190 abuf->written = written;
6191 return vpc;
6192 #undef FLD
6193 }
6194
6195 /* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6196
6197 static SEM_PC
6198 SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6199 {
6200 #define FLD(f) abuf->fields.sfmt_cswap.f
6201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6202 int UNUSED written = 0;
6203 IADDR UNUSED pc = abuf->addr;
6204 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6205
6206 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6207 {
6208 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6209 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6210 written |= (1 << 5);
6211 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6212 }
6213 }
6214
6215 abuf->written = written;
6216 return vpc;
6217 #undef FLD
6218 }
6219
6220 /* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6221
6222 static SEM_PC
6223 SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6224 {
6225 #define FLD(f) abuf->fields.sfmt_cswap.f
6226 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6227 int UNUSED written = 0;
6228 IADDR UNUSED pc = abuf->addr;
6229 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6230
6231 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6232 {
6233 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6234 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6235 written |= (1 << 5);
6236 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6237 }
6238 }
6239
6240 abuf->written = written;
6241 return vpc;
6242 #undef FLD
6243 }
6244
6245 /* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6246
6247 static SEM_PC
6248 SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6249 {
6250 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6251 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6252 int UNUSED written = 0;
6253 IADDR UNUSED pc = abuf->addr;
6254 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6255
6256 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6257 {
6258 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6259 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6260 written |= (1 << 5);
6261 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6262 }
6263 }
6264
6265 abuf->written = written;
6266 return vpc;
6267 #undef FLD
6268 }
6269
6270 /* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6271
6272 static SEM_PC
6273 SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6274 {
6275 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6277 int UNUSED written = 0;
6278 IADDR UNUSED pc = abuf->addr;
6279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6280
6281 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6282 {
6283 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6284 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6285 written |= (1 << 5);
6286 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6287 }
6288 }
6289
6290 abuf->written = written;
6291 return vpc;
6292 #undef FLD
6293 }
6294
6295 /* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6296
6297 static SEM_PC
6298 SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6299 {
6300 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6302 int UNUSED written = 0;
6303 IADDR UNUSED pc = abuf->addr;
6304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6305
6306 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6307 {
6308 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6309 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6310 written |= (1 << 5);
6311 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6312 }
6313 }
6314
6315 abuf->written = written;
6316 return vpc;
6317 #undef FLD
6318 }
6319
6320 /* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6321
6322 static SEM_PC
6323 SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6324 {
6325 #define FLD(f) abuf->fields.sfmt_clddu.f
6326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6327 int UNUSED written = 0;
6328 IADDR UNUSED pc = abuf->addr;
6329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6330
6331 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6332 {
6333 SI tmp_address;
6334 if (NESI (FLD (f_GRk), 0)) {
6335 {
6336 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6337 {
6338 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6339 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6340 written |= (1 << 6);
6341 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6342 }
6343 }
6344 }
6345 }
6346 }
6347
6348 abuf->written = written;
6349 return vpc;
6350 #undef FLD
6351 }
6352
6353 /* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6354
6355 static SEM_PC
6356 SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6357 {
6358 #define FLD(f) abuf->fields.sfmt_clddfu.f
6359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6360 int UNUSED written = 0;
6361 IADDR UNUSED pc = abuf->addr;
6362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6363
6364 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6365 {
6366 SI tmp_address;
6367 {
6368 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6369 {
6370 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6371 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6372 written |= (1 << 5);
6373 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6374 }
6375 }
6376 }
6377 }
6378
6379 abuf->written = written;
6380 return vpc;
6381 #undef FLD
6382 }
6383
6384 /* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6385
6386 static SEM_PC
6387 SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6388 {
6389 #define FLD(f) abuf->fields.sfmt_cswap.f
6390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6391 int UNUSED written = 0;
6392 IADDR UNUSED pc = abuf->addr;
6393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6394
6395 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6396 {
6397 SI tmp_address;
6398 {
6399 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6400 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6401 }
6402 }
6403 }
6404
6405 return vpc;
6406 #undef FLD
6407 }
6408
6409 /* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6410
6411 static SEM_PC
6412 SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6413 {
6414 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6415 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6416 int UNUSED written = 0;
6417 IADDR UNUSED pc = abuf->addr;
6418 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6419
6420 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6421 {
6422 SI tmp_address;
6423 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6424 {
6425 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6426 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6427 written |= (1 << 8);
6428 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6429 }
6430 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6431 {
6432 SI opval = tmp_address;
6433 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6434 written |= (1 << 7);
6435 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6436 }
6437 }
6438 }
6439 }
6440
6441 abuf->written = written;
6442 return vpc;
6443 #undef FLD
6444 }
6445
6446 /* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6447
6448 static SEM_PC
6449 SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6450 {
6451 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6453 int UNUSED written = 0;
6454 IADDR UNUSED pc = abuf->addr;
6455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6456
6457 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6458 {
6459 SI tmp_address;
6460 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6461 {
6462 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6463 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6464 written |= (1 << 8);
6465 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6466 }
6467 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6468 {
6469 SI opval = tmp_address;
6470 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6471 written |= (1 << 7);
6472 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6473 }
6474 }
6475 }
6476 }
6477
6478 abuf->written = written;
6479 return vpc;
6480 #undef FLD
6481 }
6482
6483 /* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6484
6485 static SEM_PC
6486 SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6487 {
6488 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6490 int UNUSED written = 0;
6491 IADDR UNUSED pc = abuf->addr;
6492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6493
6494 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6495 {
6496 SI tmp_address;
6497 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6498 {
6499 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6500 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6501 written |= (1 << 8);
6502 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6503 }
6504 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6505 {
6506 SI opval = tmp_address;
6507 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6508 written |= (1 << 7);
6509 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6510 }
6511 }
6512 }
6513 }
6514
6515 abuf->written = written;
6516 return vpc;
6517 #undef FLD
6518 }
6519
6520 /* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6521
6522 static SEM_PC
6523 SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6524 {
6525 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6527 int UNUSED written = 0;
6528 IADDR UNUSED pc = abuf->addr;
6529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6530
6531 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6532 {
6533 SI tmp_address;
6534 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6535 {
6536 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6537 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6538 written |= (1 << 8);
6539 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6540 }
6541 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6542 {
6543 SI opval = tmp_address;
6544 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6545 written |= (1 << 7);
6546 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6547 }
6548 }
6549 }
6550 }
6551
6552 abuf->written = written;
6553 return vpc;
6554 #undef FLD
6555 }
6556
6557 /* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6558
6559 static SEM_PC
6560 SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6561 {
6562 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6564 int UNUSED written = 0;
6565 IADDR UNUSED pc = abuf->addr;
6566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6567
6568 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6569 {
6570 SI tmp_address;
6571 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6572 {
6573 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6574 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6575 written |= (1 << 8);
6576 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6577 }
6578 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6579 {
6580 SI opval = tmp_address;
6581 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6582 written |= (1 << 7);
6583 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6584 }
6585 }
6586 }
6587 }
6588
6589 abuf->written = written;
6590 return vpc;
6591 #undef FLD
6592 }
6593
6594 /* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6595
6596 static SEM_PC
6597 SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6598 {
6599 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6601 int UNUSED written = 0;
6602 IADDR UNUSED pc = abuf->addr;
6603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6604
6605 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6606 {
6607 SI tmp_address;
6608 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6609 {
6610 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6611 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6612 written |= (1 << 5);
6613 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6614 }
6615 {
6616 SI opval = tmp_address;
6617 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6618 written |= (1 << 6);
6619 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6620 }
6621 }
6622 }
6623
6624 abuf->written = written;
6625 return vpc;
6626 #undef FLD
6627 }
6628
6629 /* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6630
6631 static SEM_PC
6632 SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6633 {
6634 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6636 int UNUSED written = 0;
6637 IADDR UNUSED pc = abuf->addr;
6638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6639
6640 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6641 {
6642 SI tmp_address;
6643 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6644 {
6645 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6646 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6647 written |= (1 << 5);
6648 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6649 }
6650 {
6651 SI opval = tmp_address;
6652 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6653 written |= (1 << 6);
6654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6655 }
6656 }
6657 }
6658
6659 abuf->written = written;
6660 return vpc;
6661 #undef FLD
6662 }
6663
6664 /* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6665
6666 static SEM_PC
6667 SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6668 {
6669 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6671 int UNUSED written = 0;
6672 IADDR UNUSED pc = abuf->addr;
6673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6674
6675 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6676 {
6677 SI tmp_address;
6678 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6679 {
6680 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6681 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6682 written |= (1 << 5);
6683 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6684 }
6685 {
6686 SI opval = tmp_address;
6687 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6688 written |= (1 << 6);
6689 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6690 }
6691 }
6692 }
6693
6694 abuf->written = written;
6695 return vpc;
6696 #undef FLD
6697 }
6698
6699 /* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6700
6701 static SEM_PC
6702 SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6703 {
6704 #define FLD(f) abuf->fields.sfmt_clddu.f
6705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6706 int UNUSED written = 0;
6707 IADDR UNUSED pc = abuf->addr;
6708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6709
6710 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6711 {
6712 SI tmp_address;
6713 if (NESI (FLD (f_GRk), 0)) {
6714 {
6715 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6716 {
6717 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6718 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6719 written |= (1 << 7);
6720 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6721 }
6722 }
6723 }
6724 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6725 {
6726 SI opval = tmp_address;
6727 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6728 written |= (1 << 8);
6729 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6730 }
6731 }
6732 }
6733 }
6734
6735 abuf->written = written;
6736 return vpc;
6737 #undef FLD
6738 }
6739
6740 /* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6741
6742 static SEM_PC
6743 SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6744 {
6745 #define FLD(f) abuf->fields.sfmt_clddfu.f
6746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6747 int UNUSED written = 0;
6748 IADDR UNUSED pc = abuf->addr;
6749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6750
6751 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6752 {
6753 SI tmp_address;
6754 {
6755 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6756 {
6757 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6758 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6759 written |= (1 << 5);
6760 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6761 }
6762 }
6763 {
6764 SI opval = tmp_address;
6765 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6766 written |= (1 << 6);
6767 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6768 }
6769 }
6770 }
6771
6772 abuf->written = written;
6773 return vpc;
6774 #undef FLD
6775 }
6776
6777 /* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6778
6779 static SEM_PC
6780 SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6781 {
6782 #define FLD(f) abuf->fields.sfmt_cstdu.f
6783 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6784 int UNUSED written = 0;
6785 IADDR UNUSED pc = abuf->addr;
6786 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6787
6788 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6789 {
6790 SI tmp_address;
6791 {
6792 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6793 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6794 }
6795 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6796 {
6797 SI opval = tmp_address;
6798 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6799 written |= (1 << 7);
6800 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6801 }
6802 }
6803 }
6804 }
6805
6806 abuf->written = written;
6807 return vpc;
6808 #undef FLD
6809 }
6810
6811 /* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6812
6813 static SEM_PC
6814 SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6815 {
6816 #define FLD(f) abuf->fields.sfmt_cswap.f
6817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6818 int UNUSED written = 0;
6819 IADDR UNUSED pc = abuf->addr;
6820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6821
6822 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6823 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)));
6824 }
6825
6826 return vpc;
6827 #undef FLD
6828 }
6829
6830 /* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6831
6832 static SEM_PC
6833 SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6834 {
6835 #define FLD(f) abuf->fields.sfmt_cswap.f
6836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6837 int UNUSED written = 0;
6838 IADDR UNUSED pc = abuf->addr;
6839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6840
6841 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6842 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)));
6843 }
6844
6845 return vpc;
6846 #undef FLD
6847 }
6848
6849 /* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6850
6851 static SEM_PC
6852 SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6853 {
6854 #define FLD(f) abuf->fields.sfmt_cswap.f
6855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6856 int UNUSED written = 0;
6857 IADDR UNUSED pc = abuf->addr;
6858 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6859
6860 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6861 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)));
6862 }
6863
6864 return vpc;
6865 #undef FLD
6866 }
6867
6868 /* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6869
6870 static SEM_PC
6871 SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6872 {
6873 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6874 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6875 int UNUSED written = 0;
6876 IADDR UNUSED pc = abuf->addr;
6877 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6878
6879 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6880 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)));
6881 }
6882
6883 return vpc;
6884 #undef FLD
6885 }
6886
6887 /* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6888
6889 static SEM_PC
6890 SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6891 {
6892 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6894 int UNUSED written = 0;
6895 IADDR UNUSED pc = abuf->addr;
6896 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6897
6898 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6899 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)));
6900 }
6901
6902 return vpc;
6903 #undef FLD
6904 }
6905
6906 /* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6907
6908 static SEM_PC
6909 SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6910 {
6911 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6913 int UNUSED written = 0;
6914 IADDR UNUSED pc = abuf->addr;
6915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6916
6917 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6918 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)));
6919 }
6920
6921 return vpc;
6922 #undef FLD
6923 }
6924
6925 /* cstd: cstd$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
6926
6927 static SEM_PC
6928 SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6929 {
6930 #define FLD(f) abuf->fields.sfmt_cstdu.f
6931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6932 int UNUSED written = 0;
6933 IADDR UNUSED pc = abuf->addr;
6934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6935
6936 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6937 {
6938 SI tmp_address;
6939 {
6940 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6941 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6942 }
6943 }
6944 }
6945
6946 return vpc;
6947 #undef FLD
6948 }
6949
6950 /* cstdf: cstdf$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
6951
6952 static SEM_PC
6953 SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6954 {
6955 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6957 int UNUSED written = 0;
6958 IADDR UNUSED pc = abuf->addr;
6959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6960
6961 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6962 {
6963 SI tmp_address;
6964 {
6965 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6966 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6967 }
6968 }
6969 }
6970
6971 return vpc;
6972 #undef FLD
6973 }
6974
6975 /* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6976
6977 static SEM_PC
6978 SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6979 {
6980 #define FLD(f) abuf->fields.sfmt_cswap.f
6981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6982 int UNUSED written = 0;
6983 IADDR UNUSED pc = abuf->addr;
6984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6985
6986 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6987 {
6988 SI tmp_address;
6989 {
6990 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6991 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6992 }
6993 }
6994 }
6995
6996 return vpc;
6997 #undef FLD
6998 }
6999
7000 /* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7001
7002 static SEM_PC
7003 SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7004 {
7005 #define FLD(f) abuf->fields.sfmt_cstbu.f
7006 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7007 int UNUSED written = 0;
7008 IADDR UNUSED pc = abuf->addr;
7009 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7010
7011 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7012 {
7013 SI tmp_address;
7014 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7015 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7016 {
7017 SI opval = tmp_address;
7018 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7019 written |= (1 << 6);
7020 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7021 }
7022 }
7023 }
7024
7025 abuf->written = written;
7026 return vpc;
7027 #undef FLD
7028 }
7029
7030 /* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7031
7032 static SEM_PC
7033 SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7034 {
7035 #define FLD(f) abuf->fields.sfmt_cstbu.f
7036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7037 int UNUSED written = 0;
7038 IADDR UNUSED pc = abuf->addr;
7039 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7040
7041 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7042 {
7043 SI tmp_address;
7044 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7045 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7046 {
7047 SI opval = tmp_address;
7048 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7049 written |= (1 << 6);
7050 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7051 }
7052 }
7053 }
7054
7055 abuf->written = written;
7056 return vpc;
7057 #undef FLD
7058 }
7059
7060 /* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7061
7062 static SEM_PC
7063 SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7064 {
7065 #define FLD(f) abuf->fields.sfmt_cstbu.f
7066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7067 int UNUSED written = 0;
7068 IADDR UNUSED pc = abuf->addr;
7069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7070
7071 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7072 {
7073 SI tmp_address;
7074 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7075 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7076 {
7077 SI opval = tmp_address;
7078 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7079 written |= (1 << 6);
7080 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7081 }
7082 }
7083 }
7084
7085 abuf->written = written;
7086 return vpc;
7087 #undef FLD
7088 }
7089
7090 /* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7091
7092 static SEM_PC
7093 SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7094 {
7095 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7097 int UNUSED written = 0;
7098 IADDR UNUSED pc = abuf->addr;
7099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7100
7101 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7102 {
7103 SI tmp_address;
7104 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7105 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7106 {
7107 SI opval = tmp_address;
7108 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7109 written |= (1 << 6);
7110 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7111 }
7112 }
7113 }
7114
7115 abuf->written = written;
7116 return vpc;
7117 #undef FLD
7118 }
7119
7120 /* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7121
7122 static SEM_PC
7123 SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7124 {
7125 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7127 int UNUSED written = 0;
7128 IADDR UNUSED pc = abuf->addr;
7129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7130
7131 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7132 {
7133 SI tmp_address;
7134 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7135 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7136 {
7137 SI opval = tmp_address;
7138 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7139 written |= (1 << 6);
7140 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7141 }
7142 }
7143 }
7144
7145 abuf->written = written;
7146 return vpc;
7147 #undef FLD
7148 }
7149
7150 /* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7151
7152 static SEM_PC
7153 SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7154 {
7155 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7157 int UNUSED written = 0;
7158 IADDR UNUSED pc = abuf->addr;
7159 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7160
7161 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7162 {
7163 SI tmp_address;
7164 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7165 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7166 {
7167 SI opval = tmp_address;
7168 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7169 written |= (1 << 6);
7170 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7171 }
7172 }
7173 }
7174
7175 abuf->written = written;
7176 return vpc;
7177 #undef FLD
7178 }
7179
7180 /* cstdu: cstdu$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
7181
7182 static SEM_PC
7183 SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7184 {
7185 #define FLD(f) abuf->fields.sfmt_cstdu.f
7186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7187 int UNUSED written = 0;
7188 IADDR UNUSED pc = abuf->addr;
7189 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7190
7191 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7192 {
7193 SI tmp_address;
7194 {
7195 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7196 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7197 }
7198 {
7199 SI opval = tmp_address;
7200 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7201 written |= (1 << 6);
7202 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7203 }
7204 }
7205 }
7206
7207 abuf->written = written;
7208 return vpc;
7209 #undef FLD
7210 }
7211
7212 /* cstdfu: cstdfu$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
7213
7214 static SEM_PC
7215 SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7216 {
7217 #define FLD(f) abuf->fields.sfmt_cstdfu.f
7218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7219 int UNUSED written = 0;
7220 IADDR UNUSED pc = abuf->addr;
7221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7222
7223 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7224 {
7225 SI tmp_address;
7226 {
7227 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7228 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7229 }
7230 {
7231 SI opval = tmp_address;
7232 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7233 written |= (1 << 6);
7234 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7235 }
7236 }
7237 }
7238
7239 abuf->written = written;
7240 return vpc;
7241 #undef FLD
7242 }
7243
7244 /* stbi: stbi$pack $GRk,@($GRi,$d12) */
7245
7246 static SEM_PC
7247 SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7248 {
7249 #define FLD(f) abuf->fields.sfmt_swapi.f
7250 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7251 int UNUSED written = 0;
7252 IADDR UNUSED pc = abuf->addr;
7253 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7254
7255 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7256
7257 return vpc;
7258 #undef FLD
7259 }
7260
7261 /* sthi: sthi$pack $GRk,@($GRi,$d12) */
7262
7263 static SEM_PC
7264 SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7265 {
7266 #define FLD(f) abuf->fields.sfmt_swapi.f
7267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7268 int UNUSED written = 0;
7269 IADDR UNUSED pc = abuf->addr;
7270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7271
7272 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7273
7274 return vpc;
7275 #undef FLD
7276 }
7277
7278 /* sti: sti$pack $GRk,@($GRi,$d12) */
7279
7280 static SEM_PC
7281 SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7282 {
7283 #define FLD(f) abuf->fields.sfmt_swapi.f
7284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7285 int UNUSED written = 0;
7286 IADDR UNUSED pc = abuf->addr;
7287 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7288
7289 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7290
7291 return vpc;
7292 #undef FLD
7293 }
7294
7295 /* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7296
7297 static SEM_PC
7298 SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7299 {
7300 #define FLD(f) abuf->fields.sfmt_stbfi.f
7301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7302 int UNUSED written = 0;
7303 IADDR UNUSED pc = abuf->addr;
7304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7305
7306 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7307
7308 return vpc;
7309 #undef FLD
7310 }
7311
7312 /* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7313
7314 static SEM_PC
7315 SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7316 {
7317 #define FLD(f) abuf->fields.sfmt_stbfi.f
7318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7319 int UNUSED written = 0;
7320 IADDR UNUSED pc = abuf->addr;
7321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7322
7323 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7324
7325 return vpc;
7326 #undef FLD
7327 }
7328
7329 /* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7330
7331 static SEM_PC
7332 SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7333 {
7334 #define FLD(f) abuf->fields.sfmt_stbfi.f
7335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7336 int UNUSED written = 0;
7337 IADDR UNUSED pc = abuf->addr;
7338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7339
7340 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7341
7342 return vpc;
7343 #undef FLD
7344 }
7345
7346 /* stdi: stdi$pack $GRdoublek,@($GRi,$d12) */
7347
7348 static SEM_PC
7349 SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7350 {
7351 #define FLD(f) abuf->fields.sfmt_stdi.f
7352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7353 int UNUSED written = 0;
7354 IADDR UNUSED pc = abuf->addr;
7355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7356
7357 {
7358 SI tmp_address;
7359 {
7360 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7361 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7362 }
7363 }
7364
7365 return vpc;
7366 #undef FLD
7367 }
7368
7369 /* stdfi: stdfi$pack $FRdoublek,@($GRi,$d12) */
7370
7371 static SEM_PC
7372 SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7373 {
7374 #define FLD(f) abuf->fields.sfmt_stdfi.f
7375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7376 int UNUSED written = 0;
7377 IADDR UNUSED pc = abuf->addr;
7378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7379
7380 {
7381 SI tmp_address;
7382 {
7383 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7384 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7385 }
7386 }
7387
7388 return vpc;
7389 #undef FLD
7390 }
7391
7392 /* stqi: stqi$pack $GRk,@($GRi,$d12) */
7393
7394 static SEM_PC
7395 SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7396 {
7397 #define FLD(f) abuf->fields.sfmt_stdi.f
7398 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7399 int UNUSED written = 0;
7400 IADDR UNUSED pc = abuf->addr;
7401 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7402
7403 {
7404 SI tmp_address;
7405 {
7406 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7407 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7408 }
7409 }
7410
7411 return vpc;
7412 #undef FLD
7413 }
7414
7415 /* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7416
7417 static SEM_PC
7418 SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7419 {
7420 #define FLD(f) abuf->fields.sfmt_stdfi.f
7421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7422 int UNUSED written = 0;
7423 IADDR UNUSED pc = abuf->addr;
7424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7425
7426 {
7427 SI tmp_address;
7428 {
7429 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7430 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7431 }
7432 }
7433
7434 return vpc;
7435 #undef FLD
7436 }
7437
7438 /* swap: swap$pack @($GRi,$GRj),$GRk */
7439
7440 static SEM_PC
7441 SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7442 {
7443 #define FLD(f) abuf->fields.sfmt_cswap.f
7444 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7445 int UNUSED written = 0;
7446 IADDR UNUSED pc = abuf->addr;
7447 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7448
7449 {
7450 SI tmp_tmp;
7451 SI tmp_address;
7452 tmp_tmp = GET_H_GR (FLD (f_GRk));
7453 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7454 frvbf_check_swap_address (current_cpu, tmp_address);
7455 {
7456 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7457 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7458 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7459 }
7460 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7461 }
7462
7463 return vpc;
7464 #undef FLD
7465 }
7466
7467 /* swapi: swapi$pack @($GRi,$d12),$GRk */
7468
7469 static SEM_PC
7470 SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7471 {
7472 #define FLD(f) abuf->fields.sfmt_swapi.f
7473 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7474 int UNUSED written = 0;
7475 IADDR UNUSED pc = abuf->addr;
7476 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7477
7478 {
7479 SI tmp_tmp;
7480 SI tmp_address;
7481 tmp_tmp = GET_H_GR (FLD (f_GRk));
7482 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7483 frvbf_check_swap_address (current_cpu, tmp_address);
7484 {
7485 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7486 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7488 }
7489 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7490 }
7491
7492 return vpc;
7493 #undef FLD
7494 }
7495
7496 /* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7497
7498 static SEM_PC
7499 SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7500 {
7501 #define FLD(f) abuf->fields.sfmt_cswap.f
7502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7503 int UNUSED written = 0;
7504 IADDR UNUSED pc = abuf->addr;
7505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7506
7507 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7508 {
7509 SI tmp_tmp;
7510 SI tmp_address;
7511 tmp_tmp = GET_H_GR (FLD (f_GRk));
7512 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7513 frvbf_check_swap_address (current_cpu, tmp_address);
7514 {
7515 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7516 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7517 written |= (1 << 6);
7518 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7519 }
7520 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7521 }
7522 }
7523
7524 abuf->written = written;
7525 return vpc;
7526 #undef FLD
7527 }
7528
7529 /* movgf: movgf$pack $GRj,$FRintk */
7530
7531 static SEM_PC
7532 SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7533 {
7534 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7536 int UNUSED written = 0;
7537 IADDR UNUSED pc = abuf->addr;
7538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7539
7540 {
7541 SI opval = GET_H_GR (FLD (f_GRj));
7542 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7543 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7544 }
7545
7546 return vpc;
7547 #undef FLD
7548 }
7549
7550 /* movfg: movfg$pack $FRintk,$GRj */
7551
7552 static SEM_PC
7553 SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7554 {
7555 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7557 int UNUSED written = 0;
7558 IADDR UNUSED pc = abuf->addr;
7559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7560
7561 {
7562 SI opval = GET_H_FR_INT (FLD (f_FRk));
7563 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7564 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7565 }
7566
7567 return vpc;
7568 #undef FLD
7569 }
7570
7571 /* movgfd: movgfd$pack $GRj,$FRintk */
7572
7573 static SEM_PC
7574 SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7575 {
7576 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7577 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7578 int UNUSED written = 0;
7579 IADDR UNUSED pc = abuf->addr;
7580 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7581
7582 if (EQSI (FLD (f_GRj), 0)) {
7583 {
7584 {
7585 SI opval = 0;
7586 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7587 written |= (1 << 4);
7588 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7589 }
7590 {
7591 USI opval = 0;
7592 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7593 written |= (1 << 5);
7594 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7595 }
7596 }
7597 } else {
7598 {
7599 {
7600 SI opval = GET_H_GR (FLD (f_GRj));
7601 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7602 written |= (1 << 4);
7603 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7604 }
7605 {
7606 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7607 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7608 written |= (1 << 5);
7609 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7610 }
7611 }
7612 }
7613
7614 abuf->written = written;
7615 return vpc;
7616 #undef FLD
7617 }
7618
7619 /* movfgd: movfgd$pack $FRintk,$GRj */
7620
7621 static SEM_PC
7622 SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7623 {
7624 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7626 int UNUSED written = 0;
7627 IADDR UNUSED pc = abuf->addr;
7628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7629
7630 if (NESI (FLD (f_GRj), 0)) {
7631 {
7632 {
7633 SI opval = GET_H_FR_INT (FLD (f_FRk));
7634 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7635 written |= (1 << 4);
7636 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7637 }
7638 {
7639 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7640 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7641 written |= (1 << 5);
7642 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7643 }
7644 }
7645 }
7646
7647 abuf->written = written;
7648 return vpc;
7649 #undef FLD
7650 }
7651
7652 /* movgfq: movgfq$pack $GRj,$FRintk */
7653
7654 static SEM_PC
7655 SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7656 {
7657 #define FLD(f) abuf->fields.sfmt_movgfq.f
7658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7659 int UNUSED written = 0;
7660 IADDR UNUSED pc = abuf->addr;
7661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7662
7663 if (EQSI (FLD (f_GRj), 0)) {
7664 {
7665 {
7666 SI opval = 0;
7667 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7668 written |= (1 << 6);
7669 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7670 }
7671 {
7672 USI opval = 0;
7673 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7674 written |= (1 << 7);
7675 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7676 }
7677 {
7678 USI opval = 0;
7679 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7680 written |= (1 << 8);
7681 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7682 }
7683 {
7684 USI opval = 0;
7685 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7686 written |= (1 << 9);
7687 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7688 }
7689 }
7690 } else {
7691 {
7692 {
7693 SI opval = GET_H_GR (FLD (f_GRj));
7694 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7695 written |= (1 << 6);
7696 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7697 }
7698 {
7699 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7700 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7701 written |= (1 << 7);
7702 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7703 }
7704 {
7705 USI opval = GET_H_GR (((FLD (f_GRj)) + (2)));
7706 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (2)), opval);
7707 written |= (1 << 8);
7708 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7709 }
7710 {
7711 USI opval = GET_H_GR (((FLD (f_GRj)) + (3)));
7712 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (3)), opval);
7713 written |= (1 << 9);
7714 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7715 }
7716 }
7717 }
7718
7719 abuf->written = written;
7720 return vpc;
7721 #undef FLD
7722 }
7723
7724 /* movfgq: movfgq$pack $FRintk,$GRj */
7725
7726 static SEM_PC
7727 SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7728 {
7729 #define FLD(f) abuf->fields.sfmt_movfgq.f
7730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7731 int UNUSED written = 0;
7732 IADDR UNUSED pc = abuf->addr;
7733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7734
7735 if (NESI (FLD (f_GRj), 0)) {
7736 {
7737 {
7738 SI opval = GET_H_FR_INT (FLD (f_FRk));
7739 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7740 written |= (1 << 6);
7741 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7742 }
7743 {
7744 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7745 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7746 written |= (1 << 7);
7747 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7748 }
7749 {
7750 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (2)));
7751 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (2)), opval);
7752 written |= (1 << 8);
7753 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7754 }
7755 {
7756 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (3)));
7757 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (3)), opval);
7758 written |= (1 << 9);
7759 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7760 }
7761 }
7762 }
7763
7764 abuf->written = written;
7765 return vpc;
7766 #undef FLD
7767 }
7768
7769 /* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7770
7771 static SEM_PC
7772 SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7773 {
7774 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7776 int UNUSED written = 0;
7777 IADDR UNUSED pc = abuf->addr;
7778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7779
7780 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7781 {
7782 SI opval = GET_H_GR (FLD (f_GRj));
7783 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7784 written |= (1 << 3);
7785 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7786 }
7787 }
7788
7789 abuf->written = written;
7790 return vpc;
7791 #undef FLD
7792 }
7793
7794 /* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7795
7796 static SEM_PC
7797 SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7798 {
7799 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7800 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7801 int UNUSED written = 0;
7802 IADDR UNUSED pc = abuf->addr;
7803 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7804
7805 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7806 {
7807 SI opval = GET_H_FR_INT (FLD (f_FRk));
7808 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7809 written |= (1 << 3);
7810 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7811 }
7812 }
7813
7814 abuf->written = written;
7815 return vpc;
7816 #undef FLD
7817 }
7818
7819 /* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7820
7821 static SEM_PC
7822 SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7823 {
7824 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7826 int UNUSED written = 0;
7827 IADDR UNUSED pc = abuf->addr;
7828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7829
7830 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7831 if (EQSI (FLD (f_GRj), 0)) {
7832 {
7833 {
7834 SI opval = 0;
7835 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7836 written |= (1 << 6);
7837 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7838 }
7839 {
7840 USI opval = 0;
7841 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7842 written |= (1 << 7);
7843 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7844 }
7845 }
7846 } else {
7847 {
7848 {
7849 SI opval = GET_H_GR (FLD (f_GRj));
7850 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7851 written |= (1 << 6);
7852 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7853 }
7854 {
7855 USI opval = GET_H_GR (((FLD (f_GRj)) + (1)));
7856 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
7857 written |= (1 << 7);
7858 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7859 }
7860 }
7861 }
7862 }
7863
7864 abuf->written = written;
7865 return vpc;
7866 #undef FLD
7867 }
7868
7869 /* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7870
7871 static SEM_PC
7872 SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7873 {
7874 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7876 int UNUSED written = 0;
7877 IADDR UNUSED pc = abuf->addr;
7878 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7879
7880 if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7881 {
7882 {
7883 SI opval = GET_H_FR_INT (FLD (f_FRk));
7884 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7885 written |= (1 << 6);
7886 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7887 }
7888 {
7889 USI opval = GET_H_FR_INT (((FLD (f_FRk)) + (1)));
7890 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ((FLD (f_GRj)) + (1)), opval);
7891 written |= (1 << 7);
7892 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7893 }
7894 }
7895 }
7896
7897 abuf->written = written;
7898 return vpc;
7899 #undef FLD
7900 }
7901
7902 /* movgs: movgs$pack $GRj,$spr */
7903
7904 static SEM_PC
7905 SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7906 {
7907 #define FLD(f) abuf->fields.sfmt_movgs.f
7908 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7909 int UNUSED written = 0;
7910 IADDR UNUSED pc = abuf->addr;
7911 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7912
7913 {
7914 USI opval = GET_H_GR (FLD (f_GRj));
7915 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
7916 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
7917 }
7918
7919 return vpc;
7920 #undef FLD
7921 }
7922
7923 /* movsg: movsg$pack $spr,$GRj */
7924
7925 static SEM_PC
7926 SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7927 {
7928 #define FLD(f) abuf->fields.sfmt_movsg.f
7929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7930 int UNUSED written = 0;
7931 IADDR UNUSED pc = abuf->addr;
7932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7933
7934 {
7935 SI opval = GET_H_SPR (FLD (f_spr));
7936 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7937 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7938 }
7939
7940 return vpc;
7941 #undef FLD
7942 }
7943
7944 /* bra: bra$pack $hint_taken$label16 */
7945
7946 static SEM_PC
7947 SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7948 {
7949 #define FLD(f) abuf->fields.sfmt_fbne.f
7950 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7951 int UNUSED written = 0;
7952 IADDR UNUSED pc = abuf->addr;
7953 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7954
7955 {
7956 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7957 {
7958 USI opval = FLD (i_label16);
7959 sim_queue_pc_write (current_cpu, opval);
7960 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7961 }
7962 }
7963
7964 return vpc;
7965 #undef FLD
7966 }
7967
7968 /* bno: bno$pack$hint_not_taken */
7969
7970 static SEM_PC
7971 SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7972 {
7973 #define FLD(f) abuf->fields.sfmt_fbne.f
7974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7975 int UNUSED written = 0;
7976 IADDR UNUSED pc = abuf->addr;
7977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7978
7979 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7980
7981 return vpc;
7982 #undef FLD
7983 }
7984
7985 /* beq: beq$pack $ICCi_2,$hint,$label16 */
7986
7987 static SEM_PC
7988 SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7989 {
7990 #define FLD(f) abuf->fields.sfmt_beq.f
7991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7992 int UNUSED written = 0;
7993 IADDR UNUSED pc = abuf->addr;
7994 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7995
7996 {
7997 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7998 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
7999 {
8000 USI opval = FLD (i_label16);
8001 sim_queue_pc_write (current_cpu, opval);
8002 written |= (1 << 3);
8003 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8004 }
8005 }
8006 }
8007
8008 abuf->written = written;
8009 return vpc;
8010 #undef FLD
8011 }
8012
8013 /* bne: bne$pack $ICCi_2,$hint,$label16 */
8014
8015 static SEM_PC
8016 SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8017 {
8018 #define FLD(f) abuf->fields.sfmt_beq.f
8019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8020 int UNUSED written = 0;
8021 IADDR UNUSED pc = abuf->addr;
8022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8023
8024 {
8025 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8026 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8027 {
8028 USI opval = FLD (i_label16);
8029 sim_queue_pc_write (current_cpu, opval);
8030 written |= (1 << 3);
8031 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8032 }
8033 }
8034 }
8035
8036 abuf->written = written;
8037 return vpc;
8038 #undef FLD
8039 }
8040
8041 /* ble: ble$pack $ICCi_2,$hint,$label16 */
8042
8043 static SEM_PC
8044 SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8045 {
8046 #define FLD(f) abuf->fields.sfmt_beq.f
8047 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8048 int UNUSED written = 0;
8049 IADDR UNUSED pc = abuf->addr;
8050 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8051
8052 {
8053 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8054 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))))) {
8055 {
8056 USI opval = FLD (i_label16);
8057 sim_queue_pc_write (current_cpu, opval);
8058 written |= (1 << 3);
8059 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8060 }
8061 }
8062 }
8063
8064 abuf->written = written;
8065 return vpc;
8066 #undef FLD
8067 }
8068
8069 /* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8070
8071 static SEM_PC
8072 SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8073 {
8074 #define FLD(f) abuf->fields.sfmt_beq.f
8075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8076 int UNUSED written = 0;
8077 IADDR UNUSED pc = abuf->addr;
8078 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8079
8080 {
8081 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8082 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)))))) {
8083 {
8084 USI opval = FLD (i_label16);
8085 sim_queue_pc_write (current_cpu, opval);
8086 written |= (1 << 3);
8087 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8088 }
8089 }
8090 }
8091
8092 abuf->written = written;
8093 return vpc;
8094 #undef FLD
8095 }
8096
8097 /* blt: blt$pack $ICCi_2,$hint,$label16 */
8098
8099 static SEM_PC
8100 SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8101 {
8102 #define FLD(f) abuf->fields.sfmt_beq.f
8103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8104 int UNUSED written = 0;
8105 IADDR UNUSED pc = abuf->addr;
8106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8107
8108 {
8109 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8110 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)))) {
8111 {
8112 USI opval = FLD (i_label16);
8113 sim_queue_pc_write (current_cpu, opval);
8114 written |= (1 << 3);
8115 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8116 }
8117 }
8118 }
8119
8120 abuf->written = written;
8121 return vpc;
8122 #undef FLD
8123 }
8124
8125 /* bge: bge$pack $ICCi_2,$hint,$label16 */
8126
8127 static SEM_PC
8128 SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8129 {
8130 #define FLD(f) abuf->fields.sfmt_beq.f
8131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8132 int UNUSED written = 0;
8133 IADDR UNUSED pc = abuf->addr;
8134 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8135
8136 {
8137 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8138 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))))) {
8139 {
8140 USI opval = FLD (i_label16);
8141 sim_queue_pc_write (current_cpu, opval);
8142 written |= (1 << 3);
8143 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8144 }
8145 }
8146 }
8147
8148 abuf->written = written;
8149 return vpc;
8150 #undef FLD
8151 }
8152
8153 /* bls: bls$pack $ICCi_2,$hint,$label16 */
8154
8155 static SEM_PC
8156 SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8157 {
8158 #define FLD(f) abuf->fields.sfmt_beq.f
8159 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8160 int UNUSED written = 0;
8161 IADDR UNUSED pc = abuf->addr;
8162 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8163
8164 {
8165 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8166 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8167 {
8168 USI opval = FLD (i_label16);
8169 sim_queue_pc_write (current_cpu, opval);
8170 written |= (1 << 3);
8171 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8172 }
8173 }
8174 }
8175
8176 abuf->written = written;
8177 return vpc;
8178 #undef FLD
8179 }
8180
8181 /* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8182
8183 static SEM_PC
8184 SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8185 {
8186 #define FLD(f) abuf->fields.sfmt_beq.f
8187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8188 int UNUSED written = 0;
8189 IADDR UNUSED pc = abuf->addr;
8190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8191
8192 {
8193 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8194 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))))) {
8195 {
8196 USI opval = FLD (i_label16);
8197 sim_queue_pc_write (current_cpu, opval);
8198 written |= (1 << 3);
8199 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8200 }
8201 }
8202 }
8203
8204 abuf->written = written;
8205 return vpc;
8206 #undef FLD
8207 }
8208
8209 /* bc: bc$pack $ICCi_2,$hint,$label16 */
8210
8211 static SEM_PC
8212 SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8213 {
8214 #define FLD(f) abuf->fields.sfmt_beq.f
8215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8216 int UNUSED written = 0;
8217 IADDR UNUSED pc = abuf->addr;
8218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8219
8220 {
8221 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8222 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8223 {
8224 USI opval = FLD (i_label16);
8225 sim_queue_pc_write (current_cpu, opval);
8226 written |= (1 << 3);
8227 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8228 }
8229 }
8230 }
8231
8232 abuf->written = written;
8233 return vpc;
8234 #undef FLD
8235 }
8236
8237 /* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8238
8239 static SEM_PC
8240 SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8241 {
8242 #define FLD(f) abuf->fields.sfmt_beq.f
8243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8244 int UNUSED written = 0;
8245 IADDR UNUSED pc = abuf->addr;
8246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8247
8248 {
8249 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8250 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8251 {
8252 USI opval = FLD (i_label16);
8253 sim_queue_pc_write (current_cpu, opval);
8254 written |= (1 << 3);
8255 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8256 }
8257 }
8258 }
8259
8260 abuf->written = written;
8261 return vpc;
8262 #undef FLD
8263 }
8264
8265 /* bn: bn$pack $ICCi_2,$hint,$label16 */
8266
8267 static SEM_PC
8268 SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8269 {
8270 #define FLD(f) abuf->fields.sfmt_beq.f
8271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8272 int UNUSED written = 0;
8273 IADDR UNUSED pc = abuf->addr;
8274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8275
8276 {
8277 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8278 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8279 {
8280 USI opval = FLD (i_label16);
8281 sim_queue_pc_write (current_cpu, opval);
8282 written |= (1 << 3);
8283 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8284 }
8285 }
8286 }
8287
8288 abuf->written = written;
8289 return vpc;
8290 #undef FLD
8291 }
8292
8293 /* bp: bp$pack $ICCi_2,$hint,$label16 */
8294
8295 static SEM_PC
8296 SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8297 {
8298 #define FLD(f) abuf->fields.sfmt_beq.f
8299 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8300 int UNUSED written = 0;
8301 IADDR UNUSED pc = abuf->addr;
8302 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8303
8304 {
8305 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8306 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8307 {
8308 USI opval = FLD (i_label16);
8309 sim_queue_pc_write (current_cpu, opval);
8310 written |= (1 << 3);
8311 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8312 }
8313 }
8314 }
8315
8316 abuf->written = written;
8317 return vpc;
8318 #undef FLD
8319 }
8320
8321 /* bv: bv$pack $ICCi_2,$hint,$label16 */
8322
8323 static SEM_PC
8324 SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8325 {
8326 #define FLD(f) abuf->fields.sfmt_beq.f
8327 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8328 int UNUSED written = 0;
8329 IADDR UNUSED pc = abuf->addr;
8330 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8331
8332 {
8333 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8334 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8335 {
8336 USI opval = FLD (i_label16);
8337 sim_queue_pc_write (current_cpu, opval);
8338 written |= (1 << 3);
8339 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8340 }
8341 }
8342 }
8343
8344 abuf->written = written;
8345 return vpc;
8346 #undef FLD
8347 }
8348
8349 /* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8350
8351 static SEM_PC
8352 SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8353 {
8354 #define FLD(f) abuf->fields.sfmt_beq.f
8355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8356 int UNUSED written = 0;
8357 IADDR UNUSED pc = abuf->addr;
8358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8359
8360 {
8361 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8362 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8363 {
8364 USI opval = FLD (i_label16);
8365 sim_queue_pc_write (current_cpu, opval);
8366 written |= (1 << 3);
8367 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8368 }
8369 }
8370 }
8371
8372 abuf->written = written;
8373 return vpc;
8374 #undef FLD
8375 }
8376
8377 /* fbra: fbra$pack $hint_taken$label16 */
8378
8379 static SEM_PC
8380 SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8381 {
8382 #define FLD(f) abuf->fields.sfmt_fbne.f
8383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8384 int UNUSED written = 0;
8385 IADDR UNUSED pc = abuf->addr;
8386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8387
8388 {
8389 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8390 {
8391 USI opval = FLD (i_label16);
8392 sim_queue_pc_write (current_cpu, opval);
8393 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8394 }
8395 }
8396
8397 return vpc;
8398 #undef FLD
8399 }
8400
8401 /* fbno: fbno$pack$hint_not_taken */
8402
8403 static SEM_PC
8404 SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8405 {
8406 #define FLD(f) abuf->fields.sfmt_fbne.f
8407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8408 int UNUSED written = 0;
8409 IADDR UNUSED pc = abuf->addr;
8410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8411
8412 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8413
8414 return vpc;
8415 #undef FLD
8416 }
8417
8418 /* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8419
8420 static SEM_PC
8421 SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8422 {
8423 #define FLD(f) abuf->fields.sfmt_fbne.f
8424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8425 int UNUSED written = 0;
8426 IADDR UNUSED pc = abuf->addr;
8427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8428
8429 {
8430 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8431 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))))) {
8432 {
8433 USI opval = FLD (i_label16);
8434 sim_queue_pc_write (current_cpu, opval);
8435 written |= (1 << 3);
8436 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8437 }
8438 }
8439 }
8440
8441 abuf->written = written;
8442 return vpc;
8443 #undef FLD
8444 }
8445
8446 /* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8447
8448 static SEM_PC
8449 SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8450 {
8451 #define FLD(f) abuf->fields.sfmt_fbne.f
8452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8453 int UNUSED written = 0;
8454 IADDR UNUSED pc = abuf->addr;
8455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8456
8457 {
8458 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8459 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8460 {
8461 USI opval = FLD (i_label16);
8462 sim_queue_pc_write (current_cpu, opval);
8463 written |= (1 << 3);
8464 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8465 }
8466 }
8467 }
8468
8469 abuf->written = written;
8470 return vpc;
8471 #undef FLD
8472 }
8473
8474 /* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8475
8476 static SEM_PC
8477 SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8478 {
8479 #define FLD(f) abuf->fields.sfmt_fbne.f
8480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8481 int UNUSED written = 0;
8482 IADDR UNUSED pc = abuf->addr;
8483 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8484
8485 {
8486 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8487 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)))) {
8488 {
8489 USI opval = FLD (i_label16);
8490 sim_queue_pc_write (current_cpu, opval);
8491 written |= (1 << 3);
8492 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8493 }
8494 }
8495 }
8496
8497 abuf->written = written;
8498 return vpc;
8499 #undef FLD
8500 }
8501
8502 /* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8503
8504 static SEM_PC
8505 SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8506 {
8507 #define FLD(f) abuf->fields.sfmt_fbne.f
8508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8509 int UNUSED written = 0;
8510 IADDR UNUSED pc = abuf->addr;
8511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8512
8513 {
8514 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8515 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8516 {
8517 USI opval = FLD (i_label16);
8518 sim_queue_pc_write (current_cpu, opval);
8519 written |= (1 << 3);
8520 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8521 }
8522 }
8523 }
8524
8525 abuf->written = written;
8526 return vpc;
8527 #undef FLD
8528 }
8529
8530 /* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8531
8532 static SEM_PC
8533 SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8534 {
8535 #define FLD(f) abuf->fields.sfmt_fbne.f
8536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8537 int UNUSED written = 0;
8538 IADDR UNUSED pc = abuf->addr;
8539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8540
8541 {
8542 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8543 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8544 {
8545 USI opval = FLD (i_label16);
8546 sim_queue_pc_write (current_cpu, opval);
8547 written |= (1 << 3);
8548 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8549 }
8550 }
8551 }
8552
8553 abuf->written = written;
8554 return vpc;
8555 #undef FLD
8556 }
8557
8558 /* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8559
8560 static SEM_PC
8561 SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8562 {
8563 #define FLD(f) abuf->fields.sfmt_fbne.f
8564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8565 int UNUSED written = 0;
8566 IADDR UNUSED pc = abuf->addr;
8567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8568
8569 {
8570 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8571 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)))) {
8572 {
8573 USI opval = FLD (i_label16);
8574 sim_queue_pc_write (current_cpu, opval);
8575 written |= (1 << 3);
8576 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8577 }
8578 }
8579 }
8580
8581 abuf->written = written;
8582 return vpc;
8583 #undef FLD
8584 }
8585
8586 /* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8587
8588 static SEM_PC
8589 SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8590 {
8591 #define FLD(f) abuf->fields.sfmt_fbne.f
8592 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8593 int UNUSED written = 0;
8594 IADDR UNUSED pc = abuf->addr;
8595 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8596
8597 {
8598 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8599 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8600 {
8601 USI opval = FLD (i_label16);
8602 sim_queue_pc_write (current_cpu, opval);
8603 written |= (1 << 3);
8604 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8605 }
8606 }
8607 }
8608
8609 abuf->written = written;
8610 return vpc;
8611 #undef FLD
8612 }
8613
8614 /* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8615
8616 static SEM_PC
8617 SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8618 {
8619 #define FLD(f) abuf->fields.sfmt_fbne.f
8620 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8621 int UNUSED written = 0;
8622 IADDR UNUSED pc = abuf->addr;
8623 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8624
8625 {
8626 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8627 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))))) {
8628 {
8629 USI opval = FLD (i_label16);
8630 sim_queue_pc_write (current_cpu, opval);
8631 written |= (1 << 3);
8632 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8633 }
8634 }
8635 }
8636
8637 abuf->written = written;
8638 return vpc;
8639 #undef FLD
8640 }
8641
8642 /* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8643
8644 static SEM_PC
8645 SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8646 {
8647 #define FLD(f) abuf->fields.sfmt_fbne.f
8648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8649 int UNUSED written = 0;
8650 IADDR UNUSED pc = abuf->addr;
8651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8652
8653 {
8654 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8655 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8656 {
8657 USI opval = FLD (i_label16);
8658 sim_queue_pc_write (current_cpu, opval);
8659 written |= (1 << 3);
8660 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8661 }
8662 }
8663 }
8664
8665 abuf->written = written;
8666 return vpc;
8667 #undef FLD
8668 }
8669
8670 /* fble: fble$pack $FCCi_2,$hint,$label16 */
8671
8672 static SEM_PC
8673 SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8674 {
8675 #define FLD(f) abuf->fields.sfmt_fbne.f
8676 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8677 int UNUSED written = 0;
8678 IADDR UNUSED pc = abuf->addr;
8679 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8680
8681 {
8682 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8683 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)))) {
8684 {
8685 USI opval = FLD (i_label16);
8686 sim_queue_pc_write (current_cpu, opval);
8687 written |= (1 << 3);
8688 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8689 }
8690 }
8691 }
8692
8693 abuf->written = written;
8694 return vpc;
8695 #undef FLD
8696 }
8697
8698 /* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8699
8700 static SEM_PC
8701 SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8702 {
8703 #define FLD(f) abuf->fields.sfmt_fbne.f
8704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8705 int UNUSED written = 0;
8706 IADDR UNUSED pc = abuf->addr;
8707 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8708
8709 {
8710 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8711 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8712 {
8713 USI opval = FLD (i_label16);
8714 sim_queue_pc_write (current_cpu, opval);
8715 written |= (1 << 3);
8716 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8717 }
8718 }
8719 }
8720
8721 abuf->written = written;
8722 return vpc;
8723 #undef FLD
8724 }
8725
8726 /* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8727
8728 static SEM_PC
8729 SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8730 {
8731 #define FLD(f) abuf->fields.sfmt_fbne.f
8732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8733 int UNUSED written = 0;
8734 IADDR UNUSED pc = abuf->addr;
8735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8736
8737 {
8738 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8739 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))))) {
8740 {
8741 USI opval = FLD (i_label16);
8742 sim_queue_pc_write (current_cpu, opval);
8743 written |= (1 << 3);
8744 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8745 }
8746 }
8747 }
8748
8749 abuf->written = written;
8750 return vpc;
8751 #undef FLD
8752 }
8753
8754 /* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8755
8756 static SEM_PC
8757 SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8758 {
8759 #define FLD(f) abuf->fields.sfmt_fbne.f
8760 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8761 int UNUSED written = 0;
8762 IADDR UNUSED pc = abuf->addr;
8763 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8764
8765 {
8766 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8767 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8768 {
8769 USI opval = FLD (i_label16);
8770 sim_queue_pc_write (current_cpu, opval);
8771 written |= (1 << 3);
8772 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8773 }
8774 }
8775 }
8776
8777 abuf->written = written;
8778 return vpc;
8779 #undef FLD
8780 }
8781
8782 /* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8783
8784 static SEM_PC
8785 SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8786 {
8787 #define FLD(f) abuf->fields.sfmt_fbne.f
8788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8789 int UNUSED written = 0;
8790 IADDR UNUSED pc = abuf->addr;
8791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8792
8793 {
8794 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8795 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))))) {
8796 {
8797 USI opval = FLD (i_label16);
8798 sim_queue_pc_write (current_cpu, opval);
8799 written |= (1 << 3);
8800 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8801 }
8802 }
8803 }
8804
8805 abuf->written = written;
8806 return vpc;
8807 #undef FLD
8808 }
8809
8810 /* bctrlr: bctrlr$pack $ccond,$hint */
8811
8812 static SEM_PC
8813 SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8814 {
8815 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8817 int UNUSED written = 0;
8818 IADDR UNUSED pc = abuf->addr;
8819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8820
8821 {
8822 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8823 {
8824 SI tmp_tmp;
8825 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8826 {
8827 USI opval = tmp_tmp;
8828 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8829 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8830 }
8831 if (EQSI (FLD (f_ccond), 0)) {
8832 if (NESI (tmp_tmp, 0)) {
8833 {
8834 USI opval = GET_H_SPR (((UINT) 272));
8835 sim_queue_pc_write (current_cpu, opval);
8836 written |= (1 << 5);
8837 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8838 }
8839 }
8840 } else {
8841 if (EQSI (tmp_tmp, 0)) {
8842 {
8843 USI opval = GET_H_SPR (((UINT) 272));
8844 sim_queue_pc_write (current_cpu, opval);
8845 written |= (1 << 5);
8846 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8847 }
8848 }
8849 }
8850 }
8851 }
8852
8853 abuf->written = written;
8854 return vpc;
8855 #undef FLD
8856 }
8857
8858 /* bralr: bralr$pack$hint_taken */
8859
8860 static SEM_PC
8861 SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8862 {
8863 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8865 int UNUSED written = 0;
8866 IADDR UNUSED pc = abuf->addr;
8867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8868
8869 {
8870 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8871 {
8872 USI opval = GET_H_SPR (((UINT) 272));
8873 sim_queue_pc_write (current_cpu, opval);
8874 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8875 }
8876 }
8877
8878 return vpc;
8879 #undef FLD
8880 }
8881
8882 /* bnolr: bnolr$pack$hint_not_taken */
8883
8884 static SEM_PC
8885 SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8886 {
8887 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8888 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8889 int UNUSED written = 0;
8890 IADDR UNUSED pc = abuf->addr;
8891 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8892
8893 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8894
8895 return vpc;
8896 #undef FLD
8897 }
8898
8899 /* beqlr: beqlr$pack $ICCi_2,$hint */
8900
8901 static SEM_PC
8902 SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8903 {
8904 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8906 int UNUSED written = 0;
8907 IADDR UNUSED pc = abuf->addr;
8908 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8909
8910 {
8911 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8912 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8913 {
8914 USI opval = GET_H_SPR (((UINT) 272));
8915 sim_queue_pc_write (current_cpu, opval);
8916 written |= (1 << 3);
8917 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8918 }
8919 }
8920 }
8921
8922 abuf->written = written;
8923 return vpc;
8924 #undef FLD
8925 }
8926
8927 /* bnelr: bnelr$pack $ICCi_2,$hint */
8928
8929 static SEM_PC
8930 SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8931 {
8932 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8934 int UNUSED written = 0;
8935 IADDR UNUSED pc = abuf->addr;
8936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8937
8938 {
8939 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8940 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8941 {
8942 USI opval = GET_H_SPR (((UINT) 272));
8943 sim_queue_pc_write (current_cpu, opval);
8944 written |= (1 << 3);
8945 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8946 }
8947 }
8948 }
8949
8950 abuf->written = written;
8951 return vpc;
8952 #undef FLD
8953 }
8954
8955 /* blelr: blelr$pack $ICCi_2,$hint */
8956
8957 static SEM_PC
8958 SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8959 {
8960 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8962 int UNUSED written = 0;
8963 IADDR UNUSED pc = abuf->addr;
8964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8965
8966 {
8967 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8968 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))))) {
8969 {
8970 USI opval = GET_H_SPR (((UINT) 272));
8971 sim_queue_pc_write (current_cpu, opval);
8972 written |= (1 << 3);
8973 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8974 }
8975 }
8976 }
8977
8978 abuf->written = written;
8979 return vpc;
8980 #undef FLD
8981 }
8982
8983 /* bgtlr: bgtlr$pack $ICCi_2,$hint */
8984
8985 static SEM_PC
8986 SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8987 {
8988 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8990 int UNUSED written = 0;
8991 IADDR UNUSED pc = abuf->addr;
8992 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8993
8994 {
8995 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8996 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)))))) {
8997 {
8998 USI opval = GET_H_SPR (((UINT) 272));
8999 sim_queue_pc_write (current_cpu, opval);
9000 written |= (1 << 3);
9001 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9002 }
9003 }
9004 }
9005
9006 abuf->written = written;
9007 return vpc;
9008 #undef FLD
9009 }
9010
9011 /* bltlr: bltlr$pack $ICCi_2,$hint */
9012
9013 static SEM_PC
9014 SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9015 {
9016 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9018 int UNUSED written = 0;
9019 IADDR UNUSED pc = abuf->addr;
9020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9021
9022 {
9023 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9024 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)))) {
9025 {
9026 USI opval = GET_H_SPR (((UINT) 272));
9027 sim_queue_pc_write (current_cpu, opval);
9028 written |= (1 << 3);
9029 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9030 }
9031 }
9032 }
9033
9034 abuf->written = written;
9035 return vpc;
9036 #undef FLD
9037 }
9038
9039 /* bgelr: bgelr$pack $ICCi_2,$hint */
9040
9041 static SEM_PC
9042 SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9043 {
9044 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9046 int UNUSED written = 0;
9047 IADDR UNUSED pc = abuf->addr;
9048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9049
9050 {
9051 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9052 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))))) {
9053 {
9054 USI opval = GET_H_SPR (((UINT) 272));
9055 sim_queue_pc_write (current_cpu, opval);
9056 written |= (1 << 3);
9057 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9058 }
9059 }
9060 }
9061
9062 abuf->written = written;
9063 return vpc;
9064 #undef FLD
9065 }
9066
9067 /* blslr: blslr$pack $ICCi_2,$hint */
9068
9069 static SEM_PC
9070 SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9071 {
9072 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9074 int UNUSED written = 0;
9075 IADDR UNUSED pc = abuf->addr;
9076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9077
9078 {
9079 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9080 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9081 {
9082 USI opval = GET_H_SPR (((UINT) 272));
9083 sim_queue_pc_write (current_cpu, opval);
9084 written |= (1 << 3);
9085 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9086 }
9087 }
9088 }
9089
9090 abuf->written = written;
9091 return vpc;
9092 #undef FLD
9093 }
9094
9095 /* bhilr: bhilr$pack $ICCi_2,$hint */
9096
9097 static SEM_PC
9098 SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9099 {
9100 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9101 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9102 int UNUSED written = 0;
9103 IADDR UNUSED pc = abuf->addr;
9104 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9105
9106 {
9107 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9108 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))))) {
9109 {
9110 USI opval = GET_H_SPR (((UINT) 272));
9111 sim_queue_pc_write (current_cpu, opval);
9112 written |= (1 << 3);
9113 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9114 }
9115 }
9116 }
9117
9118 abuf->written = written;
9119 return vpc;
9120 #undef FLD
9121 }
9122
9123 /* bclr: bclr$pack $ICCi_2,$hint */
9124
9125 static SEM_PC
9126 SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9127 {
9128 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9130 int UNUSED written = 0;
9131 IADDR UNUSED pc = abuf->addr;
9132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9133
9134 {
9135 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9136 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9137 {
9138 USI opval = GET_H_SPR (((UINT) 272));
9139 sim_queue_pc_write (current_cpu, opval);
9140 written |= (1 << 3);
9141 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9142 }
9143 }
9144 }
9145
9146 abuf->written = written;
9147 return vpc;
9148 #undef FLD
9149 }
9150
9151 /* bnclr: bnclr$pack $ICCi_2,$hint */
9152
9153 static SEM_PC
9154 SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9155 {
9156 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9158 int UNUSED written = 0;
9159 IADDR UNUSED pc = abuf->addr;
9160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9161
9162 {
9163 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9164 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9165 {
9166 USI opval = GET_H_SPR (((UINT) 272));
9167 sim_queue_pc_write (current_cpu, opval);
9168 written |= (1 << 3);
9169 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9170 }
9171 }
9172 }
9173
9174 abuf->written = written;
9175 return vpc;
9176 #undef FLD
9177 }
9178
9179 /* bnlr: bnlr$pack $ICCi_2,$hint */
9180
9181 static SEM_PC
9182 SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9183 {
9184 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9186 int UNUSED written = 0;
9187 IADDR UNUSED pc = abuf->addr;
9188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9189
9190 {
9191 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9192 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9193 {
9194 USI opval = GET_H_SPR (((UINT) 272));
9195 sim_queue_pc_write (current_cpu, opval);
9196 written |= (1 << 3);
9197 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9198 }
9199 }
9200 }
9201
9202 abuf->written = written;
9203 return vpc;
9204 #undef FLD
9205 }
9206
9207 /* bplr: bplr$pack $ICCi_2,$hint */
9208
9209 static SEM_PC
9210 SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9211 {
9212 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9214 int UNUSED written = 0;
9215 IADDR UNUSED pc = abuf->addr;
9216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9217
9218 {
9219 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9220 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9221 {
9222 USI opval = GET_H_SPR (((UINT) 272));
9223 sim_queue_pc_write (current_cpu, opval);
9224 written |= (1 << 3);
9225 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9226 }
9227 }
9228 }
9229
9230 abuf->written = written;
9231 return vpc;
9232 #undef FLD
9233 }
9234
9235 /* bvlr: bvlr$pack $ICCi_2,$hint */
9236
9237 static SEM_PC
9238 SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9239 {
9240 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9241 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9242 int UNUSED written = 0;
9243 IADDR UNUSED pc = abuf->addr;
9244 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9245
9246 {
9247 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9248 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9249 {
9250 USI opval = GET_H_SPR (((UINT) 272));
9251 sim_queue_pc_write (current_cpu, opval);
9252 written |= (1 << 3);
9253 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9254 }
9255 }
9256 }
9257
9258 abuf->written = written;
9259 return vpc;
9260 #undef FLD
9261 }
9262
9263 /* bnvlr: bnvlr$pack $ICCi_2,$hint */
9264
9265 static SEM_PC
9266 SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9267 {
9268 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9270 int UNUSED written = 0;
9271 IADDR UNUSED pc = abuf->addr;
9272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9273
9274 {
9275 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9276 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9277 {
9278 USI opval = GET_H_SPR (((UINT) 272));
9279 sim_queue_pc_write (current_cpu, opval);
9280 written |= (1 << 3);
9281 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9282 }
9283 }
9284 }
9285
9286 abuf->written = written;
9287 return vpc;
9288 #undef FLD
9289 }
9290
9291 /* fbralr: fbralr$pack$hint_taken */
9292
9293 static SEM_PC
9294 SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9295 {
9296 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9298 int UNUSED written = 0;
9299 IADDR UNUSED pc = abuf->addr;
9300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9301
9302 {
9303 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9304 {
9305 USI opval = GET_H_SPR (((UINT) 272));
9306 sim_queue_pc_write (current_cpu, opval);
9307 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9308 }
9309 }
9310
9311 return vpc;
9312 #undef FLD
9313 }
9314
9315 /* fbnolr: fbnolr$pack$hint_not_taken */
9316
9317 static SEM_PC
9318 SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9319 {
9320 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9322 int UNUSED written = 0;
9323 IADDR UNUSED pc = abuf->addr;
9324 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9325
9326 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9327
9328 return vpc;
9329 #undef FLD
9330 }
9331
9332 /* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9333
9334 static SEM_PC
9335 SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9336 {
9337 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9339 int UNUSED written = 0;
9340 IADDR UNUSED pc = abuf->addr;
9341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9342
9343 {
9344 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9345 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9346 {
9347 USI opval = GET_H_SPR (((UINT) 272));
9348 sim_queue_pc_write (current_cpu, opval);
9349 written |= (1 << 3);
9350 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9351 }
9352 }
9353 }
9354
9355 abuf->written = written;
9356 return vpc;
9357 #undef FLD
9358 }
9359
9360 /* fbnelr: fbnelr$pack $FCCi_2,$hint */
9361
9362 static SEM_PC
9363 SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9364 {
9365 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9367 int UNUSED written = 0;
9368 IADDR UNUSED pc = abuf->addr;
9369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9370
9371 {
9372 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9373 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))))) {
9374 {
9375 USI opval = GET_H_SPR (((UINT) 272));
9376 sim_queue_pc_write (current_cpu, opval);
9377 written |= (1 << 3);
9378 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9379 }
9380 }
9381 }
9382
9383 abuf->written = written;
9384 return vpc;
9385 #undef FLD
9386 }
9387
9388 /* fblglr: fblglr$pack $FCCi_2,$hint */
9389
9390 static SEM_PC
9391 SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9392 {
9393 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9395 int UNUSED written = 0;
9396 IADDR UNUSED pc = abuf->addr;
9397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9398
9399 {
9400 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9401 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)))) {
9402 {
9403 USI opval = GET_H_SPR (((UINT) 272));
9404 sim_queue_pc_write (current_cpu, opval);
9405 written |= (1 << 3);
9406 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9407 }
9408 }
9409 }
9410
9411 abuf->written = written;
9412 return vpc;
9413 #undef FLD
9414 }
9415
9416 /* fbuelr: fbuelr$pack $FCCi_2,$hint */
9417
9418 static SEM_PC
9419 SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9420 {
9421 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9423 int UNUSED written = 0;
9424 IADDR UNUSED pc = abuf->addr;
9425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9426
9427 {
9428 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9429 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9430 {
9431 USI opval = GET_H_SPR (((UINT) 272));
9432 sim_queue_pc_write (current_cpu, opval);
9433 written |= (1 << 3);
9434 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9435 }
9436 }
9437 }
9438
9439 abuf->written = written;
9440 return vpc;
9441 #undef FLD
9442 }
9443
9444 /* fbullr: fbullr$pack $FCCi_2,$hint */
9445
9446 static SEM_PC
9447 SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9448 {
9449 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9451 int UNUSED written = 0;
9452 IADDR UNUSED pc = abuf->addr;
9453 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9454
9455 {
9456 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9457 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9458 {
9459 USI opval = GET_H_SPR (((UINT) 272));
9460 sim_queue_pc_write (current_cpu, opval);
9461 written |= (1 << 3);
9462 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9463 }
9464 }
9465 }
9466
9467 abuf->written = written;
9468 return vpc;
9469 #undef FLD
9470 }
9471
9472 /* fbgelr: fbgelr$pack $FCCi_2,$hint */
9473
9474 static SEM_PC
9475 SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9476 {
9477 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9479 int UNUSED written = 0;
9480 IADDR UNUSED pc = abuf->addr;
9481 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9482
9483 {
9484 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9485 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)))) {
9486 {
9487 USI opval = GET_H_SPR (((UINT) 272));
9488 sim_queue_pc_write (current_cpu, opval);
9489 written |= (1 << 3);
9490 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9491 }
9492 }
9493 }
9494
9495 abuf->written = written;
9496 return vpc;
9497 #undef FLD
9498 }
9499
9500 /* fbltlr: fbltlr$pack $FCCi_2,$hint */
9501
9502 static SEM_PC
9503 SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9504 {
9505 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9507 int UNUSED written = 0;
9508 IADDR UNUSED pc = abuf->addr;
9509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9510
9511 {
9512 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9513 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9514 {
9515 USI opval = GET_H_SPR (((UINT) 272));
9516 sim_queue_pc_write (current_cpu, opval);
9517 written |= (1 << 3);
9518 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9519 }
9520 }
9521 }
9522
9523 abuf->written = written;
9524 return vpc;
9525 #undef FLD
9526 }
9527
9528 /* fbugelr: fbugelr$pack $FCCi_2,$hint */
9529
9530 static SEM_PC
9531 SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9532 {
9533 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9535 int UNUSED written = 0;
9536 IADDR UNUSED pc = abuf->addr;
9537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9538
9539 {
9540 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9541 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))))) {
9542 {
9543 USI opval = GET_H_SPR (((UINT) 272));
9544 sim_queue_pc_write (current_cpu, opval);
9545 written |= (1 << 3);
9546 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9547 }
9548 }
9549 }
9550
9551 abuf->written = written;
9552 return vpc;
9553 #undef FLD
9554 }
9555
9556 /* fbuglr: fbuglr$pack $FCCi_2,$hint */
9557
9558 static SEM_PC
9559 SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9560 {
9561 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9563 int UNUSED written = 0;
9564 IADDR UNUSED pc = abuf->addr;
9565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9566
9567 {
9568 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9569 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9570 {
9571 USI opval = GET_H_SPR (((UINT) 272));
9572 sim_queue_pc_write (current_cpu, opval);
9573 written |= (1 << 3);
9574 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9575 }
9576 }
9577 }
9578
9579 abuf->written = written;
9580 return vpc;
9581 #undef FLD
9582 }
9583
9584 /* fblelr: fblelr$pack $FCCi_2,$hint */
9585
9586 static SEM_PC
9587 SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9588 {
9589 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9590 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9591 int UNUSED written = 0;
9592 IADDR UNUSED pc = abuf->addr;
9593 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9594
9595 {
9596 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9597 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)))) {
9598 {
9599 USI opval = GET_H_SPR (((UINT) 272));
9600 sim_queue_pc_write (current_cpu, opval);
9601 written |= (1 << 3);
9602 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9603 }
9604 }
9605 }
9606
9607 abuf->written = written;
9608 return vpc;
9609 #undef FLD
9610 }
9611
9612 /* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9613
9614 static SEM_PC
9615 SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9616 {
9617 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9619 int UNUSED written = 0;
9620 IADDR UNUSED pc = abuf->addr;
9621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9622
9623 {
9624 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9625 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9626 {
9627 USI opval = GET_H_SPR (((UINT) 272));
9628 sim_queue_pc_write (current_cpu, opval);
9629 written |= (1 << 3);
9630 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9631 }
9632 }
9633 }
9634
9635 abuf->written = written;
9636 return vpc;
9637 #undef FLD
9638 }
9639
9640 /* fbulelr: fbulelr$pack $FCCi_2,$hint */
9641
9642 static SEM_PC
9643 SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9644 {
9645 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9646 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9647 int UNUSED written = 0;
9648 IADDR UNUSED pc = abuf->addr;
9649 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9650
9651 {
9652 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9653 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))))) {
9654 {
9655 USI opval = GET_H_SPR (((UINT) 272));
9656 sim_queue_pc_write (current_cpu, opval);
9657 written |= (1 << 3);
9658 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9659 }
9660 }
9661 }
9662
9663 abuf->written = written;
9664 return vpc;
9665 #undef FLD
9666 }
9667
9668 /* fbulr: fbulr$pack $FCCi_2,$hint */
9669
9670 static SEM_PC
9671 SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9672 {
9673 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9675 int UNUSED written = 0;
9676 IADDR UNUSED pc = abuf->addr;
9677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9678
9679 {
9680 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9681 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9682 {
9683 USI opval = GET_H_SPR (((UINT) 272));
9684 sim_queue_pc_write (current_cpu, opval);
9685 written |= (1 << 3);
9686 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9687 }
9688 }
9689 }
9690
9691 abuf->written = written;
9692 return vpc;
9693 #undef FLD
9694 }
9695
9696 /* fbolr: fbolr$pack $FCCi_2,$hint */
9697
9698 static SEM_PC
9699 SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9700 {
9701 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9703 int UNUSED written = 0;
9704 IADDR UNUSED pc = abuf->addr;
9705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9706
9707 {
9708 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9709 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))))) {
9710 {
9711 USI opval = GET_H_SPR (((UINT) 272));
9712 sim_queue_pc_write (current_cpu, opval);
9713 written |= (1 << 3);
9714 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9715 }
9716 }
9717 }
9718
9719 abuf->written = written;
9720 return vpc;
9721 #undef FLD
9722 }
9723
9724 /* bcralr: bcralr$pack $ccond$hint_taken */
9725
9726 static SEM_PC
9727 SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9728 {
9729 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9731 int UNUSED written = 0;
9732 IADDR UNUSED pc = abuf->addr;
9733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9734
9735 {
9736 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9737 {
9738 SI tmp_tmp;
9739 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9740 {
9741 USI opval = tmp_tmp;
9742 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9743 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9744 }
9745 if (EQSI (FLD (f_ccond), 0)) {
9746 if (NESI (tmp_tmp, 0)) {
9747 {
9748 USI opval = GET_H_SPR (((UINT) 272));
9749 sim_queue_pc_write (current_cpu, opval);
9750 written |= (1 << 5);
9751 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9752 }
9753 }
9754 } else {
9755 if (EQSI (tmp_tmp, 0)) {
9756 {
9757 USI opval = GET_H_SPR (((UINT) 272));
9758 sim_queue_pc_write (current_cpu, opval);
9759 written |= (1 << 5);
9760 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9761 }
9762 }
9763 }
9764 }
9765 }
9766
9767 abuf->written = written;
9768 return vpc;
9769 #undef FLD
9770 }
9771
9772 /* bcnolr: bcnolr$pack$hint_not_taken */
9773
9774 static SEM_PC
9775 SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9776 {
9777 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9779 int UNUSED written = 0;
9780 IADDR UNUSED pc = abuf->addr;
9781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9782
9783 {
9784 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9785 {
9786 SI tmp_tmp;
9787 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9788 {
9789 USI opval = tmp_tmp;
9790 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9791 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9792 }
9793 ((void) 0); /*nop*/
9794 }
9795 }
9796
9797 return vpc;
9798 #undef FLD
9799 }
9800
9801 /* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9802
9803 static SEM_PC
9804 SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9805 {
9806 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9807 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9808 int UNUSED written = 0;
9809 IADDR UNUSED pc = abuf->addr;
9810 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9811
9812 {
9813 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9814 {
9815 SI tmp_tmp;
9816 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9817 {
9818 USI opval = tmp_tmp;
9819 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9820 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9821 }
9822 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9823 if (EQSI (FLD (f_ccond), 0)) {
9824 if (NESI (tmp_tmp, 0)) {
9825 {
9826 USI opval = GET_H_SPR (((UINT) 272));
9827 sim_queue_pc_write (current_cpu, opval);
9828 written |= (1 << 6);
9829 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9830 }
9831 }
9832 } else {
9833 if (EQSI (tmp_tmp, 0)) {
9834 {
9835 USI opval = GET_H_SPR (((UINT) 272));
9836 sim_queue_pc_write (current_cpu, opval);
9837 written |= (1 << 6);
9838 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9839 }
9840 }
9841 }
9842 }
9843 }
9844 }
9845
9846 abuf->written = written;
9847 return vpc;
9848 #undef FLD
9849 }
9850
9851 /* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9852
9853 static SEM_PC
9854 SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9855 {
9856 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9857 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9858 int UNUSED written = 0;
9859 IADDR UNUSED pc = abuf->addr;
9860 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9861
9862 {
9863 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9864 {
9865 SI tmp_tmp;
9866 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9867 {
9868 USI opval = tmp_tmp;
9869 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9870 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9871 }
9872 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9873 if (EQSI (FLD (f_ccond), 0)) {
9874 if (NESI (tmp_tmp, 0)) {
9875 {
9876 USI opval = GET_H_SPR (((UINT) 272));
9877 sim_queue_pc_write (current_cpu, opval);
9878 written |= (1 << 6);
9879 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9880 }
9881 }
9882 } else {
9883 if (EQSI (tmp_tmp, 0)) {
9884 {
9885 USI opval = GET_H_SPR (((UINT) 272));
9886 sim_queue_pc_write (current_cpu, opval);
9887 written |= (1 << 6);
9888 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9889 }
9890 }
9891 }
9892 }
9893 }
9894 }
9895
9896 abuf->written = written;
9897 return vpc;
9898 #undef FLD
9899 }
9900
9901 /* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9902
9903 static SEM_PC
9904 SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9905 {
9906 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9908 int UNUSED written = 0;
9909 IADDR UNUSED pc = abuf->addr;
9910 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9911
9912 {
9913 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9914 {
9915 SI tmp_tmp;
9916 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9917 {
9918 USI opval = tmp_tmp;
9919 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9920 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9921 }
9922 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))))) {
9923 if (EQSI (FLD (f_ccond), 0)) {
9924 if (NESI (tmp_tmp, 0)) {
9925 {
9926 USI opval = GET_H_SPR (((UINT) 272));
9927 sim_queue_pc_write (current_cpu, opval);
9928 written |= (1 << 6);
9929 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9930 }
9931 }
9932 } else {
9933 if (EQSI (tmp_tmp, 0)) {
9934 {
9935 USI opval = GET_H_SPR (((UINT) 272));
9936 sim_queue_pc_write (current_cpu, opval);
9937 written |= (1 << 6);
9938 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9939 }
9940 }
9941 }
9942 }
9943 }
9944 }
9945
9946 abuf->written = written;
9947 return vpc;
9948 #undef FLD
9949 }
9950
9951 /* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
9952
9953 static SEM_PC
9954 SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9955 {
9956 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9958 int UNUSED written = 0;
9959 IADDR UNUSED pc = abuf->addr;
9960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9961
9962 {
9963 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9964 {
9965 SI tmp_tmp;
9966 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9967 {
9968 USI opval = tmp_tmp;
9969 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9970 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9971 }
9972 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)))))) {
9973 if (EQSI (FLD (f_ccond), 0)) {
9974 if (NESI (tmp_tmp, 0)) {
9975 {
9976 USI opval = GET_H_SPR (((UINT) 272));
9977 sim_queue_pc_write (current_cpu, opval);
9978 written |= (1 << 6);
9979 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9980 }
9981 }
9982 } else {
9983 if (EQSI (tmp_tmp, 0)) {
9984 {
9985 USI opval = GET_H_SPR (((UINT) 272));
9986 sim_queue_pc_write (current_cpu, opval);
9987 written |= (1 << 6);
9988 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9989 }
9990 }
9991 }
9992 }
9993 }
9994 }
9995
9996 abuf->written = written;
9997 return vpc;
9998 #undef FLD
9999 }
10000
10001 /* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
10002
10003 static SEM_PC
10004 SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10005 {
10006 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10008 int UNUSED written = 0;
10009 IADDR UNUSED pc = abuf->addr;
10010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10011
10012 {
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 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)))) {
10023 if (EQSI (FLD (f_ccond), 0)) {
10024 if (NESI (tmp_tmp, 0)) {
10025 {
10026 USI opval = GET_H_SPR (((UINT) 272));
10027 sim_queue_pc_write (current_cpu, opval);
10028 written |= (1 << 6);
10029 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10030 }
10031 }
10032 } else {
10033 if (EQSI (tmp_tmp, 0)) {
10034 {
10035 USI opval = GET_H_SPR (((UINT) 272));
10036 sim_queue_pc_write (current_cpu, opval);
10037 written |= (1 << 6);
10038 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10039 }
10040 }
10041 }
10042 }
10043 }
10044 }
10045
10046 abuf->written = written;
10047 return vpc;
10048 #undef FLD
10049 }
10050
10051 /* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10052
10053 static SEM_PC
10054 SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10055 {
10056 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10058 int UNUSED written = 0;
10059 IADDR UNUSED pc = abuf->addr;
10060 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10061
10062 {
10063 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10064 {
10065 SI tmp_tmp;
10066 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10067 {
10068 USI opval = tmp_tmp;
10069 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10070 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10071 }
10072 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))))) {
10073 if (EQSI (FLD (f_ccond), 0)) {
10074 if (NESI (tmp_tmp, 0)) {
10075 {
10076 USI opval = GET_H_SPR (((UINT) 272));
10077 sim_queue_pc_write (current_cpu, opval);
10078 written |= (1 << 6);
10079 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10080 }
10081 }
10082 } else {
10083 if (EQSI (tmp_tmp, 0)) {
10084 {
10085 USI opval = GET_H_SPR (((UINT) 272));
10086 sim_queue_pc_write (current_cpu, opval);
10087 written |= (1 << 6);
10088 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10089 }
10090 }
10091 }
10092 }
10093 }
10094 }
10095
10096 abuf->written = written;
10097 return vpc;
10098 #undef FLD
10099 }
10100
10101 /* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10102
10103 static SEM_PC
10104 SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10105 {
10106 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10108 int UNUSED written = 0;
10109 IADDR UNUSED pc = abuf->addr;
10110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10111
10112 {
10113 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10114 {
10115 SI tmp_tmp;
10116 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10117 {
10118 USI opval = tmp_tmp;
10119 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10120 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10121 }
10122 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10123 if (EQSI (FLD (f_ccond), 0)) {
10124 if (NESI (tmp_tmp, 0)) {
10125 {
10126 USI opval = GET_H_SPR (((UINT) 272));
10127 sim_queue_pc_write (current_cpu, opval);
10128 written |= (1 << 6);
10129 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10130 }
10131 }
10132 } else {
10133 if (EQSI (tmp_tmp, 0)) {
10134 {
10135 USI opval = GET_H_SPR (((UINT) 272));
10136 sim_queue_pc_write (current_cpu, opval);
10137 written |= (1 << 6);
10138 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10139 }
10140 }
10141 }
10142 }
10143 }
10144 }
10145
10146 abuf->written = written;
10147 return vpc;
10148 #undef FLD
10149 }
10150
10151 /* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10152
10153 static SEM_PC
10154 SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10155 {
10156 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10158 int UNUSED written = 0;
10159 IADDR UNUSED pc = abuf->addr;
10160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10161
10162 {
10163 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10164 {
10165 SI tmp_tmp;
10166 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10167 {
10168 USI opval = tmp_tmp;
10169 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10170 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10171 }
10172 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))))) {
10173 if (EQSI (FLD (f_ccond), 0)) {
10174 if (NESI (tmp_tmp, 0)) {
10175 {
10176 USI opval = GET_H_SPR (((UINT) 272));
10177 sim_queue_pc_write (current_cpu, opval);
10178 written |= (1 << 6);
10179 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10180 }
10181 }
10182 } else {
10183 if (EQSI (tmp_tmp, 0)) {
10184 {
10185 USI opval = GET_H_SPR (((UINT) 272));
10186 sim_queue_pc_write (current_cpu, opval);
10187 written |= (1 << 6);
10188 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10189 }
10190 }
10191 }
10192 }
10193 }
10194 }
10195
10196 abuf->written = written;
10197 return vpc;
10198 #undef FLD
10199 }
10200
10201 /* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10202
10203 static SEM_PC
10204 SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10205 {
10206 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10208 int UNUSED written = 0;
10209 IADDR UNUSED pc = abuf->addr;
10210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10211
10212 {
10213 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10214 {
10215 SI tmp_tmp;
10216 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10217 {
10218 USI opval = tmp_tmp;
10219 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10220 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10221 }
10222 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10223 if (EQSI (FLD (f_ccond), 0)) {
10224 if (NESI (tmp_tmp, 0)) {
10225 {
10226 USI opval = GET_H_SPR (((UINT) 272));
10227 sim_queue_pc_write (current_cpu, opval);
10228 written |= (1 << 6);
10229 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10230 }
10231 }
10232 } else {
10233 if (EQSI (tmp_tmp, 0)) {
10234 {
10235 USI opval = GET_H_SPR (((UINT) 272));
10236 sim_queue_pc_write (current_cpu, opval);
10237 written |= (1 << 6);
10238 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10239 }
10240 }
10241 }
10242 }
10243 }
10244 }
10245
10246 abuf->written = written;
10247 return vpc;
10248 #undef FLD
10249 }
10250
10251 /* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10252
10253 static SEM_PC
10254 SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10255 {
10256 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10258 int UNUSED written = 0;
10259 IADDR UNUSED pc = abuf->addr;
10260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10261
10262 {
10263 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10264 {
10265 SI tmp_tmp;
10266 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10267 {
10268 USI opval = tmp_tmp;
10269 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10270 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10271 }
10272 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10273 if (EQSI (FLD (f_ccond), 0)) {
10274 if (NESI (tmp_tmp, 0)) {
10275 {
10276 USI opval = GET_H_SPR (((UINT) 272));
10277 sim_queue_pc_write (current_cpu, opval);
10278 written |= (1 << 6);
10279 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10280 }
10281 }
10282 } else {
10283 if (EQSI (tmp_tmp, 0)) {
10284 {
10285 USI opval = GET_H_SPR (((UINT) 272));
10286 sim_queue_pc_write (current_cpu, opval);
10287 written |= (1 << 6);
10288 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10289 }
10290 }
10291 }
10292 }
10293 }
10294 }
10295
10296 abuf->written = written;
10297 return vpc;
10298 #undef FLD
10299 }
10300
10301 /* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10302
10303 static SEM_PC
10304 SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10305 {
10306 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10308 int UNUSED written = 0;
10309 IADDR UNUSED pc = abuf->addr;
10310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10311
10312 {
10313 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10314 {
10315 SI tmp_tmp;
10316 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10317 {
10318 USI opval = tmp_tmp;
10319 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10320 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10321 }
10322 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10323 if (EQSI (FLD (f_ccond), 0)) {
10324 if (NESI (tmp_tmp, 0)) {
10325 {
10326 USI opval = GET_H_SPR (((UINT) 272));
10327 sim_queue_pc_write (current_cpu, opval);
10328 written |= (1 << 6);
10329 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10330 }
10331 }
10332 } else {
10333 if (EQSI (tmp_tmp, 0)) {
10334 {
10335 USI opval = GET_H_SPR (((UINT) 272));
10336 sim_queue_pc_write (current_cpu, opval);
10337 written |= (1 << 6);
10338 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10339 }
10340 }
10341 }
10342 }
10343 }
10344 }
10345
10346 abuf->written = written;
10347 return vpc;
10348 #undef FLD
10349 }
10350
10351 /* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10352
10353 static SEM_PC
10354 SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10355 {
10356 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10358 int UNUSED written = 0;
10359 IADDR UNUSED pc = abuf->addr;
10360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10361
10362 {
10363 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10364 {
10365 SI tmp_tmp;
10366 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10367 {
10368 USI opval = tmp_tmp;
10369 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10370 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10371 }
10372 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10373 if (EQSI (FLD (f_ccond), 0)) {
10374 if (NESI (tmp_tmp, 0)) {
10375 {
10376 USI opval = GET_H_SPR (((UINT) 272));
10377 sim_queue_pc_write (current_cpu, opval);
10378 written |= (1 << 6);
10379 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10380 }
10381 }
10382 } else {
10383 if (EQSI (tmp_tmp, 0)) {
10384 {
10385 USI opval = GET_H_SPR (((UINT) 272));
10386 sim_queue_pc_write (current_cpu, opval);
10387 written |= (1 << 6);
10388 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10389 }
10390 }
10391 }
10392 }
10393 }
10394 }
10395
10396 abuf->written = written;
10397 return vpc;
10398 #undef FLD
10399 }
10400
10401 /* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10402
10403 static SEM_PC
10404 SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10405 {
10406 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10408 int UNUSED written = 0;
10409 IADDR UNUSED pc = abuf->addr;
10410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10411
10412 {
10413 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10414 {
10415 SI tmp_tmp;
10416 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10417 {
10418 USI opval = tmp_tmp;
10419 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10420 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10421 }
10422 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10423 if (EQSI (FLD (f_ccond), 0)) {
10424 if (NESI (tmp_tmp, 0)) {
10425 {
10426 USI opval = GET_H_SPR (((UINT) 272));
10427 sim_queue_pc_write (current_cpu, opval);
10428 written |= (1 << 6);
10429 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10430 }
10431 }
10432 } else {
10433 if (EQSI (tmp_tmp, 0)) {
10434 {
10435 USI opval = GET_H_SPR (((UINT) 272));
10436 sim_queue_pc_write (current_cpu, opval);
10437 written |= (1 << 6);
10438 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10439 }
10440 }
10441 }
10442 }
10443 }
10444 }
10445
10446 abuf->written = written;
10447 return vpc;
10448 #undef FLD
10449 }
10450
10451 /* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10452
10453 static SEM_PC
10454 SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10455 {
10456 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10458 int UNUSED written = 0;
10459 IADDR UNUSED pc = abuf->addr;
10460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10461
10462 {
10463 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10464 {
10465 SI tmp_tmp;
10466 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10467 {
10468 USI opval = tmp_tmp;
10469 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10470 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10471 }
10472 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10473 if (EQSI (FLD (f_ccond), 0)) {
10474 if (NESI (tmp_tmp, 0)) {
10475 {
10476 USI opval = GET_H_SPR (((UINT) 272));
10477 sim_queue_pc_write (current_cpu, opval);
10478 written |= (1 << 6);
10479 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10480 }
10481 }
10482 } else {
10483 if (EQSI (tmp_tmp, 0)) {
10484 {
10485 USI opval = GET_H_SPR (((UINT) 272));
10486 sim_queue_pc_write (current_cpu, opval);
10487 written |= (1 << 6);
10488 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10489 }
10490 }
10491 }
10492 }
10493 }
10494 }
10495
10496 abuf->written = written;
10497 return vpc;
10498 #undef FLD
10499 }
10500
10501 /* fcbralr: fcbralr$pack $ccond$hint_taken */
10502
10503 static SEM_PC
10504 SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10505 {
10506 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10508 int UNUSED written = 0;
10509 IADDR UNUSED pc = abuf->addr;
10510 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10511
10512 {
10513 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10514 {
10515 SI tmp_tmp;
10516 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10517 {
10518 USI opval = tmp_tmp;
10519 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10520 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10521 }
10522 if (EQSI (FLD (f_ccond), 0)) {
10523 if (NESI (tmp_tmp, 0)) {
10524 {
10525 USI opval = GET_H_SPR (((UINT) 272));
10526 sim_queue_pc_write (current_cpu, opval);
10527 written |= (1 << 5);
10528 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10529 }
10530 }
10531 } else {
10532 if (EQSI (tmp_tmp, 0)) {
10533 {
10534 USI opval = GET_H_SPR (((UINT) 272));
10535 sim_queue_pc_write (current_cpu, opval);
10536 written |= (1 << 5);
10537 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10538 }
10539 }
10540 }
10541 }
10542 }
10543
10544 abuf->written = written;
10545 return vpc;
10546 #undef FLD
10547 }
10548
10549 /* fcbnolr: fcbnolr$pack$hint_not_taken */
10550
10551 static SEM_PC
10552 SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10553 {
10554 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10556 int UNUSED written = 0;
10557 IADDR UNUSED pc = abuf->addr;
10558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10559
10560 {
10561 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10562 {
10563 SI tmp_tmp;
10564 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10565 {
10566 USI opval = tmp_tmp;
10567 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10568 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10569 }
10570 ((void) 0); /*nop*/
10571 }
10572 }
10573
10574 return vpc;
10575 #undef FLD
10576 }
10577
10578 /* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10579
10580 static SEM_PC
10581 SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10582 {
10583 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10585 int UNUSED written = 0;
10586 IADDR UNUSED pc = abuf->addr;
10587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10588
10589 {
10590 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10591 {
10592 SI tmp_tmp;
10593 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10594 {
10595 USI opval = tmp_tmp;
10596 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10597 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10598 }
10599 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10600 if (EQSI (FLD (f_ccond), 0)) {
10601 if (NESI (tmp_tmp, 0)) {
10602 {
10603 USI opval = GET_H_SPR (((UINT) 272));
10604 sim_queue_pc_write (current_cpu, opval);
10605 written |= (1 << 6);
10606 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10607 }
10608 }
10609 } else {
10610 if (EQSI (tmp_tmp, 0)) {
10611 {
10612 USI opval = GET_H_SPR (((UINT) 272));
10613 sim_queue_pc_write (current_cpu, opval);
10614 written |= (1 << 6);
10615 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10616 }
10617 }
10618 }
10619 }
10620 }
10621 }
10622
10623 abuf->written = written;
10624 return vpc;
10625 #undef FLD
10626 }
10627
10628 /* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10629
10630 static SEM_PC
10631 SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10632 {
10633 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10635 int UNUSED written = 0;
10636 IADDR UNUSED pc = abuf->addr;
10637 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10638
10639 {
10640 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10641 {
10642 SI tmp_tmp;
10643 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10644 {
10645 USI opval = tmp_tmp;
10646 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10647 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10648 }
10649 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))))) {
10650 if (EQSI (FLD (f_ccond), 0)) {
10651 if (NESI (tmp_tmp, 0)) {
10652 {
10653 USI opval = GET_H_SPR (((UINT) 272));
10654 sim_queue_pc_write (current_cpu, opval);
10655 written |= (1 << 6);
10656 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10657 }
10658 }
10659 } else {
10660 if (EQSI (tmp_tmp, 0)) {
10661 {
10662 USI opval = GET_H_SPR (((UINT) 272));
10663 sim_queue_pc_write (current_cpu, opval);
10664 written |= (1 << 6);
10665 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10666 }
10667 }
10668 }
10669 }
10670 }
10671 }
10672
10673 abuf->written = written;
10674 return vpc;
10675 #undef FLD
10676 }
10677
10678 /* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10679
10680 static SEM_PC
10681 SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10682 {
10683 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10685 int UNUSED written = 0;
10686 IADDR UNUSED pc = abuf->addr;
10687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10688
10689 {
10690 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10691 {
10692 SI tmp_tmp;
10693 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10694 {
10695 USI opval = tmp_tmp;
10696 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10697 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10698 }
10699 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)))) {
10700 if (EQSI (FLD (f_ccond), 0)) {
10701 if (NESI (tmp_tmp, 0)) {
10702 {
10703 USI opval = GET_H_SPR (((UINT) 272));
10704 sim_queue_pc_write (current_cpu, opval);
10705 written |= (1 << 6);
10706 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10707 }
10708 }
10709 } else {
10710 if (EQSI (tmp_tmp, 0)) {
10711 {
10712 USI opval = GET_H_SPR (((UINT) 272));
10713 sim_queue_pc_write (current_cpu, opval);
10714 written |= (1 << 6);
10715 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10716 }
10717 }
10718 }
10719 }
10720 }
10721 }
10722
10723 abuf->written = written;
10724 return vpc;
10725 #undef FLD
10726 }
10727
10728 /* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10729
10730 static SEM_PC
10731 SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10732 {
10733 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10735 int UNUSED written = 0;
10736 IADDR UNUSED pc = abuf->addr;
10737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10738
10739 {
10740 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10741 {
10742 SI tmp_tmp;
10743 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10744 {
10745 USI opval = tmp_tmp;
10746 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10747 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10748 }
10749 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10750 if (EQSI (FLD (f_ccond), 0)) {
10751 if (NESI (tmp_tmp, 0)) {
10752 {
10753 USI opval = GET_H_SPR (((UINT) 272));
10754 sim_queue_pc_write (current_cpu, opval);
10755 written |= (1 << 6);
10756 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10757 }
10758 }
10759 } else {
10760 if (EQSI (tmp_tmp, 0)) {
10761 {
10762 USI opval = GET_H_SPR (((UINT) 272));
10763 sim_queue_pc_write (current_cpu, opval);
10764 written |= (1 << 6);
10765 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10766 }
10767 }
10768 }
10769 }
10770 }
10771 }
10772
10773 abuf->written = written;
10774 return vpc;
10775 #undef FLD
10776 }
10777
10778 /* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10779
10780 static SEM_PC
10781 SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10782 {
10783 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10785 int UNUSED written = 0;
10786 IADDR UNUSED pc = abuf->addr;
10787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10788
10789 {
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 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10800 if (EQSI (FLD (f_ccond), 0)) {
10801 if (NESI (tmp_tmp, 0)) {
10802 {
10803 USI opval = GET_H_SPR (((UINT) 272));
10804 sim_queue_pc_write (current_cpu, opval);
10805 written |= (1 << 6);
10806 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10807 }
10808 }
10809 } else {
10810 if (EQSI (tmp_tmp, 0)) {
10811 {
10812 USI opval = GET_H_SPR (((UINT) 272));
10813 sim_queue_pc_write (current_cpu, opval);
10814 written |= (1 << 6);
10815 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10816 }
10817 }
10818 }
10819 }
10820 }
10821 }
10822
10823 abuf->written = written;
10824 return vpc;
10825 #undef FLD
10826 }
10827
10828 /* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10829
10830 static SEM_PC
10831 SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10832 {
10833 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10835 int UNUSED written = 0;
10836 IADDR UNUSED pc = abuf->addr;
10837 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10838
10839 {
10840 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10841 {
10842 SI tmp_tmp;
10843 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10844 {
10845 USI opval = tmp_tmp;
10846 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10847 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10848 }
10849 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)))) {
10850 if (EQSI (FLD (f_ccond), 0)) {
10851 if (NESI (tmp_tmp, 0)) {
10852 {
10853 USI opval = GET_H_SPR (((UINT) 272));
10854 sim_queue_pc_write (current_cpu, opval);
10855 written |= (1 << 6);
10856 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10857 }
10858 }
10859 } else {
10860 if (EQSI (tmp_tmp, 0)) {
10861 {
10862 USI opval = GET_H_SPR (((UINT) 272));
10863 sim_queue_pc_write (current_cpu, opval);
10864 written |= (1 << 6);
10865 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10866 }
10867 }
10868 }
10869 }
10870 }
10871 }
10872
10873 abuf->written = written;
10874 return vpc;
10875 #undef FLD
10876 }
10877
10878 /* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10879
10880 static SEM_PC
10881 SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10882 {
10883 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10885 int UNUSED written = 0;
10886 IADDR UNUSED pc = abuf->addr;
10887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10888
10889 {
10890 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10891 {
10892 SI tmp_tmp;
10893 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10894 {
10895 USI opval = tmp_tmp;
10896 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10897 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10898 }
10899 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10900 if (EQSI (FLD (f_ccond), 0)) {
10901 if (NESI (tmp_tmp, 0)) {
10902 {
10903 USI opval = GET_H_SPR (((UINT) 272));
10904 sim_queue_pc_write (current_cpu, opval);
10905 written |= (1 << 6);
10906 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10907 }
10908 }
10909 } else {
10910 if (EQSI (tmp_tmp, 0)) {
10911 {
10912 USI opval = GET_H_SPR (((UINT) 272));
10913 sim_queue_pc_write (current_cpu, opval);
10914 written |= (1 << 6);
10915 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10916 }
10917 }
10918 }
10919 }
10920 }
10921 }
10922
10923 abuf->written = written;
10924 return vpc;
10925 #undef FLD
10926 }
10927
10928 /* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
10929
10930 static SEM_PC
10931 SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10932 {
10933 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10935 int UNUSED written = 0;
10936 IADDR UNUSED pc = abuf->addr;
10937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10938
10939 {
10940 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10941 {
10942 SI tmp_tmp;
10943 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10944 {
10945 USI opval = tmp_tmp;
10946 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10947 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10948 }
10949 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))))) {
10950 if (EQSI (FLD (f_ccond), 0)) {
10951 if (NESI (tmp_tmp, 0)) {
10952 {
10953 USI opval = GET_H_SPR (((UINT) 272));
10954 sim_queue_pc_write (current_cpu, opval);
10955 written |= (1 << 6);
10956 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10957 }
10958 }
10959 } else {
10960 if (EQSI (tmp_tmp, 0)) {
10961 {
10962 USI opval = GET_H_SPR (((UINT) 272));
10963 sim_queue_pc_write (current_cpu, opval);
10964 written |= (1 << 6);
10965 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10966 }
10967 }
10968 }
10969 }
10970 }
10971 }
10972
10973 abuf->written = written;
10974 return vpc;
10975 #undef FLD
10976 }
10977
10978 /* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
10979
10980 static SEM_PC
10981 SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10982 {
10983 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10985 int UNUSED written = 0;
10986 IADDR UNUSED pc = abuf->addr;
10987 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10988
10989 {
10990 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10991 {
10992 SI tmp_tmp;
10993 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10994 {
10995 USI opval = tmp_tmp;
10996 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10997 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10998 }
10999 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
11000 if (EQSI (FLD (f_ccond), 0)) {
11001 if (NESI (tmp_tmp, 0)) {
11002 {
11003 USI opval = GET_H_SPR (((UINT) 272));
11004 sim_queue_pc_write (current_cpu, opval);
11005 written |= (1 << 6);
11006 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11007 }
11008 }
11009 } else {
11010 if (EQSI (tmp_tmp, 0)) {
11011 {
11012 USI opval = GET_H_SPR (((UINT) 272));
11013 sim_queue_pc_write (current_cpu, opval);
11014 written |= (1 << 6);
11015 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11016 }
11017 }
11018 }
11019 }
11020 }
11021 }
11022
11023 abuf->written = written;
11024 return vpc;
11025 #undef FLD
11026 }
11027
11028 /* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11029
11030 static SEM_PC
11031 SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11032 {
11033 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11035 int UNUSED written = 0;
11036 IADDR UNUSED pc = abuf->addr;
11037 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11038
11039 {
11040 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11041 {
11042 SI tmp_tmp;
11043 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11044 {
11045 USI opval = tmp_tmp;
11046 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11047 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11048 }
11049 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)))) {
11050 if (EQSI (FLD (f_ccond), 0)) {
11051 if (NESI (tmp_tmp, 0)) {
11052 {
11053 USI opval = GET_H_SPR (((UINT) 272));
11054 sim_queue_pc_write (current_cpu, opval);
11055 written |= (1 << 6);
11056 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11057 }
11058 }
11059 } else {
11060 if (EQSI (tmp_tmp, 0)) {
11061 {
11062 USI opval = GET_H_SPR (((UINT) 272));
11063 sim_queue_pc_write (current_cpu, opval);
11064 written |= (1 << 6);
11065 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11066 }
11067 }
11068 }
11069 }
11070 }
11071 }
11072
11073 abuf->written = written;
11074 return vpc;
11075 #undef FLD
11076 }
11077
11078 /* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11079
11080 static SEM_PC
11081 SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11082 {
11083 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11085 int UNUSED written = 0;
11086 IADDR UNUSED pc = abuf->addr;
11087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11088
11089 {
11090 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11091 {
11092 SI tmp_tmp;
11093 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11094 {
11095 USI opval = tmp_tmp;
11096 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11097 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11098 }
11099 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11100 if (EQSI (FLD (f_ccond), 0)) {
11101 if (NESI (tmp_tmp, 0)) {
11102 {
11103 USI opval = GET_H_SPR (((UINT) 272));
11104 sim_queue_pc_write (current_cpu, opval);
11105 written |= (1 << 6);
11106 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11107 }
11108 }
11109 } else {
11110 if (EQSI (tmp_tmp, 0)) {
11111 {
11112 USI opval = GET_H_SPR (((UINT) 272));
11113 sim_queue_pc_write (current_cpu, opval);
11114 written |= (1 << 6);
11115 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11116 }
11117 }
11118 }
11119 }
11120 }
11121 }
11122
11123 abuf->written = written;
11124 return vpc;
11125 #undef FLD
11126 }
11127
11128 /* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11129
11130 static SEM_PC
11131 SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11132 {
11133 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11135 int UNUSED written = 0;
11136 IADDR UNUSED pc = abuf->addr;
11137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11138
11139 {
11140 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11141 {
11142 SI tmp_tmp;
11143 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11144 {
11145 USI opval = tmp_tmp;
11146 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11147 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11148 }
11149 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))))) {
11150 if (EQSI (FLD (f_ccond), 0)) {
11151 if (NESI (tmp_tmp, 0)) {
11152 {
11153 USI opval = GET_H_SPR (((UINT) 272));
11154 sim_queue_pc_write (current_cpu, opval);
11155 written |= (1 << 6);
11156 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11157 }
11158 }
11159 } else {
11160 if (EQSI (tmp_tmp, 0)) {
11161 {
11162 USI opval = GET_H_SPR (((UINT) 272));
11163 sim_queue_pc_write (current_cpu, opval);
11164 written |= (1 << 6);
11165 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11166 }
11167 }
11168 }
11169 }
11170 }
11171 }
11172
11173 abuf->written = written;
11174 return vpc;
11175 #undef FLD
11176 }
11177
11178 /* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11179
11180 static SEM_PC
11181 SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11182 {
11183 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11185 int UNUSED written = 0;
11186 IADDR UNUSED pc = abuf->addr;
11187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11188
11189 {
11190 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11191 {
11192 SI tmp_tmp;
11193 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11194 {
11195 USI opval = tmp_tmp;
11196 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11197 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11198 }
11199 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11200 if (EQSI (FLD (f_ccond), 0)) {
11201 if (NESI (tmp_tmp, 0)) {
11202 {
11203 USI opval = GET_H_SPR (((UINT) 272));
11204 sim_queue_pc_write (current_cpu, opval);
11205 written |= (1 << 6);
11206 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11207 }
11208 }
11209 } else {
11210 if (EQSI (tmp_tmp, 0)) {
11211 {
11212 USI opval = GET_H_SPR (((UINT) 272));
11213 sim_queue_pc_write (current_cpu, opval);
11214 written |= (1 << 6);
11215 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11216 }
11217 }
11218 }
11219 }
11220 }
11221 }
11222
11223 abuf->written = written;
11224 return vpc;
11225 #undef FLD
11226 }
11227
11228 /* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11229
11230 static SEM_PC
11231 SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11232 {
11233 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11235 int UNUSED written = 0;
11236 IADDR UNUSED pc = abuf->addr;
11237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11238
11239 {
11240 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11241 {
11242 SI tmp_tmp;
11243 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11244 {
11245 USI opval = tmp_tmp;
11246 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11247 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11248 }
11249 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))))) {
11250 if (EQSI (FLD (f_ccond), 0)) {
11251 if (NESI (tmp_tmp, 0)) {
11252 {
11253 USI opval = GET_H_SPR (((UINT) 272));
11254 sim_queue_pc_write (current_cpu, opval);
11255 written |= (1 << 6);
11256 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11257 }
11258 }
11259 } else {
11260 if (EQSI (tmp_tmp, 0)) {
11261 {
11262 USI opval = GET_H_SPR (((UINT) 272));
11263 sim_queue_pc_write (current_cpu, opval);
11264 written |= (1 << 6);
11265 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11266 }
11267 }
11268 }
11269 }
11270 }
11271 }
11272
11273 abuf->written = written;
11274 return vpc;
11275 #undef FLD
11276 }
11277
11278 /* jmpl: jmpl$pack @($GRi,$GRj) */
11279
11280 static SEM_PC
11281 SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11282 {
11283 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11285 int UNUSED written = 0;
11286 IADDR UNUSED pc = abuf->addr;
11287 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11288
11289 {
11290 if (EQSI (FLD (f_LI), 1)) {
11291 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11292 }
11293 {
11294 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11295 sim_queue_pc_write (current_cpu, opval);
11296 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11297 }
11298 frvbf_model_branch (current_cpu, pc, 2);
11299 }
11300
11301 return vpc;
11302 #undef FLD
11303 }
11304
11305 /* calll: calll$pack $callann($GRi,$GRj) */
11306
11307 static SEM_PC
11308 SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11309 {
11310 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11312 int UNUSED written = 0;
11313 IADDR UNUSED pc = abuf->addr;
11314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11315
11316 {
11317 if (EQSI (FLD (f_LI), 1)) {
11318 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11319 }
11320 {
11321 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11322 sim_queue_pc_write (current_cpu, opval);
11323 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11324 }
11325 frvbf_model_branch (current_cpu, pc, 2);
11326 }
11327
11328 return vpc;
11329 #undef FLD
11330 }
11331
11332 /* jmpil: jmpil$pack @($GRi,$s12) */
11333
11334 static SEM_PC
11335 SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11336 {
11337 #define FLD(f) abuf->fields.sfmt_jmpil.f
11338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11339 int UNUSED written = 0;
11340 IADDR UNUSED pc = abuf->addr;
11341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11342
11343 {
11344 if (EQSI (FLD (f_LI), 1)) {
11345 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11346 }
11347 {
11348 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11349 sim_queue_pc_write (current_cpu, opval);
11350 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11351 }
11352 frvbf_model_branch (current_cpu, pc, 2);
11353 }
11354
11355 return vpc;
11356 #undef FLD
11357 }
11358
11359 /* callil: callil$pack @($GRi,$s12) */
11360
11361 static SEM_PC
11362 SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11363 {
11364 #define FLD(f) abuf->fields.sfmt_jmpil.f
11365 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11366 int UNUSED written = 0;
11367 IADDR UNUSED pc = abuf->addr;
11368 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11369
11370 {
11371 if (EQSI (FLD (f_LI), 1)) {
11372 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11373 }
11374 {
11375 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11376 sim_queue_pc_write (current_cpu, opval);
11377 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11378 }
11379 frvbf_model_branch (current_cpu, pc, 2);
11380 }
11381
11382 return vpc;
11383 #undef FLD
11384 }
11385
11386 /* call: call$pack $label24 */
11387
11388 static SEM_PC
11389 SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11390 {
11391 #define FLD(f) abuf->fields.sfmt_call.f
11392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11393 int UNUSED written = 0;
11394 IADDR UNUSED pc = abuf->addr;
11395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11396
11397 {
11398 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11399 {
11400 USI opval = FLD (i_label24);
11401 sim_queue_pc_write (current_cpu, opval);
11402 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11403 }
11404 frvbf_model_branch (current_cpu, pc, 2);
11405 }
11406
11407 return vpc;
11408 #undef FLD
11409 }
11410
11411 /* rett: rett$pack $debug */
11412
11413 static SEM_PC
11414 SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11415 {
11416 #define FLD(f) abuf->fields.sfmt_rett.f
11417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11418 int UNUSED written = 0;
11419 IADDR UNUSED pc = abuf->addr;
11420 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11421
11422 {
11423 {
11424 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11425 sim_queue_pc_write (current_cpu, opval);
11426 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11427 }
11428 frvbf_model_branch (current_cpu, pc, 2);
11429 }
11430
11431 return vpc;
11432 #undef FLD
11433 }
11434
11435 /* rei: rei$pack $eir */
11436
11437 static SEM_PC
11438 SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11439 {
11440 #define FLD(f) abuf->fields.fmt_empty.f
11441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11442 int UNUSED written = 0;
11443 IADDR UNUSED pc = abuf->addr;
11444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11445
11446 ((void) 0); /*nop*/
11447
11448 return vpc;
11449 #undef FLD
11450 }
11451
11452 /* tra: tra$pack $GRi,$GRj */
11453
11454 static SEM_PC
11455 SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11456 {
11457 #define FLD(f) abuf->fields.sfmt_ftne.f
11458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11459 int UNUSED written = 0;
11460 IADDR UNUSED pc = abuf->addr;
11461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11462
11463 {
11464 ; /*clobber*/
11465 ; /*clobber*/
11466 ; /*clobber*/
11467 ; /*clobber*/
11468 if (NEBI (CPU (h_psr_esr), 0)) {
11469 {
11470 ; /*clobber*/
11471 ; /*clobber*/
11472 ; /*clobber*/
11473 ; /*clobber*/
11474 }
11475 }
11476 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11477 }
11478
11479 abuf->written = written;
11480 return vpc;
11481 #undef FLD
11482 }
11483
11484 /* tno: tno$pack */
11485
11486 static SEM_PC
11487 SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11488 {
11489 #define FLD(f) abuf->fields.fmt_empty.f
11490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11491 int UNUSED written = 0;
11492 IADDR UNUSED pc = abuf->addr;
11493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11494
11495 ((void) 0); /*nop*/
11496
11497 return vpc;
11498 #undef FLD
11499 }
11500
11501 /* teq: teq$pack $ICCi_2,$GRi,$GRj */
11502
11503 static SEM_PC
11504 SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11505 {
11506 #define FLD(f) abuf->fields.sfmt_teq.f
11507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11508 int UNUSED written = 0;
11509 IADDR UNUSED pc = abuf->addr;
11510 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11511
11512 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11513 {
11514 ; /*clobber*/
11515 ; /*clobber*/
11516 ; /*clobber*/
11517 ; /*clobber*/
11518 if (NEBI (CPU (h_psr_esr), 0)) {
11519 {
11520 ; /*clobber*/
11521 ; /*clobber*/
11522 ; /*clobber*/
11523 ; /*clobber*/
11524 }
11525 }
11526 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11527 }
11528 }
11529
11530 abuf->written = written;
11531 return vpc;
11532 #undef FLD
11533 }
11534
11535 /* tne: tne$pack $ICCi_2,$GRi,$GRj */
11536
11537 static SEM_PC
11538 SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11539 {
11540 #define FLD(f) abuf->fields.sfmt_teq.f
11541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11542 int UNUSED written = 0;
11543 IADDR UNUSED pc = abuf->addr;
11544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11545
11546 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11547 {
11548 ; /*clobber*/
11549 ; /*clobber*/
11550 ; /*clobber*/
11551 ; /*clobber*/
11552 if (NEBI (CPU (h_psr_esr), 0)) {
11553 {
11554 ; /*clobber*/
11555 ; /*clobber*/
11556 ; /*clobber*/
11557 ; /*clobber*/
11558 }
11559 }
11560 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11561 }
11562 }
11563
11564 abuf->written = written;
11565 return vpc;
11566 #undef FLD
11567 }
11568
11569 /* tle: tle$pack $ICCi_2,$GRi,$GRj */
11570
11571 static SEM_PC
11572 SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11573 {
11574 #define FLD(f) abuf->fields.sfmt_teq.f
11575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11576 int UNUSED written = 0;
11577 IADDR UNUSED pc = abuf->addr;
11578 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11579
11580 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))))) {
11581 {
11582 ; /*clobber*/
11583 ; /*clobber*/
11584 ; /*clobber*/
11585 ; /*clobber*/
11586 if (NEBI (CPU (h_psr_esr), 0)) {
11587 {
11588 ; /*clobber*/
11589 ; /*clobber*/
11590 ; /*clobber*/
11591 ; /*clobber*/
11592 }
11593 }
11594 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11595 }
11596 }
11597
11598 abuf->written = written;
11599 return vpc;
11600 #undef FLD
11601 }
11602
11603 /* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11604
11605 static SEM_PC
11606 SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11607 {
11608 #define FLD(f) abuf->fields.sfmt_teq.f
11609 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11610 int UNUSED written = 0;
11611 IADDR UNUSED pc = abuf->addr;
11612 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11613
11614 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)))))) {
11615 {
11616 ; /*clobber*/
11617 ; /*clobber*/
11618 ; /*clobber*/
11619 ; /*clobber*/
11620 if (NEBI (CPU (h_psr_esr), 0)) {
11621 {
11622 ; /*clobber*/
11623 ; /*clobber*/
11624 ; /*clobber*/
11625 ; /*clobber*/
11626 }
11627 }
11628 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11629 }
11630 }
11631
11632 abuf->written = written;
11633 return vpc;
11634 #undef FLD
11635 }
11636
11637 /* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11638
11639 static SEM_PC
11640 SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11641 {
11642 #define FLD(f) abuf->fields.sfmt_teq.f
11643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11644 int UNUSED written = 0;
11645 IADDR UNUSED pc = abuf->addr;
11646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11647
11648 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)))) {
11649 {
11650 ; /*clobber*/
11651 ; /*clobber*/
11652 ; /*clobber*/
11653 ; /*clobber*/
11654 if (NEBI (CPU (h_psr_esr), 0)) {
11655 {
11656 ; /*clobber*/
11657 ; /*clobber*/
11658 ; /*clobber*/
11659 ; /*clobber*/
11660 }
11661 }
11662 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11663 }
11664 }
11665
11666 abuf->written = written;
11667 return vpc;
11668 #undef FLD
11669 }
11670
11671 /* tge: tge$pack $ICCi_2,$GRi,$GRj */
11672
11673 static SEM_PC
11674 SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11675 {
11676 #define FLD(f) abuf->fields.sfmt_teq.f
11677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11678 int UNUSED written = 0;
11679 IADDR UNUSED pc = abuf->addr;
11680 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11681
11682 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))))) {
11683 {
11684 ; /*clobber*/
11685 ; /*clobber*/
11686 ; /*clobber*/
11687 ; /*clobber*/
11688 if (NEBI (CPU (h_psr_esr), 0)) {
11689 {
11690 ; /*clobber*/
11691 ; /*clobber*/
11692 ; /*clobber*/
11693 ; /*clobber*/
11694 }
11695 }
11696 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11697 }
11698 }
11699
11700 abuf->written = written;
11701 return vpc;
11702 #undef FLD
11703 }
11704
11705 /* tls: tls$pack $ICCi_2,$GRi,$GRj */
11706
11707 static SEM_PC
11708 SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11709 {
11710 #define FLD(f) abuf->fields.sfmt_teq.f
11711 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11712 int UNUSED written = 0;
11713 IADDR UNUSED pc = abuf->addr;
11714 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11715
11716 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11717 {
11718 ; /*clobber*/
11719 ; /*clobber*/
11720 ; /*clobber*/
11721 ; /*clobber*/
11722 if (NEBI (CPU (h_psr_esr), 0)) {
11723 {
11724 ; /*clobber*/
11725 ; /*clobber*/
11726 ; /*clobber*/
11727 ; /*clobber*/
11728 }
11729 }
11730 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11731 }
11732 }
11733
11734 abuf->written = written;
11735 return vpc;
11736 #undef FLD
11737 }
11738
11739 /* thi: thi$pack $ICCi_2,$GRi,$GRj */
11740
11741 static SEM_PC
11742 SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11743 {
11744 #define FLD(f) abuf->fields.sfmt_teq.f
11745 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11746 int UNUSED written = 0;
11747 IADDR UNUSED pc = abuf->addr;
11748 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11749
11750 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))))) {
11751 {
11752 ; /*clobber*/
11753 ; /*clobber*/
11754 ; /*clobber*/
11755 ; /*clobber*/
11756 if (NEBI (CPU (h_psr_esr), 0)) {
11757 {
11758 ; /*clobber*/
11759 ; /*clobber*/
11760 ; /*clobber*/
11761 ; /*clobber*/
11762 }
11763 }
11764 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11765 }
11766 }
11767
11768 abuf->written = written;
11769 return vpc;
11770 #undef FLD
11771 }
11772
11773 /* tc: tc$pack $ICCi_2,$GRi,$GRj */
11774
11775 static SEM_PC
11776 SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11777 {
11778 #define FLD(f) abuf->fields.sfmt_teq.f
11779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11780 int UNUSED written = 0;
11781 IADDR UNUSED pc = abuf->addr;
11782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11783
11784 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11785 {
11786 ; /*clobber*/
11787 ; /*clobber*/
11788 ; /*clobber*/
11789 ; /*clobber*/
11790 if (NEBI (CPU (h_psr_esr), 0)) {
11791 {
11792 ; /*clobber*/
11793 ; /*clobber*/
11794 ; /*clobber*/
11795 ; /*clobber*/
11796 }
11797 }
11798 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11799 }
11800 }
11801
11802 abuf->written = written;
11803 return vpc;
11804 #undef FLD
11805 }
11806
11807 /* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11808
11809 static SEM_PC
11810 SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11811 {
11812 #define FLD(f) abuf->fields.sfmt_teq.f
11813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11814 int UNUSED written = 0;
11815 IADDR UNUSED pc = abuf->addr;
11816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11817
11818 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11819 {
11820 ; /*clobber*/
11821 ; /*clobber*/
11822 ; /*clobber*/
11823 ; /*clobber*/
11824 if (NEBI (CPU (h_psr_esr), 0)) {
11825 {
11826 ; /*clobber*/
11827 ; /*clobber*/
11828 ; /*clobber*/
11829 ; /*clobber*/
11830 }
11831 }
11832 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11833 }
11834 }
11835
11836 abuf->written = written;
11837 return vpc;
11838 #undef FLD
11839 }
11840
11841 /* tn: tn$pack $ICCi_2,$GRi,$GRj */
11842
11843 static SEM_PC
11844 SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11845 {
11846 #define FLD(f) abuf->fields.sfmt_teq.f
11847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11848 int UNUSED written = 0;
11849 IADDR UNUSED pc = abuf->addr;
11850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11851
11852 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11853 {
11854 ; /*clobber*/
11855 ; /*clobber*/
11856 ; /*clobber*/
11857 ; /*clobber*/
11858 if (NEBI (CPU (h_psr_esr), 0)) {
11859 {
11860 ; /*clobber*/
11861 ; /*clobber*/
11862 ; /*clobber*/
11863 ; /*clobber*/
11864 }
11865 }
11866 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11867 }
11868 }
11869
11870 abuf->written = written;
11871 return vpc;
11872 #undef FLD
11873 }
11874
11875 /* tp: tp$pack $ICCi_2,$GRi,$GRj */
11876
11877 static SEM_PC
11878 SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11879 {
11880 #define FLD(f) abuf->fields.sfmt_teq.f
11881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11882 int UNUSED written = 0;
11883 IADDR UNUSED pc = abuf->addr;
11884 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11885
11886 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11887 {
11888 ; /*clobber*/
11889 ; /*clobber*/
11890 ; /*clobber*/
11891 ; /*clobber*/
11892 if (NEBI (CPU (h_psr_esr), 0)) {
11893 {
11894 ; /*clobber*/
11895 ; /*clobber*/
11896 ; /*clobber*/
11897 ; /*clobber*/
11898 }
11899 }
11900 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11901 }
11902 }
11903
11904 abuf->written = written;
11905 return vpc;
11906 #undef FLD
11907 }
11908
11909 /* tv: tv$pack $ICCi_2,$GRi,$GRj */
11910
11911 static SEM_PC
11912 SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11913 {
11914 #define FLD(f) abuf->fields.sfmt_teq.f
11915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11916 int UNUSED written = 0;
11917 IADDR UNUSED pc = abuf->addr;
11918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11919
11920 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
11921 {
11922 ; /*clobber*/
11923 ; /*clobber*/
11924 ; /*clobber*/
11925 ; /*clobber*/
11926 if (NEBI (CPU (h_psr_esr), 0)) {
11927 {
11928 ; /*clobber*/
11929 ; /*clobber*/
11930 ; /*clobber*/
11931 ; /*clobber*/
11932 }
11933 }
11934 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11935 }
11936 }
11937
11938 abuf->written = written;
11939 return vpc;
11940 #undef FLD
11941 }
11942
11943 /* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
11944
11945 static SEM_PC
11946 SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11947 {
11948 #define FLD(f) abuf->fields.sfmt_teq.f
11949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11950 int UNUSED written = 0;
11951 IADDR UNUSED pc = abuf->addr;
11952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11953
11954 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11955 {
11956 ; /*clobber*/
11957 ; /*clobber*/
11958 ; /*clobber*/
11959 ; /*clobber*/
11960 if (NEBI (CPU (h_psr_esr), 0)) {
11961 {
11962 ; /*clobber*/
11963 ; /*clobber*/
11964 ; /*clobber*/
11965 ; /*clobber*/
11966 }
11967 }
11968 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11969 }
11970 }
11971
11972 abuf->written = written;
11973 return vpc;
11974 #undef FLD
11975 }
11976
11977 /* ftra: ftra$pack $GRi,$GRj */
11978
11979 static SEM_PC
11980 SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11981 {
11982 #define FLD(f) abuf->fields.sfmt_ftne.f
11983 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11984 int UNUSED written = 0;
11985 IADDR UNUSED pc = abuf->addr;
11986 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11987
11988 {
11989 ; /*clobber*/
11990 ; /*clobber*/
11991 ; /*clobber*/
11992 ; /*clobber*/
11993 if (NEBI (CPU (h_psr_esr), 0)) {
11994 {
11995 ; /*clobber*/
11996 ; /*clobber*/
11997 ; /*clobber*/
11998 ; /*clobber*/
11999 }
12000 }
12001 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12002 }
12003
12004 abuf->written = written;
12005 return vpc;
12006 #undef FLD
12007 }
12008
12009 /* ftno: ftno$pack */
12010
12011 static SEM_PC
12012 SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12013 {
12014 #define FLD(f) abuf->fields.fmt_empty.f
12015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12016 int UNUSED written = 0;
12017 IADDR UNUSED pc = abuf->addr;
12018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12019
12020 ((void) 0); /*nop*/
12021
12022 return vpc;
12023 #undef FLD
12024 }
12025
12026 /* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12027
12028 static SEM_PC
12029 SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12030 {
12031 #define FLD(f) abuf->fields.sfmt_ftne.f
12032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12033 int UNUSED written = 0;
12034 IADDR UNUSED pc = abuf->addr;
12035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12036
12037 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))))) {
12038 {
12039 ; /*clobber*/
12040 ; /*clobber*/
12041 ; /*clobber*/
12042 ; /*clobber*/
12043 if (NEBI (CPU (h_psr_esr), 0)) {
12044 {
12045 ; /*clobber*/
12046 ; /*clobber*/
12047 ; /*clobber*/
12048 ; /*clobber*/
12049 }
12050 }
12051 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12052 }
12053 }
12054
12055 abuf->written = written;
12056 return vpc;
12057 #undef FLD
12058 }
12059
12060 /* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12061
12062 static SEM_PC
12063 SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12064 {
12065 #define FLD(f) abuf->fields.sfmt_ftne.f
12066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12067 int UNUSED written = 0;
12068 IADDR UNUSED pc = abuf->addr;
12069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12070
12071 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12072 {
12073 ; /*clobber*/
12074 ; /*clobber*/
12075 ; /*clobber*/
12076 ; /*clobber*/
12077 if (NEBI (CPU (h_psr_esr), 0)) {
12078 {
12079 ; /*clobber*/
12080 ; /*clobber*/
12081 ; /*clobber*/
12082 ; /*clobber*/
12083 }
12084 }
12085 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12086 }
12087 }
12088
12089 abuf->written = written;
12090 return vpc;
12091 #undef FLD
12092 }
12093
12094 /* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12095
12096 static SEM_PC
12097 SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12098 {
12099 #define FLD(f) abuf->fields.sfmt_ftne.f
12100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12101 int UNUSED written = 0;
12102 IADDR UNUSED pc = abuf->addr;
12103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12104
12105 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)))) {
12106 {
12107 ; /*clobber*/
12108 ; /*clobber*/
12109 ; /*clobber*/
12110 ; /*clobber*/
12111 if (NEBI (CPU (h_psr_esr), 0)) {
12112 {
12113 ; /*clobber*/
12114 ; /*clobber*/
12115 ; /*clobber*/
12116 ; /*clobber*/
12117 }
12118 }
12119 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12120 }
12121 }
12122
12123 abuf->written = written;
12124 return vpc;
12125 #undef FLD
12126 }
12127
12128 /* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12129
12130 static SEM_PC
12131 SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12132 {
12133 #define FLD(f) abuf->fields.sfmt_ftne.f
12134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12135 int UNUSED written = 0;
12136 IADDR UNUSED pc = abuf->addr;
12137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12138
12139 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12140 {
12141 ; /*clobber*/
12142 ; /*clobber*/
12143 ; /*clobber*/
12144 ; /*clobber*/
12145 if (NEBI (CPU (h_psr_esr), 0)) {
12146 {
12147 ; /*clobber*/
12148 ; /*clobber*/
12149 ; /*clobber*/
12150 ; /*clobber*/
12151 }
12152 }
12153 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12154 }
12155 }
12156
12157 abuf->written = written;
12158 return vpc;
12159 #undef FLD
12160 }
12161
12162 /* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12163
12164 static SEM_PC
12165 SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12166 {
12167 #define FLD(f) abuf->fields.sfmt_ftne.f
12168 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12169 int UNUSED written = 0;
12170 IADDR UNUSED pc = abuf->addr;
12171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12172
12173 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12174 {
12175 ; /*clobber*/
12176 ; /*clobber*/
12177 ; /*clobber*/
12178 ; /*clobber*/
12179 if (NEBI (CPU (h_psr_esr), 0)) {
12180 {
12181 ; /*clobber*/
12182 ; /*clobber*/
12183 ; /*clobber*/
12184 ; /*clobber*/
12185 }
12186 }
12187 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12188 }
12189 }
12190
12191 abuf->written = written;
12192 return vpc;
12193 #undef FLD
12194 }
12195
12196 /* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12197
12198 static SEM_PC
12199 SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12200 {
12201 #define FLD(f) abuf->fields.sfmt_ftne.f
12202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12203 int UNUSED written = 0;
12204 IADDR UNUSED pc = abuf->addr;
12205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12206
12207 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)))) {
12208 {
12209 ; /*clobber*/
12210 ; /*clobber*/
12211 ; /*clobber*/
12212 ; /*clobber*/
12213 if (NEBI (CPU (h_psr_esr), 0)) {
12214 {
12215 ; /*clobber*/
12216 ; /*clobber*/
12217 ; /*clobber*/
12218 ; /*clobber*/
12219 }
12220 }
12221 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12222 }
12223 }
12224
12225 abuf->written = written;
12226 return vpc;
12227 #undef FLD
12228 }
12229
12230 /* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12231
12232 static SEM_PC
12233 SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12234 {
12235 #define FLD(f) abuf->fields.sfmt_ftne.f
12236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12237 int UNUSED written = 0;
12238 IADDR UNUSED pc = abuf->addr;
12239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12240
12241 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12242 {
12243 ; /*clobber*/
12244 ; /*clobber*/
12245 ; /*clobber*/
12246 ; /*clobber*/
12247 if (NEBI (CPU (h_psr_esr), 0)) {
12248 {
12249 ; /*clobber*/
12250 ; /*clobber*/
12251 ; /*clobber*/
12252 ; /*clobber*/
12253 }
12254 }
12255 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12256 }
12257 }
12258
12259 abuf->written = written;
12260 return vpc;
12261 #undef FLD
12262 }
12263
12264 /* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12265
12266 static SEM_PC
12267 SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12268 {
12269 #define FLD(f) abuf->fields.sfmt_ftne.f
12270 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12271 int UNUSED written = 0;
12272 IADDR UNUSED pc = abuf->addr;
12273 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12274
12275 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))))) {
12276 {
12277 ; /*clobber*/
12278 ; /*clobber*/
12279 ; /*clobber*/
12280 ; /*clobber*/
12281 if (NEBI (CPU (h_psr_esr), 0)) {
12282 {
12283 ; /*clobber*/
12284 ; /*clobber*/
12285 ; /*clobber*/
12286 ; /*clobber*/
12287 }
12288 }
12289 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12290 }
12291 }
12292
12293 abuf->written = written;
12294 return vpc;
12295 #undef FLD
12296 }
12297
12298 /* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12299
12300 static SEM_PC
12301 SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12302 {
12303 #define FLD(f) abuf->fields.sfmt_ftne.f
12304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12305 int UNUSED written = 0;
12306 IADDR UNUSED pc = abuf->addr;
12307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12308
12309 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12310 {
12311 ; /*clobber*/
12312 ; /*clobber*/
12313 ; /*clobber*/
12314 ; /*clobber*/
12315 if (NEBI (CPU (h_psr_esr), 0)) {
12316 {
12317 ; /*clobber*/
12318 ; /*clobber*/
12319 ; /*clobber*/
12320 ; /*clobber*/
12321 }
12322 }
12323 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12324 }
12325 }
12326
12327 abuf->written = written;
12328 return vpc;
12329 #undef FLD
12330 }
12331
12332 /* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12333
12334 static SEM_PC
12335 SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12336 {
12337 #define FLD(f) abuf->fields.sfmt_ftne.f
12338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12339 int UNUSED written = 0;
12340 IADDR UNUSED pc = abuf->addr;
12341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12342
12343 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)))) {
12344 {
12345 ; /*clobber*/
12346 ; /*clobber*/
12347 ; /*clobber*/
12348 ; /*clobber*/
12349 if (NEBI (CPU (h_psr_esr), 0)) {
12350 {
12351 ; /*clobber*/
12352 ; /*clobber*/
12353 ; /*clobber*/
12354 ; /*clobber*/
12355 }
12356 }
12357 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12358 }
12359 }
12360
12361 abuf->written = written;
12362 return vpc;
12363 #undef FLD
12364 }
12365
12366 /* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12367
12368 static SEM_PC
12369 SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12370 {
12371 #define FLD(f) abuf->fields.sfmt_ftne.f
12372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12373 int UNUSED written = 0;
12374 IADDR UNUSED pc = abuf->addr;
12375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12376
12377 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12378 {
12379 ; /*clobber*/
12380 ; /*clobber*/
12381 ; /*clobber*/
12382 ; /*clobber*/
12383 if (NEBI (CPU (h_psr_esr), 0)) {
12384 {
12385 ; /*clobber*/
12386 ; /*clobber*/
12387 ; /*clobber*/
12388 ; /*clobber*/
12389 }
12390 }
12391 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12392 }
12393 }
12394
12395 abuf->written = written;
12396 return vpc;
12397 #undef FLD
12398 }
12399
12400 /* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12401
12402 static SEM_PC
12403 SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12404 {
12405 #define FLD(f) abuf->fields.sfmt_ftne.f
12406 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12407 int UNUSED written = 0;
12408 IADDR UNUSED pc = abuf->addr;
12409 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12410
12411 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))))) {
12412 {
12413 ; /*clobber*/
12414 ; /*clobber*/
12415 ; /*clobber*/
12416 ; /*clobber*/
12417 if (NEBI (CPU (h_psr_esr), 0)) {
12418 {
12419 ; /*clobber*/
12420 ; /*clobber*/
12421 ; /*clobber*/
12422 ; /*clobber*/
12423 }
12424 }
12425 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12426 }
12427 }
12428
12429 abuf->written = written;
12430 return vpc;
12431 #undef FLD
12432 }
12433
12434 /* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12435
12436 static SEM_PC
12437 SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12438 {
12439 #define FLD(f) abuf->fields.sfmt_ftne.f
12440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12441 int UNUSED written = 0;
12442 IADDR UNUSED pc = abuf->addr;
12443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12444
12445 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12446 {
12447 ; /*clobber*/
12448 ; /*clobber*/
12449 ; /*clobber*/
12450 ; /*clobber*/
12451 if (NEBI (CPU (h_psr_esr), 0)) {
12452 {
12453 ; /*clobber*/
12454 ; /*clobber*/
12455 ; /*clobber*/
12456 ; /*clobber*/
12457 }
12458 }
12459 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12460 }
12461 }
12462
12463 abuf->written = written;
12464 return vpc;
12465 #undef FLD
12466 }
12467
12468 /* fto: fto$pack $FCCi_2,$GRi,$GRj */
12469
12470 static SEM_PC
12471 SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12472 {
12473 #define FLD(f) abuf->fields.sfmt_ftne.f
12474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12475 int UNUSED written = 0;
12476 IADDR UNUSED pc = abuf->addr;
12477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12478
12479 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))))) {
12480 {
12481 ; /*clobber*/
12482 ; /*clobber*/
12483 ; /*clobber*/
12484 ; /*clobber*/
12485 if (NEBI (CPU (h_psr_esr), 0)) {
12486 {
12487 ; /*clobber*/
12488 ; /*clobber*/
12489 ; /*clobber*/
12490 ; /*clobber*/
12491 }
12492 }
12493 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12494 }
12495 }
12496
12497 abuf->written = written;
12498 return vpc;
12499 #undef FLD
12500 }
12501
12502 /* tira: tira$pack $GRi,$s12 */
12503
12504 static SEM_PC
12505 SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12506 {
12507 #define FLD(f) abuf->fields.sfmt_ftine.f
12508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12509 int UNUSED written = 0;
12510 IADDR UNUSED pc = abuf->addr;
12511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12512
12513 {
12514 ; /*clobber*/
12515 ; /*clobber*/
12516 ; /*clobber*/
12517 ; /*clobber*/
12518 if (NEBI (CPU (h_psr_esr), 0)) {
12519 {
12520 ; /*clobber*/
12521 ; /*clobber*/
12522 ; /*clobber*/
12523 ; /*clobber*/
12524 }
12525 }
12526 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12527 }
12528
12529 abuf->written = written;
12530 return vpc;
12531 #undef FLD
12532 }
12533
12534 /* tino: tino$pack */
12535
12536 static SEM_PC
12537 SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12538 {
12539 #define FLD(f) abuf->fields.fmt_empty.f
12540 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12541 int UNUSED written = 0;
12542 IADDR UNUSED pc = abuf->addr;
12543 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12544
12545 ((void) 0); /*nop*/
12546
12547 return vpc;
12548 #undef FLD
12549 }
12550
12551 /* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12552
12553 static SEM_PC
12554 SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12555 {
12556 #define FLD(f) abuf->fields.sfmt_tieq.f
12557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12558 int UNUSED written = 0;
12559 IADDR UNUSED pc = abuf->addr;
12560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12561
12562 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12563 {
12564 ; /*clobber*/
12565 ; /*clobber*/
12566 ; /*clobber*/
12567 ; /*clobber*/
12568 if (NEBI (CPU (h_psr_esr), 0)) {
12569 {
12570 ; /*clobber*/
12571 ; /*clobber*/
12572 ; /*clobber*/
12573 ; /*clobber*/
12574 }
12575 }
12576 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12577 }
12578 }
12579
12580 abuf->written = written;
12581 return vpc;
12582 #undef FLD
12583 }
12584
12585 /* tine: tine$pack $ICCi_2,$GRi,$s12 */
12586
12587 static SEM_PC
12588 SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12589 {
12590 #define FLD(f) abuf->fields.sfmt_tieq.f
12591 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12592 int UNUSED written = 0;
12593 IADDR UNUSED pc = abuf->addr;
12594 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12595
12596 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12597 {
12598 ; /*clobber*/
12599 ; /*clobber*/
12600 ; /*clobber*/
12601 ; /*clobber*/
12602 if (NEBI (CPU (h_psr_esr), 0)) {
12603 {
12604 ; /*clobber*/
12605 ; /*clobber*/
12606 ; /*clobber*/
12607 ; /*clobber*/
12608 }
12609 }
12610 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12611 }
12612 }
12613
12614 abuf->written = written;
12615 return vpc;
12616 #undef FLD
12617 }
12618
12619 /* tile: tile$pack $ICCi_2,$GRi,$s12 */
12620
12621 static SEM_PC
12622 SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12623 {
12624 #define FLD(f) abuf->fields.sfmt_tieq.f
12625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12626 int UNUSED written = 0;
12627 IADDR UNUSED pc = abuf->addr;
12628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12629
12630 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))))) {
12631 {
12632 ; /*clobber*/
12633 ; /*clobber*/
12634 ; /*clobber*/
12635 ; /*clobber*/
12636 if (NEBI (CPU (h_psr_esr), 0)) {
12637 {
12638 ; /*clobber*/
12639 ; /*clobber*/
12640 ; /*clobber*/
12641 ; /*clobber*/
12642 }
12643 }
12644 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12645 }
12646 }
12647
12648 abuf->written = written;
12649 return vpc;
12650 #undef FLD
12651 }
12652
12653 /* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12654
12655 static SEM_PC
12656 SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12657 {
12658 #define FLD(f) abuf->fields.sfmt_tieq.f
12659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12660 int UNUSED written = 0;
12661 IADDR UNUSED pc = abuf->addr;
12662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12663
12664 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)))))) {
12665 {
12666 ; /*clobber*/
12667 ; /*clobber*/
12668 ; /*clobber*/
12669 ; /*clobber*/
12670 if (NEBI (CPU (h_psr_esr), 0)) {
12671 {
12672 ; /*clobber*/
12673 ; /*clobber*/
12674 ; /*clobber*/
12675 ; /*clobber*/
12676 }
12677 }
12678 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12679 }
12680 }
12681
12682 abuf->written = written;
12683 return vpc;
12684 #undef FLD
12685 }
12686
12687 /* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12688
12689 static SEM_PC
12690 SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12691 {
12692 #define FLD(f) abuf->fields.sfmt_tieq.f
12693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12694 int UNUSED written = 0;
12695 IADDR UNUSED pc = abuf->addr;
12696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12697
12698 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)))) {
12699 {
12700 ; /*clobber*/
12701 ; /*clobber*/
12702 ; /*clobber*/
12703 ; /*clobber*/
12704 if (NEBI (CPU (h_psr_esr), 0)) {
12705 {
12706 ; /*clobber*/
12707 ; /*clobber*/
12708 ; /*clobber*/
12709 ; /*clobber*/
12710 }
12711 }
12712 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12713 }
12714 }
12715
12716 abuf->written = written;
12717 return vpc;
12718 #undef FLD
12719 }
12720
12721 /* tige: tige$pack $ICCi_2,$GRi,$s12 */
12722
12723 static SEM_PC
12724 SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12725 {
12726 #define FLD(f) abuf->fields.sfmt_tieq.f
12727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12728 int UNUSED written = 0;
12729 IADDR UNUSED pc = abuf->addr;
12730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12731
12732 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))))) {
12733 {
12734 ; /*clobber*/
12735 ; /*clobber*/
12736 ; /*clobber*/
12737 ; /*clobber*/
12738 if (NEBI (CPU (h_psr_esr), 0)) {
12739 {
12740 ; /*clobber*/
12741 ; /*clobber*/
12742 ; /*clobber*/
12743 ; /*clobber*/
12744 }
12745 }
12746 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12747 }
12748 }
12749
12750 abuf->written = written;
12751 return vpc;
12752 #undef FLD
12753 }
12754
12755 /* tils: tils$pack $ICCi_2,$GRi,$s12 */
12756
12757 static SEM_PC
12758 SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12759 {
12760 #define FLD(f) abuf->fields.sfmt_tieq.f
12761 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12762 int UNUSED written = 0;
12763 IADDR UNUSED pc = abuf->addr;
12764 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12765
12766 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12767 {
12768 ; /*clobber*/
12769 ; /*clobber*/
12770 ; /*clobber*/
12771 ; /*clobber*/
12772 if (NEBI (CPU (h_psr_esr), 0)) {
12773 {
12774 ; /*clobber*/
12775 ; /*clobber*/
12776 ; /*clobber*/
12777 ; /*clobber*/
12778 }
12779 }
12780 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12781 }
12782 }
12783
12784 abuf->written = written;
12785 return vpc;
12786 #undef FLD
12787 }
12788
12789 /* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12790
12791 static SEM_PC
12792 SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12793 {
12794 #define FLD(f) abuf->fields.sfmt_tieq.f
12795 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12796 int UNUSED written = 0;
12797 IADDR UNUSED pc = abuf->addr;
12798 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12799
12800 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))))) {
12801 {
12802 ; /*clobber*/
12803 ; /*clobber*/
12804 ; /*clobber*/
12805 ; /*clobber*/
12806 if (NEBI (CPU (h_psr_esr), 0)) {
12807 {
12808 ; /*clobber*/
12809 ; /*clobber*/
12810 ; /*clobber*/
12811 ; /*clobber*/
12812 }
12813 }
12814 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12815 }
12816 }
12817
12818 abuf->written = written;
12819 return vpc;
12820 #undef FLD
12821 }
12822
12823 /* tic: tic$pack $ICCi_2,$GRi,$s12 */
12824
12825 static SEM_PC
12826 SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12827 {
12828 #define FLD(f) abuf->fields.sfmt_tieq.f
12829 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12830 int UNUSED written = 0;
12831 IADDR UNUSED pc = abuf->addr;
12832 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12833
12834 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12835 {
12836 ; /*clobber*/
12837 ; /*clobber*/
12838 ; /*clobber*/
12839 ; /*clobber*/
12840 if (NEBI (CPU (h_psr_esr), 0)) {
12841 {
12842 ; /*clobber*/
12843 ; /*clobber*/
12844 ; /*clobber*/
12845 ; /*clobber*/
12846 }
12847 }
12848 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12849 }
12850 }
12851
12852 abuf->written = written;
12853 return vpc;
12854 #undef FLD
12855 }
12856
12857 /* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12858
12859 static SEM_PC
12860 SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12861 {
12862 #define FLD(f) abuf->fields.sfmt_tieq.f
12863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12864 int UNUSED written = 0;
12865 IADDR UNUSED pc = abuf->addr;
12866 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12867
12868 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12869 {
12870 ; /*clobber*/
12871 ; /*clobber*/
12872 ; /*clobber*/
12873 ; /*clobber*/
12874 if (NEBI (CPU (h_psr_esr), 0)) {
12875 {
12876 ; /*clobber*/
12877 ; /*clobber*/
12878 ; /*clobber*/
12879 ; /*clobber*/
12880 }
12881 }
12882 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12883 }
12884 }
12885
12886 abuf->written = written;
12887 return vpc;
12888 #undef FLD
12889 }
12890
12891 /* tin: tin$pack $ICCi_2,$GRi,$s12 */
12892
12893 static SEM_PC
12894 SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12895 {
12896 #define FLD(f) abuf->fields.sfmt_tieq.f
12897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12898 int UNUSED written = 0;
12899 IADDR UNUSED pc = abuf->addr;
12900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12901
12902 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12903 {
12904 ; /*clobber*/
12905 ; /*clobber*/
12906 ; /*clobber*/
12907 ; /*clobber*/
12908 if (NEBI (CPU (h_psr_esr), 0)) {
12909 {
12910 ; /*clobber*/
12911 ; /*clobber*/
12912 ; /*clobber*/
12913 ; /*clobber*/
12914 }
12915 }
12916 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12917 }
12918 }
12919
12920 abuf->written = written;
12921 return vpc;
12922 #undef FLD
12923 }
12924
12925 /* tip: tip$pack $ICCi_2,$GRi,$s12 */
12926
12927 static SEM_PC
12928 SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12929 {
12930 #define FLD(f) abuf->fields.sfmt_tieq.f
12931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12932 int UNUSED written = 0;
12933 IADDR UNUSED pc = abuf->addr;
12934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12935
12936 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12937 {
12938 ; /*clobber*/
12939 ; /*clobber*/
12940 ; /*clobber*/
12941 ; /*clobber*/
12942 if (NEBI (CPU (h_psr_esr), 0)) {
12943 {
12944 ; /*clobber*/
12945 ; /*clobber*/
12946 ; /*clobber*/
12947 ; /*clobber*/
12948 }
12949 }
12950 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12951 }
12952 }
12953
12954 abuf->written = written;
12955 return vpc;
12956 #undef FLD
12957 }
12958
12959 /* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
12960
12961 static SEM_PC
12962 SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12963 {
12964 #define FLD(f) abuf->fields.sfmt_tieq.f
12965 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12966 int UNUSED written = 0;
12967 IADDR UNUSED pc = abuf->addr;
12968 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12969
12970 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12971 {
12972 ; /*clobber*/
12973 ; /*clobber*/
12974 ; /*clobber*/
12975 ; /*clobber*/
12976 if (NEBI (CPU (h_psr_esr), 0)) {
12977 {
12978 ; /*clobber*/
12979 ; /*clobber*/
12980 ; /*clobber*/
12981 ; /*clobber*/
12982 }
12983 }
12984 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12985 }
12986 }
12987
12988 abuf->written = written;
12989 return vpc;
12990 #undef FLD
12991 }
12992
12993 /* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
12994
12995 static SEM_PC
12996 SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12997 {
12998 #define FLD(f) abuf->fields.sfmt_tieq.f
12999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13000 int UNUSED written = 0;
13001 IADDR UNUSED pc = abuf->addr;
13002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13003
13004 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13005 {
13006 ; /*clobber*/
13007 ; /*clobber*/
13008 ; /*clobber*/
13009 ; /*clobber*/
13010 if (NEBI (CPU (h_psr_esr), 0)) {
13011 {
13012 ; /*clobber*/
13013 ; /*clobber*/
13014 ; /*clobber*/
13015 ; /*clobber*/
13016 }
13017 }
13018 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13019 }
13020 }
13021
13022 abuf->written = written;
13023 return vpc;
13024 #undef FLD
13025 }
13026
13027 /* ftira: ftira$pack $GRi,$s12 */
13028
13029 static SEM_PC
13030 SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13031 {
13032 #define FLD(f) abuf->fields.sfmt_ftine.f
13033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13034 int UNUSED written = 0;
13035 IADDR UNUSED pc = abuf->addr;
13036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13037
13038 {
13039 ; /*clobber*/
13040 ; /*clobber*/
13041 ; /*clobber*/
13042 ; /*clobber*/
13043 if (NEBI (CPU (h_psr_esr), 0)) {
13044 {
13045 ; /*clobber*/
13046 ; /*clobber*/
13047 ; /*clobber*/
13048 ; /*clobber*/
13049 }
13050 }
13051 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13052 }
13053
13054 abuf->written = written;
13055 return vpc;
13056 #undef FLD
13057 }
13058
13059 /* ftino: ftino$pack */
13060
13061 static SEM_PC
13062 SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13063 {
13064 #define FLD(f) abuf->fields.fmt_empty.f
13065 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13066 int UNUSED written = 0;
13067 IADDR UNUSED pc = abuf->addr;
13068 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13069
13070 ((void) 0); /*nop*/
13071
13072 return vpc;
13073 #undef FLD
13074 }
13075
13076 /* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13077
13078 static SEM_PC
13079 SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13080 {
13081 #define FLD(f) abuf->fields.sfmt_ftine.f
13082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13083 int UNUSED written = 0;
13084 IADDR UNUSED pc = abuf->addr;
13085 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13086
13087 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))))) {
13088 {
13089 ; /*clobber*/
13090 ; /*clobber*/
13091 ; /*clobber*/
13092 ; /*clobber*/
13093 if (NEBI (CPU (h_psr_esr), 0)) {
13094 {
13095 ; /*clobber*/
13096 ; /*clobber*/
13097 ; /*clobber*/
13098 ; /*clobber*/
13099 }
13100 }
13101 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13102 }
13103 }
13104
13105 abuf->written = written;
13106 return vpc;
13107 #undef FLD
13108 }
13109
13110 /* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13111
13112 static SEM_PC
13113 SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13114 {
13115 #define FLD(f) abuf->fields.sfmt_ftine.f
13116 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13117 int UNUSED written = 0;
13118 IADDR UNUSED pc = abuf->addr;
13119 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13120
13121 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13122 {
13123 ; /*clobber*/
13124 ; /*clobber*/
13125 ; /*clobber*/
13126 ; /*clobber*/
13127 if (NEBI (CPU (h_psr_esr), 0)) {
13128 {
13129 ; /*clobber*/
13130 ; /*clobber*/
13131 ; /*clobber*/
13132 ; /*clobber*/
13133 }
13134 }
13135 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13136 }
13137 }
13138
13139 abuf->written = written;
13140 return vpc;
13141 #undef FLD
13142 }
13143
13144 /* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13145
13146 static SEM_PC
13147 SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13148 {
13149 #define FLD(f) abuf->fields.sfmt_ftine.f
13150 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13151 int UNUSED written = 0;
13152 IADDR UNUSED pc = abuf->addr;
13153 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13154
13155 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)))) {
13156 {
13157 ; /*clobber*/
13158 ; /*clobber*/
13159 ; /*clobber*/
13160 ; /*clobber*/
13161 if (NEBI (CPU (h_psr_esr), 0)) {
13162 {
13163 ; /*clobber*/
13164 ; /*clobber*/
13165 ; /*clobber*/
13166 ; /*clobber*/
13167 }
13168 }
13169 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13170 }
13171 }
13172
13173 abuf->written = written;
13174 return vpc;
13175 #undef FLD
13176 }
13177
13178 /* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13179
13180 static SEM_PC
13181 SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13182 {
13183 #define FLD(f) abuf->fields.sfmt_ftine.f
13184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13185 int UNUSED written = 0;
13186 IADDR UNUSED pc = abuf->addr;
13187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13188
13189 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13190 {
13191 ; /*clobber*/
13192 ; /*clobber*/
13193 ; /*clobber*/
13194 ; /*clobber*/
13195 if (NEBI (CPU (h_psr_esr), 0)) {
13196 {
13197 ; /*clobber*/
13198 ; /*clobber*/
13199 ; /*clobber*/
13200 ; /*clobber*/
13201 }
13202 }
13203 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13204 }
13205 }
13206
13207 abuf->written = written;
13208 return vpc;
13209 #undef FLD
13210 }
13211
13212 /* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13213
13214 static SEM_PC
13215 SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13216 {
13217 #define FLD(f) abuf->fields.sfmt_ftine.f
13218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13219 int UNUSED written = 0;
13220 IADDR UNUSED pc = abuf->addr;
13221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13222
13223 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13224 {
13225 ; /*clobber*/
13226 ; /*clobber*/
13227 ; /*clobber*/
13228 ; /*clobber*/
13229 if (NEBI (CPU (h_psr_esr), 0)) {
13230 {
13231 ; /*clobber*/
13232 ; /*clobber*/
13233 ; /*clobber*/
13234 ; /*clobber*/
13235 }
13236 }
13237 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13238 }
13239 }
13240
13241 abuf->written = written;
13242 return vpc;
13243 #undef FLD
13244 }
13245
13246 /* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13247
13248 static SEM_PC
13249 SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13250 {
13251 #define FLD(f) abuf->fields.sfmt_ftine.f
13252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13253 int UNUSED written = 0;
13254 IADDR UNUSED pc = abuf->addr;
13255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13256
13257 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)))) {
13258 {
13259 ; /*clobber*/
13260 ; /*clobber*/
13261 ; /*clobber*/
13262 ; /*clobber*/
13263 if (NEBI (CPU (h_psr_esr), 0)) {
13264 {
13265 ; /*clobber*/
13266 ; /*clobber*/
13267 ; /*clobber*/
13268 ; /*clobber*/
13269 }
13270 }
13271 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13272 }
13273 }
13274
13275 abuf->written = written;
13276 return vpc;
13277 #undef FLD
13278 }
13279
13280 /* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13281
13282 static SEM_PC
13283 SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13284 {
13285 #define FLD(f) abuf->fields.sfmt_ftine.f
13286 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13287 int UNUSED written = 0;
13288 IADDR UNUSED pc = abuf->addr;
13289 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13290
13291 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13292 {
13293 ; /*clobber*/
13294 ; /*clobber*/
13295 ; /*clobber*/
13296 ; /*clobber*/
13297 if (NEBI (CPU (h_psr_esr), 0)) {
13298 {
13299 ; /*clobber*/
13300 ; /*clobber*/
13301 ; /*clobber*/
13302 ; /*clobber*/
13303 }
13304 }
13305 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13306 }
13307 }
13308
13309 abuf->written = written;
13310 return vpc;
13311 #undef FLD
13312 }
13313
13314 /* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13315
13316 static SEM_PC
13317 SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13318 {
13319 #define FLD(f) abuf->fields.sfmt_ftine.f
13320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13321 int UNUSED written = 0;
13322 IADDR UNUSED pc = abuf->addr;
13323 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13324
13325 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))))) {
13326 {
13327 ; /*clobber*/
13328 ; /*clobber*/
13329 ; /*clobber*/
13330 ; /*clobber*/
13331 if (NEBI (CPU (h_psr_esr), 0)) {
13332 {
13333 ; /*clobber*/
13334 ; /*clobber*/
13335 ; /*clobber*/
13336 ; /*clobber*/
13337 }
13338 }
13339 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13340 }
13341 }
13342
13343 abuf->written = written;
13344 return vpc;
13345 #undef FLD
13346 }
13347
13348 /* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13349
13350 static SEM_PC
13351 SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13352 {
13353 #define FLD(f) abuf->fields.sfmt_ftine.f
13354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13355 int UNUSED written = 0;
13356 IADDR UNUSED pc = abuf->addr;
13357 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13358
13359 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13360 {
13361 ; /*clobber*/
13362 ; /*clobber*/
13363 ; /*clobber*/
13364 ; /*clobber*/
13365 if (NEBI (CPU (h_psr_esr), 0)) {
13366 {
13367 ; /*clobber*/
13368 ; /*clobber*/
13369 ; /*clobber*/
13370 ; /*clobber*/
13371 }
13372 }
13373 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13374 }
13375 }
13376
13377 abuf->written = written;
13378 return vpc;
13379 #undef FLD
13380 }
13381
13382 /* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13383
13384 static SEM_PC
13385 SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13386 {
13387 #define FLD(f) abuf->fields.sfmt_ftine.f
13388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13389 int UNUSED written = 0;
13390 IADDR UNUSED pc = abuf->addr;
13391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13392
13393 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)))) {
13394 {
13395 ; /*clobber*/
13396 ; /*clobber*/
13397 ; /*clobber*/
13398 ; /*clobber*/
13399 if (NEBI (CPU (h_psr_esr), 0)) {
13400 {
13401 ; /*clobber*/
13402 ; /*clobber*/
13403 ; /*clobber*/
13404 ; /*clobber*/
13405 }
13406 }
13407 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13408 }
13409 }
13410
13411 abuf->written = written;
13412 return vpc;
13413 #undef FLD
13414 }
13415
13416 /* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13417
13418 static SEM_PC
13419 SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13420 {
13421 #define FLD(f) abuf->fields.sfmt_ftine.f
13422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13423 int UNUSED written = 0;
13424 IADDR UNUSED pc = abuf->addr;
13425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13426
13427 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13428 {
13429 ; /*clobber*/
13430 ; /*clobber*/
13431 ; /*clobber*/
13432 ; /*clobber*/
13433 if (NEBI (CPU (h_psr_esr), 0)) {
13434 {
13435 ; /*clobber*/
13436 ; /*clobber*/
13437 ; /*clobber*/
13438 ; /*clobber*/
13439 }
13440 }
13441 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13442 }
13443 }
13444
13445 abuf->written = written;
13446 return vpc;
13447 #undef FLD
13448 }
13449
13450 /* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13451
13452 static SEM_PC
13453 SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13454 {
13455 #define FLD(f) abuf->fields.sfmt_ftine.f
13456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13457 int UNUSED written = 0;
13458 IADDR UNUSED pc = abuf->addr;
13459 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13460
13461 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))))) {
13462 {
13463 ; /*clobber*/
13464 ; /*clobber*/
13465 ; /*clobber*/
13466 ; /*clobber*/
13467 if (NEBI (CPU (h_psr_esr), 0)) {
13468 {
13469 ; /*clobber*/
13470 ; /*clobber*/
13471 ; /*clobber*/
13472 ; /*clobber*/
13473 }
13474 }
13475 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13476 }
13477 }
13478
13479 abuf->written = written;
13480 return vpc;
13481 #undef FLD
13482 }
13483
13484 /* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13485
13486 static SEM_PC
13487 SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13488 {
13489 #define FLD(f) abuf->fields.sfmt_ftine.f
13490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13491 int UNUSED written = 0;
13492 IADDR UNUSED pc = abuf->addr;
13493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13494
13495 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13496 {
13497 ; /*clobber*/
13498 ; /*clobber*/
13499 ; /*clobber*/
13500 ; /*clobber*/
13501 if (NEBI (CPU (h_psr_esr), 0)) {
13502 {
13503 ; /*clobber*/
13504 ; /*clobber*/
13505 ; /*clobber*/
13506 ; /*clobber*/
13507 }
13508 }
13509 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13510 }
13511 }
13512
13513 abuf->written = written;
13514 return vpc;
13515 #undef FLD
13516 }
13517
13518 /* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13519
13520 static SEM_PC
13521 SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13522 {
13523 #define FLD(f) abuf->fields.sfmt_ftine.f
13524 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13525 int UNUSED written = 0;
13526 IADDR UNUSED pc = abuf->addr;
13527 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13528
13529 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))))) {
13530 {
13531 ; /*clobber*/
13532 ; /*clobber*/
13533 ; /*clobber*/
13534 ; /*clobber*/
13535 if (NEBI (CPU (h_psr_esr), 0)) {
13536 {
13537 ; /*clobber*/
13538 ; /*clobber*/
13539 ; /*clobber*/
13540 ; /*clobber*/
13541 }
13542 }
13543 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13544 }
13545 }
13546
13547 abuf->written = written;
13548 return vpc;
13549 #undef FLD
13550 }
13551
13552 /* break: break$pack */
13553
13554 static SEM_PC
13555 SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13556 {
13557 #define FLD(f) abuf->fields.sfmt_break.f
13558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13559 int UNUSED written = 0;
13560 IADDR UNUSED pc = abuf->addr;
13561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13562
13563 {
13564 ; /*clobber*/
13565 ; /*clobber*/
13566 ; /*clobber*/
13567 ; /*clobber*/
13568 ; /*clobber*/
13569 ; /*clobber*/
13570 frv_break (current_cpu);
13571 }
13572
13573 return vpc;
13574 #undef FLD
13575 }
13576
13577 /* mtrap: mtrap$pack */
13578
13579 static SEM_PC
13580 SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13581 {
13582 #define FLD(f) abuf->fields.fmt_empty.f
13583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13584 int UNUSED written = 0;
13585 IADDR UNUSED pc = abuf->addr;
13586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13587
13588 frv_mtrap (current_cpu);
13589
13590 return vpc;
13591 #undef FLD
13592 }
13593
13594 /* andcr: andcr$pack $CRi,$CRj,$CRk */
13595
13596 static SEM_PC
13597 SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13598 {
13599 #define FLD(f) abuf->fields.sfmt_andcr.f
13600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13601 int UNUSED written = 0;
13602 IADDR UNUSED pc = abuf->addr;
13603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13604
13605 {
13606 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13607 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13608 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13609 }
13610
13611 return vpc;
13612 #undef FLD
13613 }
13614
13615 /* orcr: orcr$pack $CRi,$CRj,$CRk */
13616
13617 static SEM_PC
13618 SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13619 {
13620 #define FLD(f) abuf->fields.sfmt_andcr.f
13621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13622 int UNUSED written = 0;
13623 IADDR UNUSED pc = abuf->addr;
13624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13625
13626 {
13627 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13628 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13629 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13630 }
13631
13632 return vpc;
13633 #undef FLD
13634 }
13635
13636 /* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13637
13638 static SEM_PC
13639 SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13640 {
13641 #define FLD(f) abuf->fields.sfmt_andcr.f
13642 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13643 int UNUSED written = 0;
13644 IADDR UNUSED pc = abuf->addr;
13645 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13646
13647 {
13648 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13649 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13650 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13651 }
13652
13653 return vpc;
13654 #undef FLD
13655 }
13656
13657 /* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13658
13659 static SEM_PC
13660 SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13661 {
13662 #define FLD(f) abuf->fields.sfmt_andcr.f
13663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13664 int UNUSED written = 0;
13665 IADDR UNUSED pc = abuf->addr;
13666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13667
13668 {
13669 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13670 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13671 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13672 }
13673
13674 return vpc;
13675 #undef FLD
13676 }
13677
13678 /* norcr: norcr$pack $CRi,$CRj,$CRk */
13679
13680 static SEM_PC
13681 SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13682 {
13683 #define FLD(f) abuf->fields.sfmt_andcr.f
13684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13685 int UNUSED written = 0;
13686 IADDR UNUSED pc = abuf->addr;
13687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13688
13689 {
13690 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13691 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13692 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13693 }
13694
13695 return vpc;
13696 #undef FLD
13697 }
13698
13699 /* andncr: andncr$pack $CRi,$CRj,$CRk */
13700
13701 static SEM_PC
13702 SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13703 {
13704 #define FLD(f) abuf->fields.sfmt_andcr.f
13705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13706 int UNUSED written = 0;
13707 IADDR UNUSED pc = abuf->addr;
13708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13709
13710 {
13711 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13712 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13713 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13714 }
13715
13716 return vpc;
13717 #undef FLD
13718 }
13719
13720 /* orncr: orncr$pack $CRi,$CRj,$CRk */
13721
13722 static SEM_PC
13723 SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13724 {
13725 #define FLD(f) abuf->fields.sfmt_andcr.f
13726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13727 int UNUSED written = 0;
13728 IADDR UNUSED pc = abuf->addr;
13729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13730
13731 {
13732 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13733 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13734 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13735 }
13736
13737 return vpc;
13738 #undef FLD
13739 }
13740
13741 /* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13742
13743 static SEM_PC
13744 SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13745 {
13746 #define FLD(f) abuf->fields.sfmt_andcr.f
13747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13748 int UNUSED written = 0;
13749 IADDR UNUSED pc = abuf->addr;
13750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13751
13752 {
13753 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13754 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13755 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13756 }
13757
13758 return vpc;
13759 #undef FLD
13760 }
13761
13762 /* norncr: norncr$pack $CRi,$CRj,$CRk */
13763
13764 static SEM_PC
13765 SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13766 {
13767 #define FLD(f) abuf->fields.sfmt_andcr.f
13768 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13769 int UNUSED written = 0;
13770 IADDR UNUSED pc = abuf->addr;
13771 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13772
13773 {
13774 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13775 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13776 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13777 }
13778
13779 return vpc;
13780 #undef FLD
13781 }
13782
13783 /* notcr: notcr$pack $CRj,$CRk */
13784
13785 static SEM_PC
13786 SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13787 {
13788 #define FLD(f) abuf->fields.sfmt_andcr.f
13789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13790 int UNUSED written = 0;
13791 IADDR UNUSED pc = abuf->addr;
13792 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13793
13794 {
13795 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13796 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13797 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13798 }
13799
13800 return vpc;
13801 #undef FLD
13802 }
13803
13804 /* ckra: ckra$pack $CRj_int */
13805
13806 static SEM_PC
13807 SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13808 {
13809 #define FLD(f) abuf->fields.sfmt_cckeq.f
13810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13811 int UNUSED written = 0;
13812 IADDR UNUSED pc = abuf->addr;
13813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13814
13815 {
13816 UQI opval = 3;
13817 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13818 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13819 }
13820
13821 return vpc;
13822 #undef FLD
13823 }
13824
13825 /* ckno: ckno$pack $CRj_int */
13826
13827 static SEM_PC
13828 SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13829 {
13830 #define FLD(f) abuf->fields.sfmt_cckeq.f
13831 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13832 int UNUSED written = 0;
13833 IADDR UNUSED pc = abuf->addr;
13834 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13835
13836 {
13837 UQI opval = 2;
13838 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13839 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13840 }
13841
13842 return vpc;
13843 #undef FLD
13844 }
13845
13846 /* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13847
13848 static SEM_PC
13849 SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13850 {
13851 #define FLD(f) abuf->fields.sfmt_cckeq.f
13852 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13853 int UNUSED written = 0;
13854 IADDR UNUSED pc = abuf->addr;
13855 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13856
13857 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13858 {
13859 UQI opval = 3;
13860 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13861 written |= (1 << 1);
13862 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13863 }
13864 } else {
13865 {
13866 UQI opval = 2;
13867 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13868 written |= (1 << 1);
13869 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13870 }
13871 }
13872
13873 abuf->written = written;
13874 return vpc;
13875 #undef FLD
13876 }
13877
13878 /* ckne: ckne$pack $ICCi_3,$CRj_int */
13879
13880 static SEM_PC
13881 SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13882 {
13883 #define FLD(f) abuf->fields.sfmt_cckeq.f
13884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13885 int UNUSED written = 0;
13886 IADDR UNUSED pc = abuf->addr;
13887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13888
13889 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13890 {
13891 UQI opval = 3;
13892 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13893 written |= (1 << 1);
13894 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13895 }
13896 } else {
13897 {
13898 UQI opval = 2;
13899 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13900 written |= (1 << 1);
13901 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13902 }
13903 }
13904
13905 abuf->written = written;
13906 return vpc;
13907 #undef FLD
13908 }
13909
13910 /* ckle: ckle$pack $ICCi_3,$CRj_int */
13911
13912 static SEM_PC
13913 SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13914 {
13915 #define FLD(f) abuf->fields.sfmt_cckeq.f
13916 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13917 int UNUSED written = 0;
13918 IADDR UNUSED pc = abuf->addr;
13919 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13920
13921 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))))) {
13922 {
13923 UQI opval = 3;
13924 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13925 written |= (1 << 1);
13926 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13927 }
13928 } else {
13929 {
13930 UQI opval = 2;
13931 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13932 written |= (1 << 1);
13933 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13934 }
13935 }
13936
13937 abuf->written = written;
13938 return vpc;
13939 #undef FLD
13940 }
13941
13942 /* ckgt: ckgt$pack $ICCi_3,$CRj_int */
13943
13944 static SEM_PC
13945 SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13946 {
13947 #define FLD(f) abuf->fields.sfmt_cckeq.f
13948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13949 int UNUSED written = 0;
13950 IADDR UNUSED pc = abuf->addr;
13951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13952
13953 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)))))) {
13954 {
13955 UQI opval = 3;
13956 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13957 written |= (1 << 1);
13958 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13959 }
13960 } else {
13961 {
13962 UQI opval = 2;
13963 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13964 written |= (1 << 1);
13965 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13966 }
13967 }
13968
13969 abuf->written = written;
13970 return vpc;
13971 #undef FLD
13972 }
13973
13974 /* cklt: cklt$pack $ICCi_3,$CRj_int */
13975
13976 static SEM_PC
13977 SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13978 {
13979 #define FLD(f) abuf->fields.sfmt_cckeq.f
13980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13981 int UNUSED written = 0;
13982 IADDR UNUSED pc = abuf->addr;
13983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13984
13985 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)))) {
13986 {
13987 UQI opval = 3;
13988 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13989 written |= (1 << 1);
13990 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13991 }
13992 } else {
13993 {
13994 UQI opval = 2;
13995 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13996 written |= (1 << 1);
13997 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13998 }
13999 }
14000
14001 abuf->written = written;
14002 return vpc;
14003 #undef FLD
14004 }
14005
14006 /* ckge: ckge$pack $ICCi_3,$CRj_int */
14007
14008 static SEM_PC
14009 SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14010 {
14011 #define FLD(f) abuf->fields.sfmt_cckeq.f
14012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14013 int UNUSED written = 0;
14014 IADDR UNUSED pc = abuf->addr;
14015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14016
14017 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))))) {
14018 {
14019 UQI opval = 3;
14020 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14021 written |= (1 << 1);
14022 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14023 }
14024 } else {
14025 {
14026 UQI opval = 2;
14027 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14028 written |= (1 << 1);
14029 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14030 }
14031 }
14032
14033 abuf->written = written;
14034 return vpc;
14035 #undef FLD
14036 }
14037
14038 /* ckls: ckls$pack $ICCi_3,$CRj_int */
14039
14040 static SEM_PC
14041 SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14042 {
14043 #define FLD(f) abuf->fields.sfmt_cckeq.f
14044 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14045 int UNUSED written = 0;
14046 IADDR UNUSED pc = abuf->addr;
14047 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14048
14049 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14050 {
14051 UQI opval = 3;
14052 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14053 written |= (1 << 1);
14054 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14055 }
14056 } else {
14057 {
14058 UQI opval = 2;
14059 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14060 written |= (1 << 1);
14061 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14062 }
14063 }
14064
14065 abuf->written = written;
14066 return vpc;
14067 #undef FLD
14068 }
14069
14070 /* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14071
14072 static SEM_PC
14073 SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14074 {
14075 #define FLD(f) abuf->fields.sfmt_cckeq.f
14076 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14077 int UNUSED written = 0;
14078 IADDR UNUSED pc = abuf->addr;
14079 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14080
14081 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))))) {
14082 {
14083 UQI opval = 3;
14084 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14085 written |= (1 << 1);
14086 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14087 }
14088 } else {
14089 {
14090 UQI opval = 2;
14091 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14092 written |= (1 << 1);
14093 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14094 }
14095 }
14096
14097 abuf->written = written;
14098 return vpc;
14099 #undef FLD
14100 }
14101
14102 /* ckc: ckc$pack $ICCi_3,$CRj_int */
14103
14104 static SEM_PC
14105 SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14106 {
14107 #define FLD(f) abuf->fields.sfmt_cckeq.f
14108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14109 int UNUSED written = 0;
14110 IADDR UNUSED pc = abuf->addr;
14111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14112
14113 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14114 {
14115 UQI opval = 3;
14116 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14117 written |= (1 << 1);
14118 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14119 }
14120 } else {
14121 {
14122 UQI opval = 2;
14123 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14124 written |= (1 << 1);
14125 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14126 }
14127 }
14128
14129 abuf->written = written;
14130 return vpc;
14131 #undef FLD
14132 }
14133
14134 /* cknc: cknc$pack $ICCi_3,$CRj_int */
14135
14136 static SEM_PC
14137 SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14138 {
14139 #define FLD(f) abuf->fields.sfmt_cckeq.f
14140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14141 int UNUSED written = 0;
14142 IADDR UNUSED pc = abuf->addr;
14143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14144
14145 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14146 {
14147 UQI opval = 3;
14148 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14149 written |= (1 << 1);
14150 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14151 }
14152 } else {
14153 {
14154 UQI opval = 2;
14155 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14156 written |= (1 << 1);
14157 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14158 }
14159 }
14160
14161 abuf->written = written;
14162 return vpc;
14163 #undef FLD
14164 }
14165
14166 /* ckn: ckn$pack $ICCi_3,$CRj_int */
14167
14168 static SEM_PC
14169 SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14170 {
14171 #define FLD(f) abuf->fields.sfmt_cckeq.f
14172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14173 int UNUSED written = 0;
14174 IADDR UNUSED pc = abuf->addr;
14175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14176
14177 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14178 {
14179 UQI opval = 3;
14180 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14181 written |= (1 << 1);
14182 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14183 }
14184 } else {
14185 {
14186 UQI opval = 2;
14187 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14188 written |= (1 << 1);
14189 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14190 }
14191 }
14192
14193 abuf->written = written;
14194 return vpc;
14195 #undef FLD
14196 }
14197
14198 /* ckp: ckp$pack $ICCi_3,$CRj_int */
14199
14200 static SEM_PC
14201 SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14202 {
14203 #define FLD(f) abuf->fields.sfmt_cckeq.f
14204 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14205 int UNUSED written = 0;
14206 IADDR UNUSED pc = abuf->addr;
14207 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14208
14209 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14210 {
14211 UQI opval = 3;
14212 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14213 written |= (1 << 1);
14214 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14215 }
14216 } else {
14217 {
14218 UQI opval = 2;
14219 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14220 written |= (1 << 1);
14221 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14222 }
14223 }
14224
14225 abuf->written = written;
14226 return vpc;
14227 #undef FLD
14228 }
14229
14230 /* ckv: ckv$pack $ICCi_3,$CRj_int */
14231
14232 static SEM_PC
14233 SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14234 {
14235 #define FLD(f) abuf->fields.sfmt_cckeq.f
14236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14237 int UNUSED written = 0;
14238 IADDR UNUSED pc = abuf->addr;
14239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14240
14241 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14242 {
14243 UQI opval = 3;
14244 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14245 written |= (1 << 1);
14246 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14247 }
14248 } else {
14249 {
14250 UQI opval = 2;
14251 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14252 written |= (1 << 1);
14253 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14254 }
14255 }
14256
14257 abuf->written = written;
14258 return vpc;
14259 #undef FLD
14260 }
14261
14262 /* cknv: cknv$pack $ICCi_3,$CRj_int */
14263
14264 static SEM_PC
14265 SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14266 {
14267 #define FLD(f) abuf->fields.sfmt_cckeq.f
14268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14269 int UNUSED written = 0;
14270 IADDR UNUSED pc = abuf->addr;
14271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14272
14273 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14274 {
14275 UQI opval = 3;
14276 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14277 written |= (1 << 1);
14278 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14279 }
14280 } else {
14281 {
14282 UQI opval = 2;
14283 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14284 written |= (1 << 1);
14285 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14286 }
14287 }
14288
14289 abuf->written = written;
14290 return vpc;
14291 #undef FLD
14292 }
14293
14294 /* fckra: fckra$pack $CRj_float */
14295
14296 static SEM_PC
14297 SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14298 {
14299 #define FLD(f) abuf->fields.sfmt_cfckne.f
14300 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14301 int UNUSED written = 0;
14302 IADDR UNUSED pc = abuf->addr;
14303 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14304
14305 {
14306 UQI opval = 3;
14307 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14308 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14309 }
14310
14311 return vpc;
14312 #undef FLD
14313 }
14314
14315 /* fckno: fckno$pack $CRj_float */
14316
14317 static SEM_PC
14318 SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14319 {
14320 #define FLD(f) abuf->fields.sfmt_cfckne.f
14321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14322 int UNUSED written = 0;
14323 IADDR UNUSED pc = abuf->addr;
14324 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14325
14326 {
14327 UQI opval = 2;
14328 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14329 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14330 }
14331
14332 return vpc;
14333 #undef FLD
14334 }
14335
14336 /* fckne: fckne$pack $FCCi_3,$CRj_float */
14337
14338 static SEM_PC
14339 SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14340 {
14341 #define FLD(f) abuf->fields.sfmt_cfckne.f
14342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14343 int UNUSED written = 0;
14344 IADDR UNUSED pc = abuf->addr;
14345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14346
14347 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))))) {
14348 {
14349 UQI opval = 3;
14350 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14351 written |= (1 << 1);
14352 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14353 }
14354 } else {
14355 {
14356 UQI opval = 2;
14357 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14358 written |= (1 << 1);
14359 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14360 }
14361 }
14362
14363 abuf->written = written;
14364 return vpc;
14365 #undef FLD
14366 }
14367
14368 /* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14369
14370 static SEM_PC
14371 SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14372 {
14373 #define FLD(f) abuf->fields.sfmt_cfckne.f
14374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14375 int UNUSED written = 0;
14376 IADDR UNUSED pc = abuf->addr;
14377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14378
14379 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14380 {
14381 UQI opval = 3;
14382 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14383 written |= (1 << 1);
14384 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14385 }
14386 } else {
14387 {
14388 UQI opval = 2;
14389 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14390 written |= (1 << 1);
14391 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14392 }
14393 }
14394
14395 abuf->written = written;
14396 return vpc;
14397 #undef FLD
14398 }
14399
14400 /* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14401
14402 static SEM_PC
14403 SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14404 {
14405 #define FLD(f) abuf->fields.sfmt_cfckne.f
14406 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14407 int UNUSED written = 0;
14408 IADDR UNUSED pc = abuf->addr;
14409 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14410
14411 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)))) {
14412 {
14413 UQI opval = 3;
14414 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14415 written |= (1 << 1);
14416 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14417 }
14418 } else {
14419 {
14420 UQI opval = 2;
14421 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14422 written |= (1 << 1);
14423 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14424 }
14425 }
14426
14427 abuf->written = written;
14428 return vpc;
14429 #undef FLD
14430 }
14431
14432 /* fckue: fckue$pack $FCCi_3,$CRj_float */
14433
14434 static SEM_PC
14435 SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14436 {
14437 #define FLD(f) abuf->fields.sfmt_cfckne.f
14438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14439 int UNUSED written = 0;
14440 IADDR UNUSED pc = abuf->addr;
14441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14442
14443 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14444 {
14445 UQI opval = 3;
14446 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14447 written |= (1 << 1);
14448 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14449 }
14450 } else {
14451 {
14452 UQI opval = 2;
14453 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14454 written |= (1 << 1);
14455 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14456 }
14457 }
14458
14459 abuf->written = written;
14460 return vpc;
14461 #undef FLD
14462 }
14463
14464 /* fckul: fckul$pack $FCCi_3,$CRj_float */
14465
14466 static SEM_PC
14467 SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14468 {
14469 #define FLD(f) abuf->fields.sfmt_cfckne.f
14470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14471 int UNUSED written = 0;
14472 IADDR UNUSED pc = abuf->addr;
14473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14474
14475 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14476 {
14477 UQI opval = 3;
14478 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14479 written |= (1 << 1);
14480 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14481 }
14482 } else {
14483 {
14484 UQI opval = 2;
14485 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14486 written |= (1 << 1);
14487 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14488 }
14489 }
14490
14491 abuf->written = written;
14492 return vpc;
14493 #undef FLD
14494 }
14495
14496 /* fckge: fckge$pack $FCCi_3,$CRj_float */
14497
14498 static SEM_PC
14499 SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14500 {
14501 #define FLD(f) abuf->fields.sfmt_cfckne.f
14502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14503 int UNUSED written = 0;
14504 IADDR UNUSED pc = abuf->addr;
14505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14506
14507 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)))) {
14508 {
14509 UQI opval = 3;
14510 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14511 written |= (1 << 1);
14512 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14513 }
14514 } else {
14515 {
14516 UQI opval = 2;
14517 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14518 written |= (1 << 1);
14519 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14520 }
14521 }
14522
14523 abuf->written = written;
14524 return vpc;
14525 #undef FLD
14526 }
14527
14528 /* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14529
14530 static SEM_PC
14531 SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14532 {
14533 #define FLD(f) abuf->fields.sfmt_cfckne.f
14534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14535 int UNUSED written = 0;
14536 IADDR UNUSED pc = abuf->addr;
14537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14538
14539 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14540 {
14541 UQI opval = 3;
14542 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14543 written |= (1 << 1);
14544 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14545 }
14546 } else {
14547 {
14548 UQI opval = 2;
14549 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14550 written |= (1 << 1);
14551 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14552 }
14553 }
14554
14555 abuf->written = written;
14556 return vpc;
14557 #undef FLD
14558 }
14559
14560 /* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14561
14562 static SEM_PC
14563 SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14564 {
14565 #define FLD(f) abuf->fields.sfmt_cfckne.f
14566 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14567 int UNUSED written = 0;
14568 IADDR UNUSED pc = abuf->addr;
14569 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14570
14571 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))))) {
14572 {
14573 UQI opval = 3;
14574 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14575 written |= (1 << 1);
14576 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14577 }
14578 } else {
14579 {
14580 UQI opval = 2;
14581 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14582 written |= (1 << 1);
14583 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14584 }
14585 }
14586
14587 abuf->written = written;
14588 return vpc;
14589 #undef FLD
14590 }
14591
14592 /* fckug: fckug$pack $FCCi_3,$CRj_float */
14593
14594 static SEM_PC
14595 SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14596 {
14597 #define FLD(f) abuf->fields.sfmt_cfckne.f
14598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14599 int UNUSED written = 0;
14600 IADDR UNUSED pc = abuf->addr;
14601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14602
14603 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14604 {
14605 UQI opval = 3;
14606 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14607 written |= (1 << 1);
14608 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14609 }
14610 } else {
14611 {
14612 UQI opval = 2;
14613 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14614 written |= (1 << 1);
14615 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14616 }
14617 }
14618
14619 abuf->written = written;
14620 return vpc;
14621 #undef FLD
14622 }
14623
14624 /* fckle: fckle$pack $FCCi_3,$CRj_float */
14625
14626 static SEM_PC
14627 SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14628 {
14629 #define FLD(f) abuf->fields.sfmt_cfckne.f
14630 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14631 int UNUSED written = 0;
14632 IADDR UNUSED pc = abuf->addr;
14633 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14634
14635 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)))) {
14636 {
14637 UQI opval = 3;
14638 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14639 written |= (1 << 1);
14640 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14641 }
14642 } else {
14643 {
14644 UQI opval = 2;
14645 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14646 written |= (1 << 1);
14647 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14648 }
14649 }
14650
14651 abuf->written = written;
14652 return vpc;
14653 #undef FLD
14654 }
14655
14656 /* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14657
14658 static SEM_PC
14659 SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14660 {
14661 #define FLD(f) abuf->fields.sfmt_cfckne.f
14662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14663 int UNUSED written = 0;
14664 IADDR UNUSED pc = abuf->addr;
14665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14666
14667 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14668 {
14669 UQI opval = 3;
14670 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14671 written |= (1 << 1);
14672 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14673 }
14674 } else {
14675 {
14676 UQI opval = 2;
14677 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14678 written |= (1 << 1);
14679 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14680 }
14681 }
14682
14683 abuf->written = written;
14684 return vpc;
14685 #undef FLD
14686 }
14687
14688 /* fckule: fckule$pack $FCCi_3,$CRj_float */
14689
14690 static SEM_PC
14691 SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14692 {
14693 #define FLD(f) abuf->fields.sfmt_cfckne.f
14694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14695 int UNUSED written = 0;
14696 IADDR UNUSED pc = abuf->addr;
14697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14698
14699 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))))) {
14700 {
14701 UQI opval = 3;
14702 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14703 written |= (1 << 1);
14704 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14705 }
14706 } else {
14707 {
14708 UQI opval = 2;
14709 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14710 written |= (1 << 1);
14711 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14712 }
14713 }
14714
14715 abuf->written = written;
14716 return vpc;
14717 #undef FLD
14718 }
14719
14720 /* fcku: fcku$pack $FCCi_3,$CRj_float */
14721
14722 static SEM_PC
14723 SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14724 {
14725 #define FLD(f) abuf->fields.sfmt_cfckne.f
14726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14727 int UNUSED written = 0;
14728 IADDR UNUSED pc = abuf->addr;
14729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14730
14731 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14732 {
14733 UQI opval = 3;
14734 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14735 written |= (1 << 1);
14736 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14737 }
14738 } else {
14739 {
14740 UQI opval = 2;
14741 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14742 written |= (1 << 1);
14743 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14744 }
14745 }
14746
14747 abuf->written = written;
14748 return vpc;
14749 #undef FLD
14750 }
14751
14752 /* fcko: fcko$pack $FCCi_3,$CRj_float */
14753
14754 static SEM_PC
14755 SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14756 {
14757 #define FLD(f) abuf->fields.sfmt_cfckne.f
14758 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14759 int UNUSED written = 0;
14760 IADDR UNUSED pc = abuf->addr;
14761 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14762
14763 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))))) {
14764 {
14765 UQI opval = 3;
14766 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14767 written |= (1 << 1);
14768 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14769 }
14770 } else {
14771 {
14772 UQI opval = 2;
14773 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14774 written |= (1 << 1);
14775 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14776 }
14777 }
14778
14779 abuf->written = written;
14780 return vpc;
14781 #undef FLD
14782 }
14783
14784 /* cckra: cckra$pack $CRj_int,$CCi,$cond */
14785
14786 static SEM_PC
14787 SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14788 {
14789 #define FLD(f) abuf->fields.sfmt_cckeq.f
14790 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14791 int UNUSED written = 0;
14792 IADDR UNUSED pc = abuf->addr;
14793 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14794
14795 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14796 {
14797 UQI opval = 3;
14798 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14799 written |= (1 << 2);
14800 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14801 }
14802 } else {
14803 {
14804 UQI opval = 0;
14805 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14806 written |= (1 << 2);
14807 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14808 }
14809 }
14810
14811 abuf->written = written;
14812 return vpc;
14813 #undef FLD
14814 }
14815
14816 /* cckno: cckno$pack $CRj_int,$CCi,$cond */
14817
14818 static SEM_PC
14819 SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14820 {
14821 #define FLD(f) abuf->fields.sfmt_cckeq.f
14822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14823 int UNUSED written = 0;
14824 IADDR UNUSED pc = abuf->addr;
14825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14826
14827 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14828 {
14829 UQI opval = 2;
14830 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14831 written |= (1 << 2);
14832 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14833 }
14834 } else {
14835 {
14836 UQI opval = 0;
14837 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14838 written |= (1 << 2);
14839 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14840 }
14841 }
14842
14843 abuf->written = written;
14844 return vpc;
14845 #undef FLD
14846 }
14847
14848 /* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14849
14850 static SEM_PC
14851 SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14852 {
14853 #define FLD(f) abuf->fields.sfmt_cckeq.f
14854 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14855 int UNUSED written = 0;
14856 IADDR UNUSED pc = abuf->addr;
14857 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14858
14859 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14860 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14861 {
14862 UQI opval = 3;
14863 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14864 written |= (1 << 3);
14865 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14866 }
14867 } else {
14868 {
14869 UQI opval = 2;
14870 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14871 written |= (1 << 3);
14872 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14873 }
14874 }
14875 } else {
14876 {
14877 UQI opval = 0;
14878 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14879 written |= (1 << 3);
14880 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14881 }
14882 }
14883
14884 abuf->written = written;
14885 return vpc;
14886 #undef FLD
14887 }
14888
14889 /* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14890
14891 static SEM_PC
14892 SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14893 {
14894 #define FLD(f) abuf->fields.sfmt_cckeq.f
14895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14896 int UNUSED written = 0;
14897 IADDR UNUSED pc = abuf->addr;
14898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14899
14900 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14901 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14902 {
14903 UQI opval = 3;
14904 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14905 written |= (1 << 3);
14906 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14907 }
14908 } else {
14909 {
14910 UQI opval = 2;
14911 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14912 written |= (1 << 3);
14913 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14914 }
14915 }
14916 } else {
14917 {
14918 UQI opval = 0;
14919 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14920 written |= (1 << 3);
14921 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14922 }
14923 }
14924
14925 abuf->written = written;
14926 return vpc;
14927 #undef FLD
14928 }
14929
14930 /* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
14931
14932 static SEM_PC
14933 SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14934 {
14935 #define FLD(f) abuf->fields.sfmt_cckeq.f
14936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14937 int UNUSED written = 0;
14938 IADDR UNUSED pc = abuf->addr;
14939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14940
14941 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14942 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))))) {
14943 {
14944 UQI opval = 3;
14945 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14946 written |= (1 << 3);
14947 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14948 }
14949 } else {
14950 {
14951 UQI opval = 2;
14952 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14953 written |= (1 << 3);
14954 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14955 }
14956 }
14957 } else {
14958 {
14959 UQI opval = 0;
14960 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14961 written |= (1 << 3);
14962 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14963 }
14964 }
14965
14966 abuf->written = written;
14967 return vpc;
14968 #undef FLD
14969 }
14970
14971 /* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
14972
14973 static SEM_PC
14974 SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14975 {
14976 #define FLD(f) abuf->fields.sfmt_cckeq.f
14977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14978 int UNUSED written = 0;
14979 IADDR UNUSED pc = abuf->addr;
14980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14981
14982 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14983 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)))))) {
14984 {
14985 UQI opval = 3;
14986 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14987 written |= (1 << 3);
14988 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14989 }
14990 } else {
14991 {
14992 UQI opval = 2;
14993 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14994 written |= (1 << 3);
14995 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14996 }
14997 }
14998 } else {
14999 {
15000 UQI opval = 0;
15001 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15002 written |= (1 << 3);
15003 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15004 }
15005 }
15006
15007 abuf->written = written;
15008 return vpc;
15009 #undef FLD
15010 }
15011
15012 /* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15013
15014 static SEM_PC
15015 SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15016 {
15017 #define FLD(f) abuf->fields.sfmt_cckeq.f
15018 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15019 int UNUSED written = 0;
15020 IADDR UNUSED pc = abuf->addr;
15021 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15022
15023 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15024 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)))) {
15025 {
15026 UQI opval = 3;
15027 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15028 written |= (1 << 3);
15029 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15030 }
15031 } else {
15032 {
15033 UQI opval = 2;
15034 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15035 written |= (1 << 3);
15036 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15037 }
15038 }
15039 } else {
15040 {
15041 UQI opval = 0;
15042 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15043 written |= (1 << 3);
15044 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15045 }
15046 }
15047
15048 abuf->written = written;
15049 return vpc;
15050 #undef FLD
15051 }
15052
15053 /* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15054
15055 static SEM_PC
15056 SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15057 {
15058 #define FLD(f) abuf->fields.sfmt_cckeq.f
15059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15060 int UNUSED written = 0;
15061 IADDR UNUSED pc = abuf->addr;
15062 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15063
15064 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15065 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))))) {
15066 {
15067 UQI opval = 3;
15068 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15069 written |= (1 << 3);
15070 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15071 }
15072 } else {
15073 {
15074 UQI opval = 2;
15075 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15076 written |= (1 << 3);
15077 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15078 }
15079 }
15080 } else {
15081 {
15082 UQI opval = 0;
15083 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15084 written |= (1 << 3);
15085 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15086 }
15087 }
15088
15089 abuf->written = written;
15090 return vpc;
15091 #undef FLD
15092 }
15093
15094 /* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15095
15096 static SEM_PC
15097 SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15098 {
15099 #define FLD(f) abuf->fields.sfmt_cckeq.f
15100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15101 int UNUSED written = 0;
15102 IADDR UNUSED pc = abuf->addr;
15103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15104
15105 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15106 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15107 {
15108 UQI opval = 3;
15109 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15110 written |= (1 << 3);
15111 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15112 }
15113 } else {
15114 {
15115 UQI opval = 2;
15116 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15117 written |= (1 << 3);
15118 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15119 }
15120 }
15121 } else {
15122 {
15123 UQI opval = 0;
15124 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15125 written |= (1 << 3);
15126 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15127 }
15128 }
15129
15130 abuf->written = written;
15131 return vpc;
15132 #undef FLD
15133 }
15134
15135 /* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15136
15137 static SEM_PC
15138 SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15139 {
15140 #define FLD(f) abuf->fields.sfmt_cckeq.f
15141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15142 int UNUSED written = 0;
15143 IADDR UNUSED pc = abuf->addr;
15144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15145
15146 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15147 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))))) {
15148 {
15149 UQI opval = 3;
15150 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15151 written |= (1 << 3);
15152 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15153 }
15154 } else {
15155 {
15156 UQI opval = 2;
15157 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15158 written |= (1 << 3);
15159 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15160 }
15161 }
15162 } else {
15163 {
15164 UQI opval = 0;
15165 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15166 written |= (1 << 3);
15167 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15168 }
15169 }
15170
15171 abuf->written = written;
15172 return vpc;
15173 #undef FLD
15174 }
15175
15176 /* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15177
15178 static SEM_PC
15179 SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15180 {
15181 #define FLD(f) abuf->fields.sfmt_cckeq.f
15182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15183 int UNUSED written = 0;
15184 IADDR UNUSED pc = abuf->addr;
15185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15186
15187 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15188 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15189 {
15190 UQI opval = 3;
15191 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15192 written |= (1 << 3);
15193 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15194 }
15195 } else {
15196 {
15197 UQI opval = 2;
15198 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15199 written |= (1 << 3);
15200 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15201 }
15202 }
15203 } else {
15204 {
15205 UQI opval = 0;
15206 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15207 written |= (1 << 3);
15208 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15209 }
15210 }
15211
15212 abuf->written = written;
15213 return vpc;
15214 #undef FLD
15215 }
15216
15217 /* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15218
15219 static SEM_PC
15220 SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15221 {
15222 #define FLD(f) abuf->fields.sfmt_cckeq.f
15223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15224 int UNUSED written = 0;
15225 IADDR UNUSED pc = abuf->addr;
15226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15227
15228 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15229 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15230 {
15231 UQI opval = 3;
15232 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15233 written |= (1 << 3);
15234 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15235 }
15236 } else {
15237 {
15238 UQI opval = 2;
15239 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15240 written |= (1 << 3);
15241 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15242 }
15243 }
15244 } else {
15245 {
15246 UQI opval = 0;
15247 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15248 written |= (1 << 3);
15249 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15250 }
15251 }
15252
15253 abuf->written = written;
15254 return vpc;
15255 #undef FLD
15256 }
15257
15258 /* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15259
15260 static SEM_PC
15261 SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15262 {
15263 #define FLD(f) abuf->fields.sfmt_cckeq.f
15264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15265 int UNUSED written = 0;
15266 IADDR UNUSED pc = abuf->addr;
15267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15268
15269 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15270 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15271 {
15272 UQI opval = 3;
15273 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15274 written |= (1 << 3);
15275 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15276 }
15277 } else {
15278 {
15279 UQI opval = 2;
15280 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15281 written |= (1 << 3);
15282 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15283 }
15284 }
15285 } else {
15286 {
15287 UQI opval = 0;
15288 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15289 written |= (1 << 3);
15290 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15291 }
15292 }
15293
15294 abuf->written = written;
15295 return vpc;
15296 #undef FLD
15297 }
15298
15299 /* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15300
15301 static SEM_PC
15302 SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15303 {
15304 #define FLD(f) abuf->fields.sfmt_cckeq.f
15305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15306 int UNUSED written = 0;
15307 IADDR UNUSED pc = abuf->addr;
15308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15309
15310 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15311 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15312 {
15313 UQI opval = 3;
15314 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15315 written |= (1 << 3);
15316 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15317 }
15318 } else {
15319 {
15320 UQI opval = 2;
15321 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15322 written |= (1 << 3);
15323 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15324 }
15325 }
15326 } else {
15327 {
15328 UQI opval = 0;
15329 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15330 written |= (1 << 3);
15331 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15332 }
15333 }
15334
15335 abuf->written = written;
15336 return vpc;
15337 #undef FLD
15338 }
15339
15340 /* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15341
15342 static SEM_PC
15343 SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15344 {
15345 #define FLD(f) abuf->fields.sfmt_cckeq.f
15346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15347 int UNUSED written = 0;
15348 IADDR UNUSED pc = abuf->addr;
15349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15350
15351 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15352 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15353 {
15354 UQI opval = 3;
15355 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15356 written |= (1 << 3);
15357 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15358 }
15359 } else {
15360 {
15361 UQI opval = 2;
15362 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15363 written |= (1 << 3);
15364 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15365 }
15366 }
15367 } else {
15368 {
15369 UQI opval = 0;
15370 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15371 written |= (1 << 3);
15372 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15373 }
15374 }
15375
15376 abuf->written = written;
15377 return vpc;
15378 #undef FLD
15379 }
15380
15381 /* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15382
15383 static SEM_PC
15384 SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15385 {
15386 #define FLD(f) abuf->fields.sfmt_cckeq.f
15387 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15388 int UNUSED written = 0;
15389 IADDR UNUSED pc = abuf->addr;
15390 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15391
15392 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15393 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15394 {
15395 UQI opval = 3;
15396 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15397 written |= (1 << 3);
15398 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15399 }
15400 } else {
15401 {
15402 UQI opval = 2;
15403 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15404 written |= (1 << 3);
15405 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15406 }
15407 }
15408 } else {
15409 {
15410 UQI opval = 0;
15411 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15412 written |= (1 << 3);
15413 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15414 }
15415 }
15416
15417 abuf->written = written;
15418 return vpc;
15419 #undef FLD
15420 }
15421
15422 /* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15423
15424 static SEM_PC
15425 SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15426 {
15427 #define FLD(f) abuf->fields.sfmt_cfckne.f
15428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15429 int UNUSED written = 0;
15430 IADDR UNUSED pc = abuf->addr;
15431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15432
15433 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15434 {
15435 UQI opval = 3;
15436 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15437 written |= (1 << 2);
15438 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15439 }
15440 } else {
15441 {
15442 UQI opval = 0;
15443 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15444 written |= (1 << 2);
15445 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15446 }
15447 }
15448
15449 abuf->written = written;
15450 return vpc;
15451 #undef FLD
15452 }
15453
15454 /* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15455
15456 static SEM_PC
15457 SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15458 {
15459 #define FLD(f) abuf->fields.sfmt_cfckne.f
15460 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15461 int UNUSED written = 0;
15462 IADDR UNUSED pc = abuf->addr;
15463 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15464
15465 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15466 {
15467 UQI opval = 2;
15468 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15469 written |= (1 << 2);
15470 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15471 }
15472 } else {
15473 {
15474 UQI opval = 0;
15475 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15476 written |= (1 << 2);
15477 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15478 }
15479 }
15480
15481 abuf->written = written;
15482 return vpc;
15483 #undef FLD
15484 }
15485
15486 /* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15487
15488 static SEM_PC
15489 SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15490 {
15491 #define FLD(f) abuf->fields.sfmt_cfckne.f
15492 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15493 int UNUSED written = 0;
15494 IADDR UNUSED pc = abuf->addr;
15495 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15496
15497 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15498 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))))) {
15499 {
15500 UQI opval = 3;
15501 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15502 written |= (1 << 3);
15503 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15504 }
15505 } else {
15506 {
15507 UQI opval = 2;
15508 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15509 written |= (1 << 3);
15510 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15511 }
15512 }
15513 } else {
15514 {
15515 UQI opval = 0;
15516 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15517 written |= (1 << 3);
15518 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15519 }
15520 }
15521
15522 abuf->written = written;
15523 return vpc;
15524 #undef FLD
15525 }
15526
15527 /* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15528
15529 static SEM_PC
15530 SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15531 {
15532 #define FLD(f) abuf->fields.sfmt_cfckne.f
15533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15534 int UNUSED written = 0;
15535 IADDR UNUSED pc = abuf->addr;
15536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15537
15538 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15539 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15540 {
15541 UQI opval = 3;
15542 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15543 written |= (1 << 3);
15544 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15545 }
15546 } else {
15547 {
15548 UQI opval = 2;
15549 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15550 written |= (1 << 3);
15551 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15552 }
15553 }
15554 } else {
15555 {
15556 UQI opval = 0;
15557 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15558 written |= (1 << 3);
15559 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15560 }
15561 }
15562
15563 abuf->written = written;
15564 return vpc;
15565 #undef FLD
15566 }
15567
15568 /* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15569
15570 static SEM_PC
15571 SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15572 {
15573 #define FLD(f) abuf->fields.sfmt_cfckne.f
15574 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15575 int UNUSED written = 0;
15576 IADDR UNUSED pc = abuf->addr;
15577 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15578
15579 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15580 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)))) {
15581 {
15582 UQI opval = 3;
15583 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15584 written |= (1 << 3);
15585 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15586 }
15587 } else {
15588 {
15589 UQI opval = 2;
15590 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15591 written |= (1 << 3);
15592 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15593 }
15594 }
15595 } else {
15596 {
15597 UQI opval = 0;
15598 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15599 written |= (1 << 3);
15600 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15601 }
15602 }
15603
15604 abuf->written = written;
15605 return vpc;
15606 #undef FLD
15607 }
15608
15609 /* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15610
15611 static SEM_PC
15612 SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15613 {
15614 #define FLD(f) abuf->fields.sfmt_cfckne.f
15615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15616 int UNUSED written = 0;
15617 IADDR UNUSED pc = abuf->addr;
15618 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15619
15620 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15621 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15622 {
15623 UQI opval = 3;
15624 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15625 written |= (1 << 3);
15626 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15627 }
15628 } else {
15629 {
15630 UQI opval = 2;
15631 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15632 written |= (1 << 3);
15633 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15634 }
15635 }
15636 } else {
15637 {
15638 UQI opval = 0;
15639 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15640 written |= (1 << 3);
15641 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15642 }
15643 }
15644
15645 abuf->written = written;
15646 return vpc;
15647 #undef FLD
15648 }
15649
15650 /* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15651
15652 static SEM_PC
15653 SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15654 {
15655 #define FLD(f) abuf->fields.sfmt_cfckne.f
15656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15657 int UNUSED written = 0;
15658 IADDR UNUSED pc = abuf->addr;
15659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15660
15661 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15662 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15663 {
15664 UQI opval = 3;
15665 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15666 written |= (1 << 3);
15667 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15668 }
15669 } else {
15670 {
15671 UQI opval = 2;
15672 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15673 written |= (1 << 3);
15674 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15675 }
15676 }
15677 } else {
15678 {
15679 UQI opval = 0;
15680 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15681 written |= (1 << 3);
15682 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15683 }
15684 }
15685
15686 abuf->written = written;
15687 return vpc;
15688 #undef FLD
15689 }
15690
15691 /* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15692
15693 static SEM_PC
15694 SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15695 {
15696 #define FLD(f) abuf->fields.sfmt_cfckne.f
15697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15698 int UNUSED written = 0;
15699 IADDR UNUSED pc = abuf->addr;
15700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15701
15702 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15703 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)))) {
15704 {
15705 UQI opval = 3;
15706 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15707 written |= (1 << 3);
15708 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15709 }
15710 } else {
15711 {
15712 UQI opval = 2;
15713 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15714 written |= (1 << 3);
15715 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15716 }
15717 }
15718 } else {
15719 {
15720 UQI opval = 0;
15721 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15722 written |= (1 << 3);
15723 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15724 }
15725 }
15726
15727 abuf->written = written;
15728 return vpc;
15729 #undef FLD
15730 }
15731
15732 /* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15733
15734 static SEM_PC
15735 SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15736 {
15737 #define FLD(f) abuf->fields.sfmt_cfckne.f
15738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15739 int UNUSED written = 0;
15740 IADDR UNUSED pc = abuf->addr;
15741 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15742
15743 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15744 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15745 {
15746 UQI opval = 3;
15747 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15748 written |= (1 << 3);
15749 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15750 }
15751 } else {
15752 {
15753 UQI opval = 2;
15754 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15755 written |= (1 << 3);
15756 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15757 }
15758 }
15759 } else {
15760 {
15761 UQI opval = 0;
15762 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15763 written |= (1 << 3);
15764 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15765 }
15766 }
15767
15768 abuf->written = written;
15769 return vpc;
15770 #undef FLD
15771 }
15772
15773 /* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15774
15775 static SEM_PC
15776 SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15777 {
15778 #define FLD(f) abuf->fields.sfmt_cfckne.f
15779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15780 int UNUSED written = 0;
15781 IADDR UNUSED pc = abuf->addr;
15782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15783
15784 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15785 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))))) {
15786 {
15787 UQI opval = 3;
15788 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15789 written |= (1 << 3);
15790 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15791 }
15792 } else {
15793 {
15794 UQI opval = 2;
15795 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15796 written |= (1 << 3);
15797 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15798 }
15799 }
15800 } else {
15801 {
15802 UQI opval = 0;
15803 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15804 written |= (1 << 3);
15805 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15806 }
15807 }
15808
15809 abuf->written = written;
15810 return vpc;
15811 #undef FLD
15812 }
15813
15814 /* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15815
15816 static SEM_PC
15817 SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15818 {
15819 #define FLD(f) abuf->fields.sfmt_cfckne.f
15820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15821 int UNUSED written = 0;
15822 IADDR UNUSED pc = abuf->addr;
15823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15824
15825 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15826 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15827 {
15828 UQI opval = 3;
15829 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15830 written |= (1 << 3);
15831 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15832 }
15833 } else {
15834 {
15835 UQI opval = 2;
15836 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15837 written |= (1 << 3);
15838 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15839 }
15840 }
15841 } else {
15842 {
15843 UQI opval = 0;
15844 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15845 written |= (1 << 3);
15846 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15847 }
15848 }
15849
15850 abuf->written = written;
15851 return vpc;
15852 #undef FLD
15853 }
15854
15855 /* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15856
15857 static SEM_PC
15858 SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15859 {
15860 #define FLD(f) abuf->fields.sfmt_cfckne.f
15861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15862 int UNUSED written = 0;
15863 IADDR UNUSED pc = abuf->addr;
15864 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15865
15866 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15867 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)))) {
15868 {
15869 UQI opval = 3;
15870 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15871 written |= (1 << 3);
15872 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15873 }
15874 } else {
15875 {
15876 UQI opval = 2;
15877 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15878 written |= (1 << 3);
15879 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15880 }
15881 }
15882 } else {
15883 {
15884 UQI opval = 0;
15885 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15886 written |= (1 << 3);
15887 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15888 }
15889 }
15890
15891 abuf->written = written;
15892 return vpc;
15893 #undef FLD
15894 }
15895
15896 /* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15897
15898 static SEM_PC
15899 SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15900 {
15901 #define FLD(f) abuf->fields.sfmt_cfckne.f
15902 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15903 int UNUSED written = 0;
15904 IADDR UNUSED pc = abuf->addr;
15905 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15906
15907 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15908 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15909 {
15910 UQI opval = 3;
15911 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15912 written |= (1 << 3);
15913 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15914 }
15915 } else {
15916 {
15917 UQI opval = 2;
15918 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15919 written |= (1 << 3);
15920 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15921 }
15922 }
15923 } else {
15924 {
15925 UQI opval = 0;
15926 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15927 written |= (1 << 3);
15928 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15929 }
15930 }
15931
15932 abuf->written = written;
15933 return vpc;
15934 #undef FLD
15935 }
15936
15937 /* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
15938
15939 static SEM_PC
15940 SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15941 {
15942 #define FLD(f) abuf->fields.sfmt_cfckne.f
15943 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15944 int UNUSED written = 0;
15945 IADDR UNUSED pc = abuf->addr;
15946 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15947
15948 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15949 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))))) {
15950 {
15951 UQI opval = 3;
15952 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15953 written |= (1 << 3);
15954 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15955 }
15956 } else {
15957 {
15958 UQI opval = 2;
15959 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15960 written |= (1 << 3);
15961 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15962 }
15963 }
15964 } else {
15965 {
15966 UQI opval = 0;
15967 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15968 written |= (1 << 3);
15969 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15970 }
15971 }
15972
15973 abuf->written = written;
15974 return vpc;
15975 #undef FLD
15976 }
15977
15978 /* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
15979
15980 static SEM_PC
15981 SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15982 {
15983 #define FLD(f) abuf->fields.sfmt_cfckne.f
15984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15985 int UNUSED written = 0;
15986 IADDR UNUSED pc = abuf->addr;
15987 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15988
15989 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15990 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
15991 {
15992 UQI opval = 3;
15993 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15994 written |= (1 << 3);
15995 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15996 }
15997 } else {
15998 {
15999 UQI opval = 2;
16000 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16001 written |= (1 << 3);
16002 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16003 }
16004 }
16005 } else {
16006 {
16007 UQI opval = 0;
16008 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16009 written |= (1 << 3);
16010 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16011 }
16012 }
16013
16014 abuf->written = written;
16015 return vpc;
16016 #undef FLD
16017 }
16018
16019 /* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16020
16021 static SEM_PC
16022 SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16023 {
16024 #define FLD(f) abuf->fields.sfmt_cfckne.f
16025 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16026 int UNUSED written = 0;
16027 IADDR UNUSED pc = abuf->addr;
16028 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16029
16030 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16031 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))))) {
16032 {
16033 UQI opval = 3;
16034 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16035 written |= (1 << 3);
16036 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16037 }
16038 } else {
16039 {
16040 UQI opval = 2;
16041 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16042 written |= (1 << 3);
16043 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16044 }
16045 }
16046 } else {
16047 {
16048 UQI opval = 0;
16049 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16050 written |= (1 << 3);
16051 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16052 }
16053 }
16054
16055 abuf->written = written;
16056 return vpc;
16057 #undef FLD
16058 }
16059
16060 /* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16061
16062 static SEM_PC
16063 SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16064 {
16065 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16067 int UNUSED written = 0;
16068 IADDR UNUSED pc = abuf->addr;
16069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16070
16071 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16072 {
16073 if (EQSI (FLD (f_LI), 1)) {
16074 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16075 }
16076 {
16077 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16078 sim_queue_pc_write (current_cpu, opval);
16079 written |= (1 << 6);
16080 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16081 }
16082 frvbf_model_branch (current_cpu, pc, 2);
16083 }
16084 }
16085
16086 abuf->written = written;
16087 return vpc;
16088 #undef FLD
16089 }
16090
16091 /* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16092
16093 static SEM_PC
16094 SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16095 {
16096 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16098 int UNUSED written = 0;
16099 IADDR UNUSED pc = abuf->addr;
16100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16101
16102 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16103 {
16104 if (EQSI (FLD (f_LI), 1)) {
16105 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16106 }
16107 {
16108 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16109 sim_queue_pc_write (current_cpu, opval);
16110 written |= (1 << 6);
16111 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16112 }
16113 frvbf_model_branch (current_cpu, pc, 2);
16114 }
16115 }
16116
16117 abuf->written = written;
16118 return vpc;
16119 #undef FLD
16120 }
16121
16122 /* ici: ici$pack @($GRi,$GRj) */
16123
16124 static SEM_PC
16125 SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16126 {
16127 #define FLD(f) abuf->fields.sfmt_icpl.f
16128 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16129 int UNUSED written = 0;
16130 IADDR UNUSED pc = abuf->addr;
16131 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16132
16133 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16134
16135 return vpc;
16136 #undef FLD
16137 }
16138
16139 /* dci: dci$pack @($GRi,$GRj) */
16140
16141 static SEM_PC
16142 SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16143 {
16144 #define FLD(f) abuf->fields.sfmt_icpl.f
16145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16146 int UNUSED written = 0;
16147 IADDR UNUSED pc = abuf->addr;
16148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16149
16150 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16151
16152 return vpc;
16153 #undef FLD
16154 }
16155
16156 /* icei: icei$pack @($GRi,$GRj),$ae */
16157
16158 static SEM_PC
16159 SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16160 {
16161 #define FLD(f) abuf->fields.sfmt_icei.f
16162 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16163 int UNUSED written = 0;
16164 IADDR UNUSED pc = abuf->addr;
16165 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16166
16167 if (EQSI (FLD (f_ae), 0)) {
16168 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16169 } else {
16170 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16171 }
16172
16173 return vpc;
16174 #undef FLD
16175 }
16176
16177 /* dcei: dcei$pack @($GRi,$GRj),$ae */
16178
16179 static SEM_PC
16180 SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16181 {
16182 #define FLD(f) abuf->fields.sfmt_icei.f
16183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16184 int UNUSED written = 0;
16185 IADDR UNUSED pc = abuf->addr;
16186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16187
16188 if (EQSI (FLD (f_ae), 0)) {
16189 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16190 } else {
16191 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16192 }
16193
16194 return vpc;
16195 #undef FLD
16196 }
16197
16198 /* dcf: dcf$pack @($GRi,$GRj) */
16199
16200 static SEM_PC
16201 SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16202 {
16203 #define FLD(f) abuf->fields.sfmt_icpl.f
16204 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16205 int UNUSED written = 0;
16206 IADDR UNUSED pc = abuf->addr;
16207 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16208
16209 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16210
16211 return vpc;
16212 #undef FLD
16213 }
16214
16215 /* dcef: dcef$pack @($GRi,$GRj),$ae */
16216
16217 static SEM_PC
16218 SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16219 {
16220 #define FLD(f) abuf->fields.sfmt_icei.f
16221 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16222 int UNUSED written = 0;
16223 IADDR UNUSED pc = abuf->addr;
16224 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16225
16226 if (EQSI (FLD (f_ae), 0)) {
16227 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16228 } else {
16229 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16230 }
16231
16232 return vpc;
16233 #undef FLD
16234 }
16235
16236 /* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16237
16238 static SEM_PC
16239 SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16240 {
16241 #define FLD(f) abuf->fields.fmt_empty.f
16242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16243 int UNUSED written = 0;
16244 IADDR UNUSED pc = abuf->addr;
16245 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16246
16247 ((void) 0); /*nop*/
16248
16249 return vpc;
16250 #undef FLD
16251 }
16252
16253 /* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16254
16255 static SEM_PC
16256 SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16257 {
16258 #define FLD(f) abuf->fields.fmt_empty.f
16259 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16260 int UNUSED written = 0;
16261 IADDR UNUSED pc = abuf->addr;
16262 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16263
16264 ((void) 0); /*nop*/
16265
16266 return vpc;
16267 #undef FLD
16268 }
16269
16270 /* itlbi: itlbi$pack @($GRi,$GRj) */
16271
16272 static SEM_PC
16273 SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16274 {
16275 #define FLD(f) abuf->fields.fmt_empty.f
16276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16277 int UNUSED written = 0;
16278 IADDR UNUSED pc = abuf->addr;
16279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16280
16281 ((void) 0); /*nop*/
16282
16283 return vpc;
16284 #undef FLD
16285 }
16286
16287 /* dtlbi: dtlbi$pack @($GRi,$GRj) */
16288
16289 static SEM_PC
16290 SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16291 {
16292 #define FLD(f) abuf->fields.fmt_empty.f
16293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16294 int UNUSED written = 0;
16295 IADDR UNUSED pc = abuf->addr;
16296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16297
16298 ((void) 0); /*nop*/
16299
16300 return vpc;
16301 #undef FLD
16302 }
16303
16304 /* icpl: icpl$pack $GRi,$GRj,$lock */
16305
16306 static SEM_PC
16307 SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16308 {
16309 #define FLD(f) abuf->fields.sfmt_icpl.f
16310 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16311 int UNUSED written = 0;
16312 IADDR UNUSED pc = abuf->addr;
16313 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16314
16315 frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16316
16317 return vpc;
16318 #undef FLD
16319 }
16320
16321 /* dcpl: dcpl$pack $GRi,$GRj,$lock */
16322
16323 static SEM_PC
16324 SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16325 {
16326 #define FLD(f) abuf->fields.sfmt_icpl.f
16327 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16328 int UNUSED written = 0;
16329 IADDR UNUSED pc = abuf->addr;
16330 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16331
16332 frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16333
16334 return vpc;
16335 #undef FLD
16336 }
16337
16338 /* icul: icul$pack $GRi */
16339
16340 static SEM_PC
16341 SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16342 {
16343 #define FLD(f) abuf->fields.sfmt_jmpil.f
16344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16345 int UNUSED written = 0;
16346 IADDR UNUSED pc = abuf->addr;
16347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16348
16349 frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16350
16351 return vpc;
16352 #undef FLD
16353 }
16354
16355 /* dcul: dcul$pack $GRi */
16356
16357 static SEM_PC
16358 SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16359 {
16360 #define FLD(f) abuf->fields.sfmt_jmpil.f
16361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16362 int UNUSED written = 0;
16363 IADDR UNUSED pc = abuf->addr;
16364 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16365
16366 frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16367
16368 return vpc;
16369 #undef FLD
16370 }
16371
16372 /* bar: bar$pack */
16373
16374 static SEM_PC
16375 SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16376 {
16377 #define FLD(f) abuf->fields.fmt_empty.f
16378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16379 int UNUSED written = 0;
16380 IADDR UNUSED pc = abuf->addr;
16381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16382
16383 ((void) 0); /*nop*/
16384
16385 return vpc;
16386 #undef FLD
16387 }
16388
16389 /* membar: membar$pack */
16390
16391 static SEM_PC
16392 SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16393 {
16394 #define FLD(f) abuf->fields.fmt_empty.f
16395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16396 int UNUSED written = 0;
16397 IADDR UNUSED pc = abuf->addr;
16398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16399
16400 ((void) 0); /*nop*/
16401
16402 return vpc;
16403 #undef FLD
16404 }
16405
16406 /* lrai: lrai$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16407
16408 static SEM_PC
16409 SEM_FN_NAME (frvbf,lrai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16410 {
16411 #define FLD(f) abuf->fields.fmt_empty.f
16412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16413 int UNUSED written = 0;
16414 IADDR UNUSED pc = abuf->addr;
16415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16416
16417 ((void) 0); /*nop*/
16418
16419 return vpc;
16420 #undef FLD
16421 }
16422
16423 /* lrad: lrad$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16424
16425 static SEM_PC
16426 SEM_FN_NAME (frvbf,lrad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16427 {
16428 #define FLD(f) abuf->fields.fmt_empty.f
16429 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16430 int UNUSED written = 0;
16431 IADDR UNUSED pc = abuf->addr;
16432 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16433
16434 ((void) 0); /*nop*/
16435
16436 return vpc;
16437 #undef FLD
16438 }
16439
16440 /* tlbpr: tlbpr$pack $GRi,$GRj,$TLBPRopx,$TLBPRL */
16441
16442 static SEM_PC
16443 SEM_FN_NAME (frvbf,tlbpr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16444 {
16445 #define FLD(f) abuf->fields.fmt_empty.f
16446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16447 int UNUSED written = 0;
16448 IADDR UNUSED pc = abuf->addr;
16449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16450
16451 ((void) 0); /*nop*/
16452
16453 return vpc;
16454 #undef FLD
16455 }
16456
16457 /* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16458
16459 static SEM_PC
16460 SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16461 {
16462 #define FLD(f) abuf->fields.fmt_empty.f
16463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16464 int UNUSED written = 0;
16465 IADDR UNUSED pc = abuf->addr;
16466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16467
16468 ((void) 0); /*nop*/
16469
16470 return vpc;
16471 #undef FLD
16472 }
16473
16474 /* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16475
16476 static SEM_PC
16477 SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16478 {
16479 #define FLD(f) abuf->fields.fmt_empty.f
16480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16481 int UNUSED written = 0;
16482 IADDR UNUSED pc = abuf->addr;
16483 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16484
16485 ((void) 0); /*nop*/
16486
16487 return vpc;
16488 #undef FLD
16489 }
16490
16491 /* clrgr: clrgr$pack $GRk */
16492
16493 static SEM_PC
16494 SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16495 {
16496 #define FLD(f) abuf->fields.sfmt_swapi.f
16497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16498 int UNUSED written = 0;
16499 IADDR UNUSED pc = abuf->addr;
16500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16501
16502 {
16503 frv_ref_SI (GET_H_GR (FLD (f_GRk)));
16504 frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
16505 }
16506
16507 return vpc;
16508 #undef FLD
16509 }
16510
16511 /* clrfr: clrfr$pack $FRk */
16512
16513 static SEM_PC
16514 SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16515 {
16516 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16518 int UNUSED written = 0;
16519 IADDR UNUSED pc = abuf->addr;
16520 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16521
16522 {
16523 frv_ref_SI (GET_H_FR (FLD (f_FRk)));
16524 frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
16525 }
16526
16527 return vpc;
16528 #undef FLD
16529 }
16530
16531 /* clrga: clrga$pack */
16532
16533 static SEM_PC
16534 SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16535 {
16536 #define FLD(f) abuf->fields.fmt_empty.f
16537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16538 int UNUSED written = 0;
16539 IADDR UNUSED pc = abuf->addr;
16540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16541
16542 frvbf_clear_ne_flags (current_cpu, -1, 0);
16543
16544 return vpc;
16545 #undef FLD
16546 }
16547
16548 /* clrfa: clrfa$pack */
16549
16550 static SEM_PC
16551 SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16552 {
16553 #define FLD(f) abuf->fields.fmt_empty.f
16554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16555 int UNUSED written = 0;
16556 IADDR UNUSED pc = abuf->addr;
16557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16558
16559 frvbf_clear_ne_flags (current_cpu, -1, 1);
16560
16561 return vpc;
16562 #undef FLD
16563 }
16564
16565 /* commitgr: commitgr$pack $GRk */
16566
16567 static SEM_PC
16568 SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16569 {
16570 #define FLD(f) abuf->fields.sfmt_setlos.f
16571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16572 int UNUSED written = 0;
16573 IADDR UNUSED pc = abuf->addr;
16574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16575
16576 frvbf_commit (current_cpu, FLD (f_GRk), 0);
16577
16578 return vpc;
16579 #undef FLD
16580 }
16581
16582 /* commitfr: commitfr$pack $FRk */
16583
16584 static SEM_PC
16585 SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16586 {
16587 #define FLD(f) abuf->fields.sfmt_mhsethis.f
16588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16589 int UNUSED written = 0;
16590 IADDR UNUSED pc = abuf->addr;
16591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16592
16593 frvbf_commit (current_cpu, FLD (f_FRk), 1);
16594
16595 return vpc;
16596 #undef FLD
16597 }
16598
16599 /* commitga: commitga$pack */
16600
16601 static SEM_PC
16602 SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16603 {
16604 #define FLD(f) abuf->fields.fmt_empty.f
16605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16606 int UNUSED written = 0;
16607 IADDR UNUSED pc = abuf->addr;
16608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16609
16610 frvbf_commit (current_cpu, -1, 0);
16611
16612 return vpc;
16613 #undef FLD
16614 }
16615
16616 /* commitfa: commitfa$pack */
16617
16618 static SEM_PC
16619 SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16620 {
16621 #define FLD(f) abuf->fields.fmt_empty.f
16622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16623 int UNUSED written = 0;
16624 IADDR UNUSED pc = abuf->addr;
16625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16626
16627 frvbf_commit (current_cpu, -1, 1);
16628
16629 return vpc;
16630 #undef FLD
16631 }
16632
16633 /* fitos: fitos$pack $FRintj,$FRk */
16634
16635 static SEM_PC
16636 SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16637 {
16638 #define FLD(f) abuf->fields.sfmt_fditos.f
16639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16640 int UNUSED written = 0;
16641 IADDR UNUSED pc = abuf->addr;
16642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16643
16644 {
16645 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16646 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16647 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16648 }
16649
16650 return vpc;
16651 #undef FLD
16652 }
16653
16654 /* fstoi: fstoi$pack $FRj,$FRintk */
16655
16656 static SEM_PC
16657 SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16658 {
16659 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16661 int UNUSED written = 0;
16662 IADDR UNUSED pc = abuf->addr;
16663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16664
16665 {
16666 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16667 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16668 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16669 }
16670
16671 return vpc;
16672 #undef FLD
16673 }
16674
16675 /* fitod: fitod$pack $FRintj,$FRdoublek */
16676
16677 static SEM_PC
16678 SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16679 {
16680 #define FLD(f) abuf->fields.sfmt_fitod.f
16681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16682 int UNUSED written = 0;
16683 IADDR UNUSED pc = abuf->addr;
16684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16685
16686 {
16687 DF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsidf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16688 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16689 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16690 }
16691
16692 return vpc;
16693 #undef FLD
16694 }
16695
16696 /* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16697
16698 static SEM_PC
16699 SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16700 {
16701 #define FLD(f) abuf->fields.sfmt_fdtoi.f
16702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16703 int UNUSED written = 0;
16704 IADDR UNUSED pc = abuf->addr;
16705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16706
16707 {
16708 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixdfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
16709 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16710 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16711 }
16712
16713 return vpc;
16714 #undef FLD
16715 }
16716
16717 /* fditos: fditos$pack $FRintj,$FRk */
16718
16719 static SEM_PC
16720 SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16721 {
16722 #define FLD(f) abuf->fields.sfmt_fditos.f
16723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16724 int UNUSED written = 0;
16725 IADDR UNUSED pc = abuf->addr;
16726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16727
16728 {
16729 {
16730 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16731 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16732 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16733 }
16734 {
16735 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
16736 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16737 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16738 }
16739 }
16740
16741 return vpc;
16742 #undef FLD
16743 }
16744
16745 /* fdstoi: fdstoi$pack $FRj,$FRintk */
16746
16747 static SEM_PC
16748 SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16749 {
16750 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16752 int UNUSED written = 0;
16753 IADDR UNUSED pc = abuf->addr;
16754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16755
16756 {
16757 {
16758 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16759 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16760 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16761 }
16762 {
16763 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
16764 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16765 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16766 }
16767 }
16768
16769 return vpc;
16770 #undef FLD
16771 }
16772
16773 /* nfditos: nfditos$pack $FRintj,$FRk */
16774
16775 static SEM_PC
16776 SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16777 {
16778 #define FLD(f) abuf->fields.sfmt_fditos.f
16779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16780 int UNUSED written = 0;
16781 IADDR UNUSED pc = abuf->addr;
16782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16783
16784 {
16785 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16786 {
16787 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16788 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16789 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16790 }
16791 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16792 {
16793 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (((FLD (f_FRj)) + (1))));
16794 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16795 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16796 }
16797 }
16798
16799 return vpc;
16800 #undef FLD
16801 }
16802
16803 /* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16804
16805 static SEM_PC
16806 SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16807 {
16808 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16810 int UNUSED written = 0;
16811 IADDR UNUSED pc = abuf->addr;
16812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16813
16814 {
16815 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16816 {
16817 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16818 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16819 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16820 }
16821 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16822 {
16823 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
16824 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
16825 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16826 }
16827 }
16828
16829 return vpc;
16830 #undef FLD
16831 }
16832
16833 /* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16834
16835 static SEM_PC
16836 SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16837 {
16838 #define FLD(f) abuf->fields.sfmt_cfitos.f
16839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16840 int UNUSED written = 0;
16841 IADDR UNUSED pc = abuf->addr;
16842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16843
16844 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16845 {
16846 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16847 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16848 written |= (1 << 3);
16849 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16850 }
16851 }
16852
16853 abuf->written = written;
16854 return vpc;
16855 #undef FLD
16856 }
16857
16858 /* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16859
16860 static SEM_PC
16861 SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16862 {
16863 #define FLD(f) abuf->fields.sfmt_cfstoi.f
16864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16865 int UNUSED written = 0;
16866 IADDR UNUSED pc = abuf->addr;
16867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16868
16869 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16870 {
16871 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16872 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16873 written |= (1 << 3);
16874 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16875 }
16876 }
16877
16878 abuf->written = written;
16879 return vpc;
16880 #undef FLD
16881 }
16882
16883 /* nfitos: nfitos$pack $FRintj,$FRk */
16884
16885 static SEM_PC
16886 SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16887 {
16888 #define FLD(f) abuf->fields.sfmt_fditos.f
16889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16890 int UNUSED written = 0;
16891 IADDR UNUSED pc = abuf->addr;
16892 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16893
16894 {
16895 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16896 {
16897 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), GET_H_FR_INT (FLD (f_FRj)));
16898 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16899 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16900 }
16901 }
16902
16903 return vpc;
16904 #undef FLD
16905 }
16906
16907 /* nfstoi: nfstoi$pack $FRj,$FRintk */
16908
16909 static SEM_PC
16910 SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16911 {
16912 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16914 int UNUSED written = 0;
16915 IADDR UNUSED pc = abuf->addr;
16916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16917
16918 {
16919 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16920 {
16921 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
16922 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16923 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16924 }
16925 }
16926
16927 return vpc;
16928 #undef FLD
16929 }
16930
16931 /* fmovs: fmovs$pack $FRj,$FRk */
16932
16933 static SEM_PC
16934 SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16935 {
16936 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16938 int UNUSED written = 0;
16939 IADDR UNUSED pc = abuf->addr;
16940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16941
16942 {
16943 SF opval = GET_H_FR (FLD (f_FRj));
16944 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16945 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16946 }
16947
16948 return vpc;
16949 #undef FLD
16950 }
16951
16952 /* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16953
16954 static SEM_PC
16955 SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16956 {
16957 #define FLD(f) abuf->fields.sfmt_fmaddd.f
16958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16959 int UNUSED written = 0;
16960 IADDR UNUSED pc = abuf->addr;
16961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16962
16963 {
16964 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16965 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16966 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16967 }
16968
16969 return vpc;
16970 #undef FLD
16971 }
16972
16973 /* fdmovs: fdmovs$pack $FRj,$FRk */
16974
16975 static SEM_PC
16976 SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16977 {
16978 #define FLD(f) abuf->fields.sfmt_fdmadds.f
16979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16980 int UNUSED written = 0;
16981 IADDR UNUSED pc = abuf->addr;
16982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16983
16984 {
16985 {
16986 SF opval = GET_H_FR (FLD (f_FRj));
16987 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16988 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16989 }
16990 {
16991 SF opval = GET_H_FR (((FLD (f_FRj)) + (1)));
16992 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
16993 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16994 }
16995 }
16996
16997 return vpc;
16998 #undef FLD
16999 }
17000
17001 /* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
17002
17003 static SEM_PC
17004 SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17005 {
17006 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17008 int UNUSED written = 0;
17009 IADDR UNUSED pc = abuf->addr;
17010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17011
17012 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17013 {
17014 SF opval = GET_H_FR (FLD (f_FRj));
17015 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17016 written |= (1 << 3);
17017 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17018 }
17019 }
17020
17021 abuf->written = written;
17022 return vpc;
17023 #undef FLD
17024 }
17025
17026 /* fnegs: fnegs$pack $FRj,$FRk */
17027
17028 static SEM_PC
17029 SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17030 {
17031 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17033 int UNUSED written = 0;
17034 IADDR UNUSED pc = abuf->addr;
17035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17036
17037 {
17038 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17039 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17040 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17041 }
17042
17043 return vpc;
17044 #undef FLD
17045 }
17046
17047 /* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17048
17049 static SEM_PC
17050 SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17051 {
17052 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17054 int UNUSED written = 0;
17055 IADDR UNUSED pc = abuf->addr;
17056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17057
17058 {
17059 DF opval = CGEN_CPU_FPU (current_cpu)->ops->negdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17060 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17061 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17062 }
17063
17064 return vpc;
17065 #undef FLD
17066 }
17067
17068 /* fdnegs: fdnegs$pack $FRj,$FRk */
17069
17070 static SEM_PC
17071 SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17072 {
17073 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17075 int UNUSED written = 0;
17076 IADDR UNUSED pc = abuf->addr;
17077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17078
17079 {
17080 {
17081 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17082 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17083 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17084 }
17085 {
17086 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17087 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17088 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17089 }
17090 }
17091
17092 return vpc;
17093 #undef FLD
17094 }
17095
17096 /* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17097
17098 static SEM_PC
17099 SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17100 {
17101 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17102 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17103 int UNUSED written = 0;
17104 IADDR UNUSED pc = abuf->addr;
17105 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17106
17107 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17108 {
17109 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17110 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17111 written |= (1 << 3);
17112 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17113 }
17114 }
17115
17116 abuf->written = written;
17117 return vpc;
17118 #undef FLD
17119 }
17120
17121 /* fabss: fabss$pack $FRj,$FRk */
17122
17123 static SEM_PC
17124 SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17125 {
17126 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17128 int UNUSED written = 0;
17129 IADDR UNUSED pc = abuf->addr;
17130 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17131
17132 {
17133 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17134 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17135 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17136 }
17137
17138 return vpc;
17139 #undef FLD
17140 }
17141
17142 /* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17143
17144 static SEM_PC
17145 SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17146 {
17147 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17149 int UNUSED written = 0;
17150 IADDR UNUSED pc = abuf->addr;
17151 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17152
17153 {
17154 DF opval = CGEN_CPU_FPU (current_cpu)->ops->absdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17155 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17156 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17157 }
17158
17159 return vpc;
17160 #undef FLD
17161 }
17162
17163 /* fdabss: fdabss$pack $FRj,$FRk */
17164
17165 static SEM_PC
17166 SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17167 {
17168 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17170 int UNUSED written = 0;
17171 IADDR UNUSED pc = abuf->addr;
17172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17173
17174 {
17175 {
17176 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17177 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17178 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17179 }
17180 {
17181 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17182 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17183 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17184 }
17185 }
17186
17187 return vpc;
17188 #undef FLD
17189 }
17190
17191 /* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17192
17193 static SEM_PC
17194 SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17195 {
17196 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17198 int UNUSED written = 0;
17199 IADDR UNUSED pc = abuf->addr;
17200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17201
17202 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17203 {
17204 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17205 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17206 written |= (1 << 3);
17207 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17208 }
17209 }
17210
17211 abuf->written = written;
17212 return vpc;
17213 #undef FLD
17214 }
17215
17216 /* fsqrts: fsqrts$pack $FRj,$FRk */
17217
17218 static SEM_PC
17219 SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17220 {
17221 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17222 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17223 int UNUSED written = 0;
17224 IADDR UNUSED pc = abuf->addr;
17225 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17226
17227 {
17228 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17229 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17230 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17231 }
17232
17233 return vpc;
17234 #undef FLD
17235 }
17236
17237 /* fdsqrts: fdsqrts$pack $FRj,$FRk */
17238
17239 static SEM_PC
17240 SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17241 {
17242 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17244 int UNUSED written = 0;
17245 IADDR UNUSED pc = abuf->addr;
17246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17247
17248 {
17249 {
17250 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17251 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17252 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17253 }
17254 {
17255 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17256 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17257 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17258 }
17259 }
17260
17261 return vpc;
17262 #undef FLD
17263 }
17264
17265 /* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17266
17267 static SEM_PC
17268 SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17269 {
17270 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17272 int UNUSED written = 0;
17273 IADDR UNUSED pc = abuf->addr;
17274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17275
17276 {
17277 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17278 {
17279 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17280 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17281 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17282 }
17283 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17284 {
17285 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))));
17286 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
17287 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17288 }
17289 }
17290
17291 return vpc;
17292 #undef FLD
17293 }
17294
17295 /* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17296
17297 static SEM_PC
17298 SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17299 {
17300 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17302 int UNUSED written = 0;
17303 IADDR UNUSED pc = abuf->addr;
17304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17305
17306 {
17307 DF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17308 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17309 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17310 }
17311
17312 return vpc;
17313 #undef FLD
17314 }
17315
17316 /* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17317
17318 static SEM_PC
17319 SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17320 {
17321 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17322 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17323 int UNUSED written = 0;
17324 IADDR UNUSED pc = abuf->addr;
17325 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17326
17327 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17328 {
17329 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17330 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17331 written |= (1 << 3);
17332 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17333 }
17334 }
17335
17336 abuf->written = written;
17337 return vpc;
17338 #undef FLD
17339 }
17340
17341 /* nfsqrts: nfsqrts$pack $FRj,$FRk */
17342
17343 static SEM_PC
17344 SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17345 {
17346 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17348 int UNUSED written = 0;
17349 IADDR UNUSED pc = abuf->addr;
17350 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17351
17352 {
17353 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17354 {
17355 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17356 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17357 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17358 }
17359 }
17360
17361 return vpc;
17362 #undef FLD
17363 }
17364
17365 /* fadds: fadds$pack $FRi,$FRj,$FRk */
17366
17367 static SEM_PC
17368 SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17369 {
17370 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17372 int UNUSED written = 0;
17373 IADDR UNUSED pc = abuf->addr;
17374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17375
17376 {
17377 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17378 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17379 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17380 }
17381
17382 return vpc;
17383 #undef FLD
17384 }
17385
17386 /* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17387
17388 static SEM_PC
17389 SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17390 {
17391 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17393 int UNUSED written = 0;
17394 IADDR UNUSED pc = abuf->addr;
17395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17396
17397 {
17398 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17399 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17400 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17401 }
17402
17403 return vpc;
17404 #undef FLD
17405 }
17406
17407 /* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17408
17409 static SEM_PC
17410 SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17411 {
17412 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17414 int UNUSED written = 0;
17415 IADDR UNUSED pc = abuf->addr;
17416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17417
17418 {
17419 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17420 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17421 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17422 }
17423
17424 return vpc;
17425 #undef FLD
17426 }
17427
17428 /* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17429
17430 static SEM_PC
17431 SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17432 {
17433 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17434 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17435 int UNUSED written = 0;
17436 IADDR UNUSED pc = abuf->addr;
17437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17438
17439 {
17440 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17441 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17442 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17443 }
17444
17445 return vpc;
17446 #undef FLD
17447 }
17448
17449 /* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17450
17451 static SEM_PC
17452 SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17453 {
17454 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17455 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17456 int UNUSED written = 0;
17457 IADDR UNUSED pc = abuf->addr;
17458 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17459
17460 {
17461 DF opval = CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17462 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17463 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17464 }
17465
17466 return vpc;
17467 #undef FLD
17468 }
17469
17470 /* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17471
17472 static SEM_PC
17473 SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17474 {
17475 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17477 int UNUSED written = 0;
17478 IADDR UNUSED pc = abuf->addr;
17479 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17480
17481 {
17482 DF opval = CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17483 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17484 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17485 }
17486
17487 return vpc;
17488 #undef FLD
17489 }
17490
17491 /* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17492
17493 static SEM_PC
17494 SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17495 {
17496 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17497 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17498 int UNUSED written = 0;
17499 IADDR UNUSED pc = abuf->addr;
17500 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17501
17502 {
17503 DF opval = CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17504 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17505 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17506 }
17507
17508 return vpc;
17509 #undef FLD
17510 }
17511
17512 /* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17513
17514 static SEM_PC
17515 SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17516 {
17517 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17519 int UNUSED written = 0;
17520 IADDR UNUSED pc = abuf->addr;
17521 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17522
17523 {
17524 DF opval = CGEN_CPU_FPU (current_cpu)->ops->divdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17525 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17526 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17527 }
17528
17529 return vpc;
17530 #undef FLD
17531 }
17532
17533 /* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17534
17535 static SEM_PC
17536 SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17537 {
17538 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17539 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17540 int UNUSED written = 0;
17541 IADDR UNUSED pc = abuf->addr;
17542 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17543
17544 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17545 {
17546 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17547 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17548 written |= (1 << 4);
17549 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17550 }
17551 }
17552
17553 abuf->written = written;
17554 return vpc;
17555 #undef FLD
17556 }
17557
17558 /* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17559
17560 static SEM_PC
17561 SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17562 {
17563 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17565 int UNUSED written = 0;
17566 IADDR UNUSED pc = abuf->addr;
17567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17568
17569 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17570 {
17571 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17572 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17573 written |= (1 << 4);
17574 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17575 }
17576 }
17577
17578 abuf->written = written;
17579 return vpc;
17580 #undef FLD
17581 }
17582
17583 /* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17584
17585 static SEM_PC
17586 SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17587 {
17588 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17590 int UNUSED written = 0;
17591 IADDR UNUSED pc = abuf->addr;
17592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17593
17594 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17595 {
17596 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17597 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17598 written |= (1 << 4);
17599 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17600 }
17601 }
17602
17603 abuf->written = written;
17604 return vpc;
17605 #undef FLD
17606 }
17607
17608 /* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17609
17610 static SEM_PC
17611 SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17612 {
17613 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17614 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17615 int UNUSED written = 0;
17616 IADDR UNUSED pc = abuf->addr;
17617 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17618
17619 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17620 {
17621 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17622 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17623 written |= (1 << 4);
17624 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17625 }
17626 }
17627
17628 abuf->written = written;
17629 return vpc;
17630 #undef FLD
17631 }
17632
17633 /* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17634
17635 static SEM_PC
17636 SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17637 {
17638 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17640 int UNUSED written = 0;
17641 IADDR UNUSED pc = abuf->addr;
17642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17643
17644 {
17645 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17646 {
17647 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17648 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17649 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17650 }
17651 }
17652
17653 return vpc;
17654 #undef FLD
17655 }
17656
17657 /* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17658
17659 static SEM_PC
17660 SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17661 {
17662 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17664 int UNUSED written = 0;
17665 IADDR UNUSED pc = abuf->addr;
17666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17667
17668 {
17669 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17670 {
17671 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17672 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17673 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17674 }
17675 }
17676
17677 return vpc;
17678 #undef FLD
17679 }
17680
17681 /* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17682
17683 static SEM_PC
17684 SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17685 {
17686 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17687 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17688 int UNUSED written = 0;
17689 IADDR UNUSED pc = abuf->addr;
17690 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17691
17692 {
17693 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17694 {
17695 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17696 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17697 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17698 }
17699 }
17700
17701 return vpc;
17702 #undef FLD
17703 }
17704
17705 /* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17706
17707 static SEM_PC
17708 SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17709 {
17710 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17711 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17712 int UNUSED written = 0;
17713 IADDR UNUSED pc = abuf->addr;
17714 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17715
17716 {
17717 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17718 {
17719 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17720 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17721 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17722 }
17723 }
17724
17725 return vpc;
17726 #undef FLD
17727 }
17728
17729 /* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17730
17731 static SEM_PC
17732 SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17733 {
17734 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17736 int UNUSED written = 0;
17737 IADDR UNUSED pc = abuf->addr;
17738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17739
17740 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)))) {
17741 {
17742 UQI opval = 2;
17743 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17744 written |= (1 << 2);
17745 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17746 }
17747 } else {
17748 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)))) {
17749 {
17750 UQI opval = 8;
17751 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17752 written |= (1 << 2);
17753 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17754 }
17755 } else {
17756 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)))) {
17757 {
17758 UQI opval = 4;
17759 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17760 written |= (1 << 2);
17761 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17762 }
17763 } else {
17764 {
17765 UQI opval = 1;
17766 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17767 written |= (1 << 2);
17768 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17769 }
17770 }
17771 }
17772 }
17773
17774 abuf->written = written;
17775 return vpc;
17776 #undef FLD
17777 }
17778
17779 /* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17780
17781 static SEM_PC
17782 SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17783 {
17784 #define FLD(f) abuf->fields.sfmt_fcmpd.f
17785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17786 int UNUSED written = 0;
17787 IADDR UNUSED pc = abuf->addr;
17788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17789
17790 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)))) {
17791 {
17792 UQI opval = 2;
17793 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17794 written |= (1 << 2);
17795 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17796 }
17797 } else {
17798 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)))) {
17799 {
17800 UQI opval = 8;
17801 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17802 written |= (1 << 2);
17803 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17804 }
17805 } else {
17806 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)))) {
17807 {
17808 UQI opval = 4;
17809 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17810 written |= (1 << 2);
17811 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17812 }
17813 } else {
17814 {
17815 UQI opval = 1;
17816 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17817 written |= (1 << 2);
17818 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17819 }
17820 }
17821 }
17822 }
17823
17824 abuf->written = written;
17825 return vpc;
17826 #undef FLD
17827 }
17828
17829 /* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17830
17831 static SEM_PC
17832 SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17833 {
17834 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17836 int UNUSED written = 0;
17837 IADDR UNUSED pc = abuf->addr;
17838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17839
17840 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17841 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)))) {
17842 {
17843 UQI opval = 2;
17844 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17845 written |= (1 << 4);
17846 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17847 }
17848 } else {
17849 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)))) {
17850 {
17851 UQI opval = 8;
17852 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17853 written |= (1 << 4);
17854 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17855 }
17856 } else {
17857 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)))) {
17858 {
17859 UQI opval = 4;
17860 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17861 written |= (1 << 4);
17862 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17863 }
17864 } else {
17865 {
17866 UQI opval = 1;
17867 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17868 written |= (1 << 4);
17869 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17870 }
17871 }
17872 }
17873 }
17874 }
17875
17876 abuf->written = written;
17877 return vpc;
17878 #undef FLD
17879 }
17880
17881 /* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17882
17883 static SEM_PC
17884 SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17885 {
17886 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
17887 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17888 int UNUSED written = 0;
17889 IADDR UNUSED pc = abuf->addr;
17890 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17891
17892 {
17893 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)))) {
17894 {
17895 UQI opval = 2;
17896 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17897 written |= (1 << 7);
17898 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17899 }
17900 } else {
17901 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)))) {
17902 {
17903 UQI opval = 8;
17904 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17905 written |= (1 << 7);
17906 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17907 }
17908 } else {
17909 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)))) {
17910 {
17911 UQI opval = 4;
17912 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17913 written |= (1 << 7);
17914 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17915 }
17916 } else {
17917 {
17918 UQI opval = 1;
17919 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17920 written |= (1 << 7);
17921 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17922 }
17923 }
17924 }
17925 }
17926 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))))) {
17927 {
17928 UQI opval = 2;
17929 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17930 written |= (1 << 8);
17931 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17932 }
17933 } else {
17934 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))))) {
17935 {
17936 UQI opval = 8;
17937 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17938 written |= (1 << 8);
17939 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17940 }
17941 } else {
17942 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))))) {
17943 {
17944 UQI opval = 4;
17945 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17946 written |= (1 << 8);
17947 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17948 }
17949 } else {
17950 {
17951 UQI opval = 1;
17952 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
17953 written |= (1 << 8);
17954 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17955 }
17956 }
17957 }
17958 }
17959 }
17960
17961 abuf->written = written;
17962 return vpc;
17963 #undef FLD
17964 }
17965
17966 /* fmadds: fmadds$pack $FRi,$FRj,$FRk */
17967
17968 static SEM_PC
17969 SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17970 {
17971 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17972 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17973 int UNUSED written = 0;
17974 IADDR UNUSED pc = abuf->addr;
17975 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17976
17977 {
17978 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
17979 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17980 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17981 }
17982
17983 return vpc;
17984 #undef FLD
17985 }
17986
17987 /* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
17988
17989 static SEM_PC
17990 SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17991 {
17992 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17993 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17994 int UNUSED written = 0;
17995 IADDR UNUSED pc = abuf->addr;
17996 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17997
17998 {
17999 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18000 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18001 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18002 }
18003
18004 return vpc;
18005 #undef FLD
18006 }
18007
18008 /* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18009
18010 static SEM_PC
18011 SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18012 {
18013 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18015 int UNUSED written = 0;
18016 IADDR UNUSED pc = abuf->addr;
18017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18018
18019 {
18020 DF opval = CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj))), GET_H_FR_DOUBLE (FLD (f_FRk)));
18021 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18022 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18023 }
18024
18025 return vpc;
18026 #undef FLD
18027 }
18028
18029 /* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18030
18031 static SEM_PC
18032 SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18033 {
18034 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18035 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18036 int UNUSED written = 0;
18037 IADDR UNUSED pc = abuf->addr;
18038 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18039
18040 {
18041 DF opval = CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj))), GET_H_FR_DOUBLE (FLD (f_FRk)));
18042 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18043 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18044 }
18045
18046 return vpc;
18047 #undef FLD
18048 }
18049
18050 /* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18051
18052 static SEM_PC
18053 SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18054 {
18055 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18056 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18057 int UNUSED written = 0;
18058 IADDR UNUSED pc = abuf->addr;
18059 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18060
18061 {
18062 {
18063 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18064 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18065 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18066 }
18067 {
18068 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1)))), GET_H_FR (((FLD (f_FRk)) + (1))));
18069 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18070 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18071 }
18072 }
18073
18074 return vpc;
18075 #undef FLD
18076 }
18077
18078 /* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18079
18080 static SEM_PC
18081 SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18082 {
18083 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18085 int UNUSED written = 0;
18086 IADDR UNUSED pc = abuf->addr;
18087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18088
18089 {
18090 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18091 {
18092 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18093 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18094 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18095 }
18096 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18097 {
18098 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1)))), GET_H_FR (((FLD (f_FRk)) + (1))));
18099 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18100 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18101 }
18102 }
18103
18104 return vpc;
18105 #undef FLD
18106 }
18107
18108 /* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18109
18110 static SEM_PC
18111 SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18112 {
18113 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18114 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18115 int UNUSED written = 0;
18116 IADDR UNUSED pc = abuf->addr;
18117 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18118
18119 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18120 {
18121 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18122 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18123 written |= (1 << 5);
18124 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18125 }
18126 }
18127
18128 abuf->written = written;
18129 return vpc;
18130 #undef FLD
18131 }
18132
18133 /* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18134
18135 static SEM_PC
18136 SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18137 {
18138 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18140 int UNUSED written = 0;
18141 IADDR UNUSED pc = abuf->addr;
18142 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18143
18144 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18145 {
18146 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18147 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18148 written |= (1 << 5);
18149 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18150 }
18151 }
18152
18153 abuf->written = written;
18154 return vpc;
18155 #undef FLD
18156 }
18157
18158 /* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18159
18160 static SEM_PC
18161 SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18162 {
18163 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18165 int UNUSED written = 0;
18166 IADDR UNUSED pc = abuf->addr;
18167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18168
18169 {
18170 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18171 {
18172 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18173 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18174 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18175 }
18176 }
18177
18178 return vpc;
18179 #undef FLD
18180 }
18181
18182 /* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18183
18184 static SEM_PC
18185 SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18186 {
18187 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18189 int UNUSED written = 0;
18190 IADDR UNUSED pc = abuf->addr;
18191 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18192
18193 {
18194 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18195 {
18196 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18197 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18198 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18199 }
18200 }
18201
18202 return vpc;
18203 #undef FLD
18204 }
18205
18206 /* fmas: fmas$pack $FRi,$FRj,$FRk */
18207
18208 static SEM_PC
18209 SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18210 {
18211 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18213 int UNUSED written = 0;
18214 IADDR UNUSED pc = abuf->addr;
18215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18216
18217 {
18218 {
18219 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18220 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18221 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18222 }
18223 {
18224 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18225 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18226 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18227 }
18228 }
18229
18230 return vpc;
18231 #undef FLD
18232 }
18233
18234 /* fmss: fmss$pack $FRi,$FRj,$FRk */
18235
18236 static SEM_PC
18237 SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18238 {
18239 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18241 int UNUSED written = 0;
18242 IADDR UNUSED pc = abuf->addr;
18243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18244
18245 {
18246 {
18247 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18248 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18249 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18250 }
18251 {
18252 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18253 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18254 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18255 }
18256 }
18257
18258 return vpc;
18259 #undef FLD
18260 }
18261
18262 /* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18263
18264 static SEM_PC
18265 SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18266 {
18267 #define FLD(f) abuf->fields.sfmt_fdmas.f
18268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18269 int UNUSED written = 0;
18270 IADDR UNUSED pc = abuf->addr;
18271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18272
18273 {
18274 {
18275 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18276 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18277 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18278 }
18279 {
18280 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18281 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18282 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18283 }
18284 {
18285 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18286 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18287 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18288 }
18289 {
18290 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18291 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18292 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18293 }
18294 }
18295
18296 return vpc;
18297 #undef FLD
18298 }
18299
18300 /* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18301
18302 static SEM_PC
18303 SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18304 {
18305 #define FLD(f) abuf->fields.sfmt_fdmas.f
18306 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18307 int UNUSED written = 0;
18308 IADDR UNUSED pc = abuf->addr;
18309 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18310
18311 {
18312 {
18313 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18314 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18315 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18316 }
18317 {
18318 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18319 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18320 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18321 }
18322 {
18323 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18324 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18325 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18326 }
18327 {
18328 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18329 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18330 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18331 }
18332 }
18333
18334 return vpc;
18335 #undef FLD
18336 }
18337
18338 /* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18339
18340 static SEM_PC
18341 SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18342 {
18343 #define FLD(f) abuf->fields.sfmt_fdmas.f
18344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18345 int UNUSED written = 0;
18346 IADDR UNUSED pc = abuf->addr;
18347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18348
18349 {
18350 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18351 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18352 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18353 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18354 {
18355 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18356 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18357 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18358 }
18359 {
18360 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18361 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18362 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18363 }
18364 {
18365 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (2))), GET_H_FR (((FLD (f_FRj)) + (2))));
18366 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18367 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18368 }
18369 {
18370 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18371 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18372 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18373 }
18374 }
18375
18376 return vpc;
18377 #undef FLD
18378 }
18379
18380 /* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18381
18382 static SEM_PC
18383 SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18384 {
18385 #define FLD(f) abuf->fields.sfmt_fdmas.f
18386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18387 int UNUSED written = 0;
18388 IADDR UNUSED pc = abuf->addr;
18389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18390
18391 {
18392 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18393 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18394 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18395 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
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->subsf (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 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))));
18408 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (2)), opval);
18409 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18410 }
18411 {
18412 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (3))), GET_H_FR (((FLD (f_FRj)) + (3))));
18413 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (3)), opval);
18414 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18415 }
18416 }
18417
18418 return vpc;
18419 #undef FLD
18420 }
18421
18422 /* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18423
18424 static SEM_PC
18425 SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18426 {
18427 #define FLD(f) abuf->fields.sfmt_cfmas.f
18428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18429 int UNUSED written = 0;
18430 IADDR UNUSED pc = abuf->addr;
18431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18432
18433 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18434 {
18435 {
18436 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18437 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18438 written |= (1 << 9);
18439 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18440 }
18441 {
18442 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18443 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18444 written |= (1 << 10);
18445 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18446 }
18447 }
18448 }
18449
18450 abuf->written = written;
18451 return vpc;
18452 #undef FLD
18453 }
18454
18455 /* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18456
18457 static SEM_PC
18458 SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18459 {
18460 #define FLD(f) abuf->fields.sfmt_cfmas.f
18461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18462 int UNUSED written = 0;
18463 IADDR UNUSED pc = abuf->addr;
18464 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18465
18466 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18467 {
18468 {
18469 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18470 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18471 written |= (1 << 9);
18472 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18473 }
18474 {
18475 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18476 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18477 written |= (1 << 10);
18478 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18479 }
18480 }
18481 }
18482
18483 abuf->written = written;
18484 return vpc;
18485 #undef FLD
18486 }
18487
18488 /* fmad: fmad$pack $FRi,$FRj,$FRk */
18489
18490 static SEM_PC
18491 SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18492 {
18493 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18495 int UNUSED written = 0;
18496 IADDR UNUSED pc = abuf->addr;
18497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18498
18499 {
18500 {
18501 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)))));
18502 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18503 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18504 }
18505 {
18506 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1)))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))))));
18507 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18508 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18509 }
18510 }
18511
18512 return vpc;
18513 #undef FLD
18514 }
18515
18516 /* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18517
18518 static SEM_PC
18519 SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18520 {
18521 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18523 int UNUSED written = 0;
18524 IADDR UNUSED pc = abuf->addr;
18525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18526
18527 {
18528 {
18529 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)))));
18530 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18531 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18532 }
18533 {
18534 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1)))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRj)) + (1))))));
18535 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18536 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18537 }
18538 }
18539
18540 return vpc;
18541 #undef FLD
18542 }
18543
18544 /* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18545
18546 static SEM_PC
18547 SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18548 {
18549 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18551 int UNUSED written = 0;
18552 IADDR UNUSED pc = abuf->addr;
18553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18554
18555 {
18556 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18557 {
18558 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18559 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18560 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18561 }
18562 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18563 {
18564 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18565 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18566 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18567 }
18568 }
18569
18570 return vpc;
18571 #undef FLD
18572 }
18573
18574 /* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18575
18576 static SEM_PC
18577 SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18578 {
18579 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18581 int UNUSED written = 0;
18582 IADDR UNUSED pc = abuf->addr;
18583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18584
18585 {
18586 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18587 {
18588 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18589 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18590 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18591 }
18592 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18593 {
18594 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18595 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18596 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18597 }
18598 }
18599
18600 return vpc;
18601 #undef FLD
18602 }
18603
18604 /* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18605
18606 static SEM_PC
18607 SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18608 {
18609 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18611 int UNUSED written = 0;
18612 IADDR UNUSED pc = abuf->addr;
18613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18614
18615 {
18616 {
18617 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18618 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18619 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18620 }
18621 {
18622 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18623 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18624 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18625 }
18626 }
18627
18628 return vpc;
18629 #undef FLD
18630 }
18631
18632 /* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18633
18634 static SEM_PC
18635 SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18636 {
18637 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18639 int UNUSED written = 0;
18640 IADDR UNUSED pc = abuf->addr;
18641 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18642
18643 {
18644 {
18645 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18646 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18647 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18648 }
18649 {
18650 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18651 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18652 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18653 }
18654 }
18655
18656 return vpc;
18657 #undef FLD
18658 }
18659
18660 /* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18661
18662 static SEM_PC
18663 SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18664 {
18665 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18667 int UNUSED written = 0;
18668 IADDR UNUSED pc = abuf->addr;
18669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18670
18671 {
18672 {
18673 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18674 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18675 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18676 }
18677 {
18678 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18679 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18680 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18681 }
18682 }
18683
18684 return vpc;
18685 #undef FLD
18686 }
18687
18688 /* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18689
18690 static SEM_PC
18691 SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18692 {
18693 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18695 int UNUSED written = 0;
18696 IADDR UNUSED pc = abuf->addr;
18697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18698
18699 {
18700 {
18701 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18702 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18703 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18704 }
18705 {
18706 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18707 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18708 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18709 }
18710 }
18711
18712 return vpc;
18713 #undef FLD
18714 }
18715
18716 /* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18717
18718 static SEM_PC
18719 SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18720 {
18721 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18723 int UNUSED written = 0;
18724 IADDR UNUSED pc = abuf->addr;
18725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18726
18727 {
18728 {
18729 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18730 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18731 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18732 }
18733 {
18734 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18735 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18736 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18737 }
18738 }
18739
18740 return vpc;
18741 #undef FLD
18742 }
18743
18744 /* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18745
18746 static SEM_PC
18747 SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18748 {
18749 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18751 int UNUSED written = 0;
18752 IADDR UNUSED pc = abuf->addr;
18753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18754
18755 {
18756 {
18757 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (((FLD (f_FRj)) + (1))));
18758 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18759 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18760 }
18761 {
18762 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (FLD (f_FRj)));
18763 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18764 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18765 }
18766 }
18767
18768 return vpc;
18769 #undef FLD
18770 }
18771
18772 /* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18773
18774 static SEM_PC
18775 SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18776 {
18777 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18779 int UNUSED written = 0;
18780 IADDR UNUSED pc = abuf->addr;
18781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18782
18783 {
18784 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18785 {
18786 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (((FLD (f_FRj)) + (1))));
18787 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18788 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18789 }
18790 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18791 {
18792 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (FLD (f_FRj)));
18793 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18794 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18795 }
18796 }
18797
18798 return vpc;
18799 #undef FLD
18800 }
18801
18802 /* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18803
18804 static SEM_PC
18805 SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18806 {
18807 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18808 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18809 int UNUSED written = 0;
18810 IADDR UNUSED pc = abuf->addr;
18811 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18812
18813 {
18814 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18815 {
18816 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18817 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18818 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18819 }
18820 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18821 {
18822 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18823 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18824 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18825 }
18826 }
18827
18828 return vpc;
18829 #undef FLD
18830 }
18831
18832 /* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18833
18834 static SEM_PC
18835 SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18836 {
18837 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18838 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18839 int UNUSED written = 0;
18840 IADDR UNUSED pc = abuf->addr;
18841 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18842
18843 {
18844 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18845 {
18846 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18847 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18848 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18849 }
18850 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18851 {
18852 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18853 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18854 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18855 }
18856 }
18857
18858 return vpc;
18859 #undef FLD
18860 }
18861
18862 /* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18863
18864 static SEM_PC
18865 SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18866 {
18867 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18869 int UNUSED written = 0;
18870 IADDR UNUSED pc = abuf->addr;
18871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18872
18873 {
18874 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18875 {
18876 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18877 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18878 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18879 }
18880 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18881 {
18882 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18883 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18884 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18885 }
18886 }
18887
18888 return vpc;
18889 #undef FLD
18890 }
18891
18892 /* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18893
18894 static SEM_PC
18895 SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18896 {
18897 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18899 int UNUSED written = 0;
18900 IADDR UNUSED pc = abuf->addr;
18901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18902
18903 {
18904 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18905 {
18906 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18907 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18908 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18909 }
18910 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18911 {
18912 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18913 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18914 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18915 }
18916 }
18917
18918 return vpc;
18919 #undef FLD
18920 }
18921
18922 /* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18923
18924 static SEM_PC
18925 SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18926 {
18927 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18929 int UNUSED written = 0;
18930 IADDR UNUSED pc = abuf->addr;
18931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18932
18933 {
18934 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18935 {
18936 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18937 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18938 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18939 }
18940 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18941 {
18942 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (((FLD (f_FRi)) + (1))), GET_H_FR (((FLD (f_FRj)) + (1))));
18943 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ((FLD (f_FRk)) + (1)), opval);
18944 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18945 }
18946 }
18947
18948 return vpc;
18949 #undef FLD
18950 }
18951
18952 /* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18953
18954 static SEM_PC
18955 SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18956 {
18957 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
18958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18959 int UNUSED written = 0;
18960 IADDR UNUSED pc = abuf->addr;
18961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18962
18963 {
18964 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18965 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)))) {
18966 {
18967 UQI opval = 2;
18968 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18969 written |= (1 << 8);
18970 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18971 }
18972 } else {
18973 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)))) {
18974 {
18975 UQI opval = 8;
18976 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18977 written |= (1 << 8);
18978 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18979 }
18980 } else {
18981 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)))) {
18982 {
18983 UQI opval = 4;
18984 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18985 written |= (1 << 8);
18986 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18987 }
18988 } else {
18989 {
18990 UQI opval = 1;
18991 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18992 written |= (1 << 8);
18993 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18994 }
18995 }
18996 }
18997 }
18998 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18999 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))))) {
19000 {
19001 UQI opval = 2;
19002 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19003 written |= (1 << 9);
19004 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19005 }
19006 } else {
19007 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))))) {
19008 {
19009 UQI opval = 8;
19010 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19011 written |= (1 << 9);
19012 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19013 }
19014 } else {
19015 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))))) {
19016 {
19017 UQI opval = 4;
19018 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19019 written |= (1 << 9);
19020 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19021 }
19022 } else {
19023 {
19024 UQI opval = 1;
19025 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCi_2)) + (1))]), opval);
19026 written |= (1 << 9);
19027 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19028 }
19029 }
19030 }
19031 }
19032 }
19033
19034 abuf->written = written;
19035 return vpc;
19036 #undef FLD
19037 }
19038
19039 /* mhsetlos: mhsetlos$pack $u12,$FRklo */
19040
19041 static SEM_PC
19042 SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19043 {
19044 #define FLD(f) abuf->fields.sfmt_mhsetlos.f
19045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19046 int UNUSED written = 0;
19047 IADDR UNUSED pc = abuf->addr;
19048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19049
19050 {
19051 UHI opval = FLD (f_u12);
19052 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19053 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19054 }
19055
19056 return vpc;
19057 #undef FLD
19058 }
19059
19060 /* mhsethis: mhsethis$pack $u12,$FRkhi */
19061
19062 static SEM_PC
19063 SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19064 {
19065 #define FLD(f) abuf->fields.sfmt_mhsethis.f
19066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19067 int UNUSED written = 0;
19068 IADDR UNUSED pc = abuf->addr;
19069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19070
19071 {
19072 UHI opval = FLD (f_u12);
19073 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19074 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19075 }
19076
19077 return vpc;
19078 #undef FLD
19079 }
19080
19081 /* mhdsets: mhdsets$pack $u12,$FRintk */
19082
19083 static SEM_PC
19084 SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19085 {
19086 #define FLD(f) abuf->fields.sfmt_mhdsets.f
19087 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19088 int UNUSED written = 0;
19089 IADDR UNUSED pc = abuf->addr;
19090 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19091
19092 {
19093 {
19094 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19095 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19096 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19097 }
19098 {
19099 UHI opval = FLD (f_u12);
19100 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19101 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19102 }
19103 {
19104 UHI opval = FLD (f_u12);
19105 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19106 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19107 }
19108 }
19109
19110 return vpc;
19111 #undef FLD
19112 }
19113
19114 /* mhsetloh: mhsetloh$pack $s5,$FRklo */
19115
19116 static SEM_PC
19117 SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19118 {
19119 #define FLD(f) abuf->fields.sfmt_mhsetloh.f
19120 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19121 int UNUSED written = 0;
19122 IADDR UNUSED pc = abuf->addr;
19123 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19124
19125 {
19126 HI tmp_tmp;
19127 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19128 tmp_tmp = ANDHI (tmp_tmp, 2047);
19129 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19130 {
19131 UHI opval = tmp_tmp;
19132 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19133 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19134 }
19135 }
19136
19137 return vpc;
19138 #undef FLD
19139 }
19140
19141 /* mhsethih: mhsethih$pack $s5,$FRkhi */
19142
19143 static SEM_PC
19144 SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19145 {
19146 #define FLD(f) abuf->fields.sfmt_mhsethih.f
19147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19148 int UNUSED written = 0;
19149 IADDR UNUSED pc = abuf->addr;
19150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19151
19152 {
19153 HI tmp_tmp;
19154 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19155 tmp_tmp = ANDHI (tmp_tmp, 2047);
19156 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19157 {
19158 UHI opval = tmp_tmp;
19159 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19160 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19161 }
19162 }
19163
19164 return vpc;
19165 #undef FLD
19166 }
19167
19168 /* mhdseth: mhdseth$pack $s5,$FRintk */
19169
19170 static SEM_PC
19171 SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19172 {
19173 #define FLD(f) abuf->fields.sfmt_mhdseth.f
19174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19175 int UNUSED written = 0;
19176 IADDR UNUSED pc = abuf->addr;
19177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19178
19179 {
19180 {
19181 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19182 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19183 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19184 }
19185 {
19186 HI tmp_tmp;
19187 tmp_tmp = GET_H_FR_HI (((FLD (f_FRk)) + (0)));
19188 tmp_tmp = ANDHI (tmp_tmp, 2047);
19189 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19190 {
19191 UHI opval = tmp_tmp;
19192 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19193 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19194 }
19195 }
19196 {
19197 HI tmp_tmp;
19198 tmp_tmp = GET_H_FR_LO (((FLD (f_FRk)) + (0)));
19199 tmp_tmp = ANDHI (tmp_tmp, 2047);
19200 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19201 {
19202 UHI opval = tmp_tmp;
19203 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19204 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19205 }
19206 }
19207 }
19208
19209 return vpc;
19210 #undef FLD
19211 }
19212
19213 /* mand: mand$pack $FRinti,$FRintj,$FRintk */
19214
19215 static SEM_PC
19216 SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19217 {
19218 #define FLD(f) abuf->fields.sfmt_mwcut.f
19219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19220 int UNUSED written = 0;
19221 IADDR UNUSED pc = abuf->addr;
19222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19223
19224 {
19225 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19226 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19227 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19228 }
19229
19230 return vpc;
19231 #undef FLD
19232 }
19233
19234 /* mor: mor$pack $FRinti,$FRintj,$FRintk */
19235
19236 static SEM_PC
19237 SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19238 {
19239 #define FLD(f) abuf->fields.sfmt_mwcut.f
19240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19241 int UNUSED written = 0;
19242 IADDR UNUSED pc = abuf->addr;
19243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19244
19245 {
19246 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19247 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19248 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19249 }
19250
19251 return vpc;
19252 #undef FLD
19253 }
19254
19255 /* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19256
19257 static SEM_PC
19258 SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19259 {
19260 #define FLD(f) abuf->fields.sfmt_mwcut.f
19261 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19262 int UNUSED written = 0;
19263 IADDR UNUSED pc = abuf->addr;
19264 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19265
19266 {
19267 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19268 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19269 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19270 }
19271
19272 return vpc;
19273 #undef FLD
19274 }
19275
19276 /* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19277
19278 static SEM_PC
19279 SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19280 {
19281 #define FLD(f) abuf->fields.sfmt_cmand.f
19282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19283 int UNUSED written = 0;
19284 IADDR UNUSED pc = abuf->addr;
19285 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19286
19287 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19288 {
19289 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19290 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19291 written |= (1 << 4);
19292 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19293 }
19294 }
19295
19296 abuf->written = written;
19297 return vpc;
19298 #undef FLD
19299 }
19300
19301 /* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19302
19303 static SEM_PC
19304 SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19305 {
19306 #define FLD(f) abuf->fields.sfmt_cmand.f
19307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19308 int UNUSED written = 0;
19309 IADDR UNUSED pc = abuf->addr;
19310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19311
19312 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19313 {
19314 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19315 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19316 written |= (1 << 4);
19317 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19318 }
19319 }
19320
19321 abuf->written = written;
19322 return vpc;
19323 #undef FLD
19324 }
19325
19326 /* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19327
19328 static SEM_PC
19329 SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19330 {
19331 #define FLD(f) abuf->fields.sfmt_cmand.f
19332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19333 int UNUSED written = 0;
19334 IADDR UNUSED pc = abuf->addr;
19335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19336
19337 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19338 {
19339 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19340 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19341 written |= (1 << 4);
19342 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19343 }
19344 }
19345
19346 abuf->written = written;
19347 return vpc;
19348 #undef FLD
19349 }
19350
19351 /* mnot: mnot$pack $FRintj,$FRintk */
19352
19353 static SEM_PC
19354 SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19355 {
19356 #define FLD(f) abuf->fields.sfmt_mcut.f
19357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19358 int UNUSED written = 0;
19359 IADDR UNUSED pc = abuf->addr;
19360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19361
19362 {
19363 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19364 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19365 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19366 }
19367
19368 return vpc;
19369 #undef FLD
19370 }
19371
19372 /* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19373
19374 static SEM_PC
19375 SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19376 {
19377 #define FLD(f) abuf->fields.sfmt_cmand.f
19378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19379 int UNUSED written = 0;
19380 IADDR UNUSED pc = abuf->addr;
19381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19382
19383 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19384 {
19385 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19386 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19387 written |= (1 << 3);
19388 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19389 }
19390 }
19391
19392 abuf->written = written;
19393 return vpc;
19394 #undef FLD
19395 }
19396
19397 /* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19398
19399 static SEM_PC
19400 SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19401 {
19402 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19404 int UNUSED written = 0;
19405 IADDR UNUSED pc = abuf->addr;
19406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19407
19408 {
19409 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19410 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19411 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19412 }
19413
19414 return vpc;
19415 #undef FLD
19416 }
19417
19418 /* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19419
19420 static SEM_PC
19421 SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19422 {
19423 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19425 int UNUSED written = 0;
19426 IADDR UNUSED pc = abuf->addr;
19427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19428
19429 {
19430 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19431 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19432 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19433 }
19434
19435 return vpc;
19436 #undef FLD
19437 }
19438
19439 /* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19440
19441 static SEM_PC
19442 SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19443 {
19444 #define FLD(f) abuf->fields.sfmt_mwcut.f
19445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19446 int UNUSED written = 0;
19447 IADDR UNUSED pc = abuf->addr;
19448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19449
19450 {
19451 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), GET_H_FR_INT (FLD (f_FRj)));
19452 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19453 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19454 }
19455
19456 return vpc;
19457 #undef FLD
19458 }
19459
19460 /* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19461
19462 static SEM_PC
19463 SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19464 {
19465 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19467 int UNUSED written = 0;
19468 IADDR UNUSED pc = abuf->addr;
19469 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19470
19471 {
19472 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (((FLD (f_FRi)) + (1))), FLD (f_u6));
19473 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19474 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19475 }
19476
19477 return vpc;
19478 #undef FLD
19479 }
19480
19481 /* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19482
19483 static SEM_PC
19484 SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19485 {
19486 #define FLD(f) abuf->fields.sfmt_mcut.f
19487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19488 int UNUSED written = 0;
19489 IADDR UNUSED pc = abuf->addr;
19490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19491
19492 {
19493 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19494 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19495 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19496 }
19497
19498 return vpc;
19499 #undef FLD
19500 }
19501
19502 /* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19503
19504 static SEM_PC
19505 SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19506 {
19507 #define FLD(f) abuf->fields.sfmt_mcuti.f
19508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19509 int UNUSED written = 0;
19510 IADDR UNUSED pc = abuf->addr;
19511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19512
19513 {
19514 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19515 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19516 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19517 }
19518
19519 return vpc;
19520 #undef FLD
19521 }
19522
19523 /* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19524
19525 static SEM_PC
19526 SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19527 {
19528 #define FLD(f) abuf->fields.sfmt_mcut.f
19529 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19530 int UNUSED written = 0;
19531 IADDR UNUSED pc = abuf->addr;
19532 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19533
19534 {
19535 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19536 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19537 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19538 }
19539
19540 return vpc;
19541 #undef FLD
19542 }
19543
19544 /* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19545
19546 static SEM_PC
19547 SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19548 {
19549 #define FLD(f) abuf->fields.sfmt_mcuti.f
19550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19551 int UNUSED written = 0;
19552 IADDR UNUSED pc = abuf->addr;
19553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19554
19555 {
19556 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19557 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19558 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19559 }
19560
19561 return vpc;
19562 #undef FLD
19563 }
19564
19565 /* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19566
19567 static SEM_PC
19568 SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19569 {
19570 #define FLD(f) abuf->fields.sfmt_mdcutssi.f
19571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19572 int UNUSED written = 0;
19573 IADDR UNUSED pc = abuf->addr;
19574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19575
19576 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19577 frvbf_media_acc_not_aligned (current_cpu);
19578 } else {
19579 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19580 frvbf_media_register_not_aligned (current_cpu);
19581 } else {
19582 {
19583 {
19584 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19585 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19586 written |= (1 << 5);
19587 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19588 }
19589 {
19590 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))), FLD (f_s6));
19591 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19592 written |= (1 << 6);
19593 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19594 }
19595 }
19596 }
19597 }
19598
19599 abuf->written = written;
19600 return vpc;
19601 #undef FLD
19602 }
19603
19604 /* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19605
19606 static SEM_PC
19607 SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19608 {
19609 #define FLD(f) abuf->fields.sfmt_mwcut.f
19610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19611 int UNUSED written = 0;
19612 IADDR UNUSED pc = abuf->addr;
19613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19614
19615 {
19616 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19617 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19618 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19619 }
19620
19621 return vpc;
19622 #undef FLD
19623 }
19624
19625 /* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19626
19627 static SEM_PC
19628 SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19629 {
19630 #define FLD(f) abuf->fields.sfmt_msllhi.f
19631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19632 int UNUSED written = 0;
19633 IADDR UNUSED pc = abuf->addr;
19634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19635
19636 {
19637 {
19638 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19639 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19640 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19641 }
19642 {
19643 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19644 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19645 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19646 }
19647 {
19648 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19649 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19650 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19651 }
19652 {
19653 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19654 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19655 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19656 }
19657 }
19658
19659 return vpc;
19660 #undef FLD
19661 }
19662
19663 /* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19664
19665 static SEM_PC
19666 SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19667 {
19668 #define FLD(f) abuf->fields.sfmt_msllhi.f
19669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19670 int UNUSED written = 0;
19671 IADDR UNUSED pc = abuf->addr;
19672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19673
19674 {
19675 {
19676 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19677 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19678 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19679 }
19680 {
19681 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19683 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19684 }
19685 {
19686 UHI opval = SRLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19687 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19688 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19689 }
19690 {
19691 UHI opval = SRLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19692 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19693 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19694 }
19695 }
19696
19697 return vpc;
19698 #undef FLD
19699 }
19700
19701 /* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19702
19703 static SEM_PC
19704 SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19705 {
19706 #define FLD(f) abuf->fields.sfmt_msllhi.f
19707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19708 int UNUSED written = 0;
19709 IADDR UNUSED pc = abuf->addr;
19710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19711
19712 {
19713 {
19714 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19715 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19716 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19717 }
19718 {
19719 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19720 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19721 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19722 }
19723 {
19724 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19725 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19726 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19727 }
19728 {
19729 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
19730 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19731 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19732 }
19733 }
19734
19735 return vpc;
19736 #undef FLD
19737 }
19738
19739 /* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19740
19741 static SEM_PC
19742 SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19743 {
19744 #define FLD(f) abuf->fields.sfmt_mdrotli.f
19745 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19746 int UNUSED written = 0;
19747 IADDR UNUSED pc = abuf->addr;
19748 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19749
19750 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19751 frvbf_media_register_not_aligned (current_cpu);
19752 } else {
19753 {
19754 {
19755 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19756 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19757 written |= (1 << 5);
19758 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19759 }
19760 {
19761 USI opval = ROLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_s6), 31));
19762 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ((FLD (f_FRk)) + (1)), opval);
19763 written |= (1 << 6);
19764 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19765 }
19766 }
19767 }
19768
19769 abuf->written = written;
19770 return vpc;
19771 #undef FLD
19772 }
19773
19774 /* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19775
19776 static SEM_PC
19777 SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19778 {
19779 #define FLD(f) abuf->fields.sfmt_mcplhi.f
19780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19781 int UNUSED written = 0;
19782 IADDR UNUSED pc = abuf->addr;
19783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19784
19785 {
19786 HI tmp_arg1;
19787 HI tmp_arg2;
19788 HI tmp_shift;
19789 {
19790 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19791 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19792 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19793 }
19794 {
19795 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19796 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19797 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19798 }
19799 tmp_shift = ANDSI (FLD (f_u6), 15);
19800 tmp_arg1 = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), tmp_shift);
19801 if (NEHI (tmp_shift, 0)) {
19802 {
19803 tmp_arg2 = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
19804 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19805 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19806 }
19807 }
19808 {
19809 UHI opval = tmp_arg1;
19810 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19811 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19812 }
19813 }
19814
19815 return vpc;
19816 #undef FLD
19817 }
19818
19819 /* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19820
19821 static SEM_PC
19822 SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19823 {
19824 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19826 int UNUSED written = 0;
19827 IADDR UNUSED pc = abuf->addr;
19828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19829
19830 {
19831 SI tmp_tmp;
19832 SI tmp_shift;
19833 tmp_shift = ANDSI (FLD (f_u6), 31);
19834 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19835 if (NESI (tmp_shift, 0)) {
19836 {
19837 SI tmp_tmp1;
19838 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (((FLD (f_FRi)) + (1))), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
19839 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19840 }
19841 }
19842 {
19843 SI opval = tmp_tmp;
19844 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19845 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19846 }
19847 }
19848
19849 return vpc;
19850 #undef FLD
19851 }
19852
19853 /* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19854
19855 static SEM_PC
19856 SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19857 {
19858 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
19859 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19860 int UNUSED written = 0;
19861 IADDR UNUSED pc = abuf->addr;
19862 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19863
19864 {
19865 HI tmp_argihi;
19866 HI tmp_argilo;
19867 HI tmp_argjhi;
19868 HI tmp_argjlo;
19869 {
19870 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19871 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19872 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19873 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19874 }
19875 if (GTHI (tmp_argihi, tmp_argjhi)) {
19876 {
19877 UHI opval = tmp_argjhi;
19878 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19879 written |= (1 << 9);
19880 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19881 }
19882 } else {
19883 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19884 {
19885 UHI opval = INVHI (tmp_argjhi);
19886 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19887 written |= (1 << 9);
19888 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19889 }
19890 } else {
19891 {
19892 UHI opval = tmp_argihi;
19893 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19894 written |= (1 << 9);
19895 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19896 }
19897 }
19898 }
19899 if (GTHI (tmp_argilo, tmp_argjlo)) {
19900 {
19901 UHI opval = tmp_argjlo;
19902 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19903 written |= (1 << 10);
19904 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19905 }
19906 } else {
19907 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19908 {
19909 UHI opval = INVHI (tmp_argjlo);
19910 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19911 written |= (1 << 10);
19912 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19913 }
19914 } else {
19915 {
19916 UHI opval = tmp_argilo;
19917 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19918 written |= (1 << 10);
19919 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19920 }
19921 }
19922 }
19923 }
19924
19925 abuf->written = written;
19926 return vpc;
19927 #undef FLD
19928 }
19929
19930 /* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19931
19932 static SEM_PC
19933 SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19934 {
19935 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19937 int UNUSED written = 0;
19938 IADDR UNUSED pc = abuf->addr;
19939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19940
19941 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19942 frvbf_media_register_not_aligned (current_cpu);
19943 } else {
19944 {
19945 HI tmp_argihi;
19946 HI tmp_argilo;
19947 HI tmp_argjhi;
19948 HI tmp_argjlo;
19949 {
19950 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19951 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19952 written |= (1 << 14);
19953 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19954 }
19955 {
19956 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19957 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19958 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19959 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19960 }
19961 if (GTHI (tmp_argihi, tmp_argjhi)) {
19962 {
19963 UHI opval = tmp_argjhi;
19964 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19965 written |= (1 << 15);
19966 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19967 }
19968 } else {
19969 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19970 {
19971 UHI opval = INVHI (tmp_argjhi);
19972 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19973 written |= (1 << 15);
19974 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19975 }
19976 } else {
19977 {
19978 UHI opval = tmp_argihi;
19979 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
19980 written |= (1 << 15);
19981 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19982 }
19983 }
19984 }
19985 if (GTHI (tmp_argilo, tmp_argjlo)) {
19986 {
19987 UHI opval = tmp_argjlo;
19988 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19989 written |= (1 << 17);
19990 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19991 }
19992 } else {
19993 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19994 {
19995 UHI opval = INVHI (tmp_argjlo);
19996 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
19997 written |= (1 << 17);
19998 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19999 }
20000 } else {
20001 {
20002 UHI opval = tmp_argilo;
20003 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20004 written |= (1 << 17);
20005 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20006 }
20007 }
20008 }
20009 {
20010 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20011 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20012 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20013 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20014 }
20015 if (GTHI (tmp_argihi, tmp_argjhi)) {
20016 {
20017 UHI opval = tmp_argjhi;
20018 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20019 written |= (1 << 16);
20020 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20021 }
20022 } else {
20023 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20024 {
20025 UHI opval = INVHI (tmp_argjhi);
20026 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20027 written |= (1 << 16);
20028 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20029 }
20030 } else {
20031 {
20032 UHI opval = tmp_argihi;
20033 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
20034 written |= (1 << 16);
20035 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20036 }
20037 }
20038 }
20039 if (GTHI (tmp_argilo, tmp_argjlo)) {
20040 {
20041 UHI opval = tmp_argjlo;
20042 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20043 written |= (1 << 18);
20044 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20045 }
20046 } else {
20047 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20048 {
20049 UHI opval = INVHI (tmp_argjlo);
20050 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20051 written |= (1 << 18);
20052 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20053 }
20054 } else {
20055 {
20056 UHI opval = tmp_argilo;
20057 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
20058 written |= (1 << 18);
20059 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20060 }
20061 }
20062 }
20063 }
20064 }
20065
20066 abuf->written = written;
20067 return vpc;
20068 #undef FLD
20069 }
20070
20071 /* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20072
20073 static SEM_PC
20074 SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20075 {
20076 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20077 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20078 int UNUSED written = 0;
20079 IADDR UNUSED pc = abuf->addr;
20080 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20081
20082 {
20083 UHI tmp_argihi;
20084 UHI tmp_argilo;
20085 UHI tmp_argjhi;
20086 UHI tmp_argjlo;
20087 {
20088 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20089 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20090 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20091 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20092 }
20093 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20094 {
20095 UHI opval = tmp_argjhi;
20096 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20097 written |= (1 << 9);
20098 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20099 }
20100 } else {
20101 {
20102 UHI opval = tmp_argihi;
20103 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20104 written |= (1 << 9);
20105 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20106 }
20107 }
20108 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20109 {
20110 UHI opval = tmp_argjlo;
20111 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20112 written |= (1 << 10);
20113 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20114 }
20115 } else {
20116 {
20117 UHI opval = tmp_argilo;
20118 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20119 written |= (1 << 10);
20120 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20121 }
20122 }
20123 }
20124
20125 abuf->written = written;
20126 return vpc;
20127 #undef FLD
20128 }
20129
20130 /* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20131
20132 static SEM_PC
20133 SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20134 {
20135 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20137 int UNUSED written = 0;
20138 IADDR UNUSED pc = abuf->addr;
20139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20140
20141 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20142 frvbf_media_cr_not_aligned (current_cpu);
20143 } else {
20144 {
20145 HI tmp_argihi;
20146 HI tmp_argilo;
20147 HI tmp_argjhi;
20148 HI tmp_argjlo;
20149 {
20150 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20151 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20152 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20153 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20154 }
20155 if (GTHI (tmp_argihi, tmp_argjhi)) {
20156 {
20157 UQI opval = 2;
20158 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20159 written |= (1 << 9);
20160 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20161 }
20162 } else {
20163 if (EQHI (tmp_argihi, tmp_argjhi)) {
20164 {
20165 UQI opval = 8;
20166 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20167 written |= (1 << 9);
20168 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20169 }
20170 } else {
20171 if (LTHI (tmp_argihi, tmp_argjhi)) {
20172 {
20173 UQI opval = 4;
20174 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20175 written |= (1 << 9);
20176 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20177 }
20178 } else {
20179 {
20180 UQI opval = 1;
20181 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20182 written |= (1 << 9);
20183 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20184 }
20185 }
20186 }
20187 }
20188 if (GTHI (tmp_argilo, tmp_argjlo)) {
20189 {
20190 UQI opval = 2;
20191 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20192 written |= (1 << 10);
20193 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20194 }
20195 } else {
20196 if (EQHI (tmp_argilo, tmp_argjlo)) {
20197 {
20198 UQI opval = 8;
20199 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20200 written |= (1 << 10);
20201 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20202 }
20203 } else {
20204 if (LTHI (tmp_argilo, tmp_argjlo)) {
20205 {
20206 UQI opval = 4;
20207 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20208 written |= (1 << 10);
20209 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20210 }
20211 } else {
20212 {
20213 UQI opval = 1;
20214 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20215 written |= (1 << 10);
20216 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20217 }
20218 }
20219 }
20220 }
20221 }
20222 }
20223
20224 abuf->written = written;
20225 return vpc;
20226 #undef FLD
20227 }
20228
20229 /* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20230
20231 static SEM_PC
20232 SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20233 {
20234 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20235 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20236 int UNUSED written = 0;
20237 IADDR UNUSED pc = abuf->addr;
20238 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20239
20240 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20241 frvbf_media_cr_not_aligned (current_cpu);
20242 } else {
20243 {
20244 UHI tmp_argihi;
20245 UHI tmp_argilo;
20246 UHI tmp_argjhi;
20247 UHI tmp_argjlo;
20248 {
20249 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20250 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20251 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20252 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20253 }
20254 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20255 {
20256 UQI opval = 2;
20257 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20258 written |= (1 << 9);
20259 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20260 }
20261 } else {
20262 if (EQHI (tmp_argihi, tmp_argjhi)) {
20263 {
20264 UQI opval = 8;
20265 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20266 written |= (1 << 9);
20267 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20268 }
20269 } else {
20270 if (LTUHI (tmp_argihi, tmp_argjhi)) {
20271 {
20272 UQI opval = 4;
20273 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20274 written |= (1 << 9);
20275 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20276 }
20277 } else {
20278 {
20279 UQI opval = 1;
20280 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20281 written |= (1 << 9);
20282 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20283 }
20284 }
20285 }
20286 }
20287 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20288 {
20289 UQI opval = 2;
20290 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20291 written |= (1 << 10);
20292 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20293 }
20294 } else {
20295 if (EQHI (tmp_argilo, tmp_argjlo)) {
20296 {
20297 UQI opval = 8;
20298 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20299 written |= (1 << 10);
20300 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20301 }
20302 } else {
20303 if (LTUHI (tmp_argilo, tmp_argjlo)) {
20304 {
20305 UQI opval = 4;
20306 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20307 written |= (1 << 10);
20308 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20309 }
20310 } else {
20311 {
20312 UQI opval = 1;
20313 sim_queue_qi_write (current_cpu, & CPU (h_fccr[((FLD (f_FCCk)) + (1))]), opval);
20314 written |= (1 << 10);
20315 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20316 }
20317 }
20318 }
20319 }
20320 }
20321 }
20322
20323 abuf->written = written;
20324 return vpc;
20325 #undef FLD
20326 }
20327
20328 /* mabshs: mabshs$pack $FRintj,$FRintk */
20329
20330 static SEM_PC
20331 SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20332 {
20333 #define FLD(f) abuf->fields.sfmt_mabshs.f
20334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20335 int UNUSED written = 0;
20336 IADDR UNUSED pc = abuf->addr;
20337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20338
20339 {
20340 HI tmp_arghi;
20341 HI tmp_arglo;
20342 {
20343 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20344 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20345 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20346 }
20347 {
20348 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20349 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20350 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20351 }
20352 tmp_arghi = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
20353 tmp_arglo = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
20354 if (GTDI (ABSHI (tmp_arghi), 32767)) {
20355 {
20356 {
20357 UHI opval = 32767;
20358 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20359 written |= (1 << 8);
20360 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20361 }
20362 frvbf_media_overflow (current_cpu, 8);
20363 }
20364 } else {
20365 if (LTDI (ABSHI (tmp_arghi), -32768)) {
20366 {
20367 {
20368 UHI opval = -32768;
20369 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20370 written |= (1 << 8);
20371 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20372 }
20373 frvbf_media_overflow (current_cpu, 8);
20374 }
20375 } else {
20376 {
20377 UHI opval = ABSHI (tmp_arghi);
20378 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20379 written |= (1 << 8);
20380 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20381 }
20382 }
20383 }
20384 if (GTDI (ABSHI (tmp_arglo), 32767)) {
20385 {
20386 {
20387 UHI opval = 32767;
20388 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20389 written |= (1 << 9);
20390 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20391 }
20392 frvbf_media_overflow (current_cpu, 4);
20393 }
20394 } else {
20395 if (LTDI (ABSHI (tmp_arglo), -32768)) {
20396 {
20397 {
20398 UHI opval = -32768;
20399 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20400 written |= (1 << 9);
20401 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20402 }
20403 frvbf_media_overflow (current_cpu, 4);
20404 }
20405 } else {
20406 {
20407 UHI opval = ABSHI (tmp_arglo);
20408 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20409 written |= (1 << 9);
20410 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20411 }
20412 }
20413 }
20414 }
20415
20416 abuf->written = written;
20417 return vpc;
20418 #undef FLD
20419 }
20420
20421 /* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20422
20423 static SEM_PC
20424 SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20425 {
20426 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20427 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20428 int UNUSED written = 0;
20429 IADDR UNUSED pc = abuf->addr;
20430 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20431
20432 {
20433 HI tmp_argihi;
20434 HI tmp_argilo;
20435 HI tmp_argjhi;
20436 HI tmp_argjlo;
20437 {
20438 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20439 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20440 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20441 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20442 }
20443 {
20444 DI tmp_tmp;
20445 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20446 if (GTDI (tmp_tmp, 32767)) {
20447 {
20448 {
20449 UHI opval = 32767;
20450 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20451 written |= (1 << 9);
20452 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20453 }
20454 frvbf_media_overflow (current_cpu, 8);
20455 }
20456 } else {
20457 if (LTDI (tmp_tmp, -32768)) {
20458 {
20459 {
20460 UHI opval = -32768;
20461 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20462 written |= (1 << 9);
20463 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20464 }
20465 frvbf_media_overflow (current_cpu, 8);
20466 }
20467 } else {
20468 {
20469 UHI opval = tmp_tmp;
20470 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20471 written |= (1 << 9);
20472 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20473 }
20474 }
20475 }
20476 }
20477 {
20478 DI tmp_tmp;
20479 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20480 if (GTDI (tmp_tmp, 32767)) {
20481 {
20482 {
20483 UHI opval = 32767;
20484 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20485 written |= (1 << 10);
20486 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20487 }
20488 frvbf_media_overflow (current_cpu, 4);
20489 }
20490 } else {
20491 if (LTDI (tmp_tmp, -32768)) {
20492 {
20493 {
20494 UHI opval = -32768;
20495 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20496 written |= (1 << 10);
20497 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20498 }
20499 frvbf_media_overflow (current_cpu, 4);
20500 }
20501 } else {
20502 {
20503 UHI opval = tmp_tmp;
20504 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20505 written |= (1 << 10);
20506 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20507 }
20508 }
20509 }
20510 }
20511 }
20512
20513 abuf->written = written;
20514 return vpc;
20515 #undef FLD
20516 }
20517
20518 /* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20519
20520 static SEM_PC
20521 SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20522 {
20523 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20524 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20525 int UNUSED written = 0;
20526 IADDR UNUSED pc = abuf->addr;
20527 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20528
20529 {
20530 UHI tmp_argihi;
20531 UHI tmp_argilo;
20532 UHI tmp_argjhi;
20533 UHI tmp_argjlo;
20534 {
20535 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20536 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20537 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20538 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20539 }
20540 {
20541 DI tmp_tmp;
20542 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20543 if (GTDI (tmp_tmp, 65535)) {
20544 {
20545 {
20546 UHI opval = 65535;
20547 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20548 written |= (1 << 9);
20549 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20550 }
20551 frvbf_media_overflow (current_cpu, 8);
20552 }
20553 } else {
20554 if (LTDI (tmp_tmp, 0)) {
20555 {
20556 {
20557 UHI opval = 0;
20558 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20559 written |= (1 << 9);
20560 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20561 }
20562 frvbf_media_overflow (current_cpu, 8);
20563 }
20564 } else {
20565 {
20566 UHI opval = tmp_tmp;
20567 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20568 written |= (1 << 9);
20569 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20570 }
20571 }
20572 }
20573 }
20574 {
20575 DI tmp_tmp;
20576 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20577 if (GTDI (tmp_tmp, 65535)) {
20578 {
20579 {
20580 UHI opval = 65535;
20581 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20582 written |= (1 << 10);
20583 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20584 }
20585 frvbf_media_overflow (current_cpu, 4);
20586 }
20587 } else {
20588 if (LTDI (tmp_tmp, 0)) {
20589 {
20590 {
20591 UHI opval = 0;
20592 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20593 written |= (1 << 10);
20594 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20595 }
20596 frvbf_media_overflow (current_cpu, 4);
20597 }
20598 } else {
20599 {
20600 UHI opval = tmp_tmp;
20601 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20602 written |= (1 << 10);
20603 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20604 }
20605 }
20606 }
20607 }
20608 }
20609
20610 abuf->written = written;
20611 return vpc;
20612 #undef FLD
20613 }
20614
20615 /* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20616
20617 static SEM_PC
20618 SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20619 {
20620 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20622 int UNUSED written = 0;
20623 IADDR UNUSED pc = abuf->addr;
20624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20625
20626 {
20627 HI tmp_argihi;
20628 HI tmp_argilo;
20629 HI tmp_argjhi;
20630 HI tmp_argjlo;
20631 {
20632 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20633 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20634 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20635 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20636 }
20637 {
20638 DI tmp_tmp;
20639 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20640 if (GTDI (tmp_tmp, 32767)) {
20641 {
20642 {
20643 UHI opval = 32767;
20644 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20645 written |= (1 << 9);
20646 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20647 }
20648 frvbf_media_overflow (current_cpu, 8);
20649 }
20650 } else {
20651 if (LTDI (tmp_tmp, -32768)) {
20652 {
20653 {
20654 UHI opval = -32768;
20655 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20656 written |= (1 << 9);
20657 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20658 }
20659 frvbf_media_overflow (current_cpu, 8);
20660 }
20661 } else {
20662 {
20663 UHI opval = tmp_tmp;
20664 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20665 written |= (1 << 9);
20666 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20667 }
20668 }
20669 }
20670 }
20671 {
20672 DI tmp_tmp;
20673 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20674 if (GTDI (tmp_tmp, 32767)) {
20675 {
20676 {
20677 UHI opval = 32767;
20678 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20679 written |= (1 << 10);
20680 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20681 }
20682 frvbf_media_overflow (current_cpu, 4);
20683 }
20684 } else {
20685 if (LTDI (tmp_tmp, -32768)) {
20686 {
20687 {
20688 UHI opval = -32768;
20689 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20690 written |= (1 << 10);
20691 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20692 }
20693 frvbf_media_overflow (current_cpu, 4);
20694 }
20695 } else {
20696 {
20697 UHI opval = tmp_tmp;
20698 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20699 written |= (1 << 10);
20700 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20701 }
20702 }
20703 }
20704 }
20705 }
20706
20707 abuf->written = written;
20708 return vpc;
20709 #undef FLD
20710 }
20711
20712 /* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20713
20714 static SEM_PC
20715 SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20716 {
20717 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20719 int UNUSED written = 0;
20720 IADDR UNUSED pc = abuf->addr;
20721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20722
20723 {
20724 UHI tmp_argihi;
20725 UHI tmp_argilo;
20726 UHI tmp_argjhi;
20727 UHI tmp_argjlo;
20728 {
20729 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20730 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20731 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20732 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20733 }
20734 {
20735 DI tmp_tmp;
20736 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
20737 if (GTDI (tmp_tmp, 65535)) {
20738 {
20739 {
20740 UHI opval = 65535;
20741 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20742 written |= (1 << 9);
20743 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20744 }
20745 frvbf_media_overflow (current_cpu, 8);
20746 }
20747 } else {
20748 if (LTDI (tmp_tmp, 0)) {
20749 {
20750 {
20751 UHI opval = 0;
20752 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20753 written |= (1 << 9);
20754 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20755 }
20756 frvbf_media_overflow (current_cpu, 8);
20757 }
20758 } else {
20759 {
20760 UHI opval = tmp_tmp;
20761 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20762 written |= (1 << 9);
20763 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20764 }
20765 }
20766 }
20767 }
20768 {
20769 DI tmp_tmp;
20770 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
20771 if (GTDI (tmp_tmp, 65535)) {
20772 {
20773 {
20774 UHI opval = 65535;
20775 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20776 written |= (1 << 10);
20777 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20778 }
20779 frvbf_media_overflow (current_cpu, 4);
20780 }
20781 } else {
20782 if (LTDI (tmp_tmp, 0)) {
20783 {
20784 {
20785 UHI opval = 0;
20786 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20787 written |= (1 << 10);
20788 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20789 }
20790 frvbf_media_overflow (current_cpu, 4);
20791 }
20792 } else {
20793 {
20794 UHI opval = tmp_tmp;
20795 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20796 written |= (1 << 10);
20797 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20798 }
20799 }
20800 }
20801 }
20802 }
20803
20804 abuf->written = written;
20805 return vpc;
20806 #undef FLD
20807 }
20808
20809 /* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20810
20811 static SEM_PC
20812 SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20813 {
20814 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20815 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20816 int UNUSED written = 0;
20817 IADDR UNUSED pc = abuf->addr;
20818 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20819
20820 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20821 {
20822 HI tmp_argihi;
20823 HI tmp_argilo;
20824 HI tmp_argjhi;
20825 HI tmp_argjlo;
20826 {
20827 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20828 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20829 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20830 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20831 }
20832 {
20833 DI tmp_tmp;
20834 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20835 if (GTDI (tmp_tmp, 32767)) {
20836 {
20837 {
20838 UHI opval = 32767;
20839 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20840 written |= (1 << 11);
20841 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20842 }
20843 frvbf_media_overflow (current_cpu, 8);
20844 }
20845 } else {
20846 if (LTDI (tmp_tmp, -32768)) {
20847 {
20848 {
20849 UHI opval = -32768;
20850 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20851 written |= (1 << 11);
20852 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20853 }
20854 frvbf_media_overflow (current_cpu, 8);
20855 }
20856 } else {
20857 {
20858 UHI opval = tmp_tmp;
20859 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20860 written |= (1 << 11);
20861 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20862 }
20863 }
20864 }
20865 }
20866 {
20867 DI tmp_tmp;
20868 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20869 if (GTDI (tmp_tmp, 32767)) {
20870 {
20871 {
20872 UHI opval = 32767;
20873 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20874 written |= (1 << 12);
20875 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20876 }
20877 frvbf_media_overflow (current_cpu, 4);
20878 }
20879 } else {
20880 if (LTDI (tmp_tmp, -32768)) {
20881 {
20882 {
20883 UHI opval = -32768;
20884 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20885 written |= (1 << 12);
20886 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20887 }
20888 frvbf_media_overflow (current_cpu, 4);
20889 }
20890 } else {
20891 {
20892 UHI opval = tmp_tmp;
20893 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20894 written |= (1 << 12);
20895 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20896 }
20897 }
20898 }
20899 }
20900 }
20901 }
20902
20903 abuf->written = written;
20904 return vpc;
20905 #undef FLD
20906 }
20907
20908 /* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20909
20910 static SEM_PC
20911 SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20912 {
20913 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20915 int UNUSED written = 0;
20916 IADDR UNUSED pc = abuf->addr;
20917 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20918
20919 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20920 {
20921 UHI tmp_argihi;
20922 UHI tmp_argilo;
20923 UHI tmp_argjhi;
20924 UHI tmp_argjlo;
20925 {
20926 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20927 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20928 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20929 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20930 }
20931 {
20932 DI tmp_tmp;
20933 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
20934 if (GTDI (tmp_tmp, 65535)) {
20935 {
20936 {
20937 UHI opval = 65535;
20938 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20939 written |= (1 << 11);
20940 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20941 }
20942 frvbf_media_overflow (current_cpu, 8);
20943 }
20944 } else {
20945 if (LTDI (tmp_tmp, 0)) {
20946 {
20947 {
20948 UHI opval = 0;
20949 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20950 written |= (1 << 11);
20951 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20952 }
20953 frvbf_media_overflow (current_cpu, 8);
20954 }
20955 } else {
20956 {
20957 UHI opval = tmp_tmp;
20958 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
20959 written |= (1 << 11);
20960 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20961 }
20962 }
20963 }
20964 }
20965 {
20966 DI tmp_tmp;
20967 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
20968 if (GTDI (tmp_tmp, 65535)) {
20969 {
20970 {
20971 UHI opval = 65535;
20972 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20973 written |= (1 << 12);
20974 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20975 }
20976 frvbf_media_overflow (current_cpu, 4);
20977 }
20978 } else {
20979 if (LTDI (tmp_tmp, 0)) {
20980 {
20981 {
20982 UHI opval = 0;
20983 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20984 written |= (1 << 12);
20985 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20986 }
20987 frvbf_media_overflow (current_cpu, 4);
20988 }
20989 } else {
20990 {
20991 UHI opval = tmp_tmp;
20992 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
20993 written |= (1 << 12);
20994 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20995 }
20996 }
20997 }
20998 }
20999 }
21000 }
21001
21002 abuf->written = written;
21003 return vpc;
21004 #undef FLD
21005 }
21006
21007 /* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21008
21009 static SEM_PC
21010 SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21011 {
21012 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21013 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21014 int UNUSED written = 0;
21015 IADDR UNUSED pc = abuf->addr;
21016 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21017
21018 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21019 {
21020 HI tmp_argihi;
21021 HI tmp_argilo;
21022 HI tmp_argjhi;
21023 HI tmp_argjlo;
21024 {
21025 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21026 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21027 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21028 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21029 }
21030 {
21031 DI tmp_tmp;
21032 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21033 if (GTDI (tmp_tmp, 32767)) {
21034 {
21035 {
21036 UHI opval = 32767;
21037 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21038 written |= (1 << 11);
21039 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21040 }
21041 frvbf_media_overflow (current_cpu, 8);
21042 }
21043 } else {
21044 if (LTDI (tmp_tmp, -32768)) {
21045 {
21046 {
21047 UHI opval = -32768;
21048 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21049 written |= (1 << 11);
21050 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21051 }
21052 frvbf_media_overflow (current_cpu, 8);
21053 }
21054 } else {
21055 {
21056 UHI opval = tmp_tmp;
21057 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21058 written |= (1 << 11);
21059 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21060 }
21061 }
21062 }
21063 }
21064 {
21065 DI tmp_tmp;
21066 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21067 if (GTDI (tmp_tmp, 32767)) {
21068 {
21069 {
21070 UHI opval = 32767;
21071 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21072 written |= (1 << 12);
21073 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21074 }
21075 frvbf_media_overflow (current_cpu, 4);
21076 }
21077 } else {
21078 if (LTDI (tmp_tmp, -32768)) {
21079 {
21080 {
21081 UHI opval = -32768;
21082 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21083 written |= (1 << 12);
21084 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21085 }
21086 frvbf_media_overflow (current_cpu, 4);
21087 }
21088 } else {
21089 {
21090 UHI opval = tmp_tmp;
21091 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21092 written |= (1 << 12);
21093 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21094 }
21095 }
21096 }
21097 }
21098 }
21099 }
21100
21101 abuf->written = written;
21102 return vpc;
21103 #undef FLD
21104 }
21105
21106 /* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21107
21108 static SEM_PC
21109 SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21110 {
21111 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21113 int UNUSED written = 0;
21114 IADDR UNUSED pc = abuf->addr;
21115 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21116
21117 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21118 {
21119 UHI tmp_argihi;
21120 UHI tmp_argilo;
21121 UHI tmp_argjhi;
21122 UHI tmp_argjlo;
21123 {
21124 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21125 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21126 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21127 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21128 }
21129 {
21130 DI tmp_tmp;
21131 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21132 if (GTDI (tmp_tmp, 65535)) {
21133 {
21134 {
21135 UHI opval = 65535;
21136 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21137 written |= (1 << 11);
21138 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21139 }
21140 frvbf_media_overflow (current_cpu, 8);
21141 }
21142 } else {
21143 if (LTDI (tmp_tmp, 0)) {
21144 {
21145 {
21146 UHI opval = 0;
21147 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21148 written |= (1 << 11);
21149 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21150 }
21151 frvbf_media_overflow (current_cpu, 8);
21152 }
21153 } else {
21154 {
21155 UHI opval = tmp_tmp;
21156 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21157 written |= (1 << 11);
21158 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21159 }
21160 }
21161 }
21162 }
21163 {
21164 DI tmp_tmp;
21165 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21166 if (GTDI (tmp_tmp, 65535)) {
21167 {
21168 {
21169 UHI opval = 65535;
21170 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21171 written |= (1 << 12);
21172 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21173 }
21174 frvbf_media_overflow (current_cpu, 4);
21175 }
21176 } else {
21177 if (LTDI (tmp_tmp, 0)) {
21178 {
21179 {
21180 UHI opval = 0;
21181 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21182 written |= (1 << 12);
21183 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21184 }
21185 frvbf_media_overflow (current_cpu, 4);
21186 }
21187 } else {
21188 {
21189 UHI opval = tmp_tmp;
21190 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21191 written |= (1 << 12);
21192 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21193 }
21194 }
21195 }
21196 }
21197 }
21198 }
21199
21200 abuf->written = written;
21201 return vpc;
21202 #undef FLD
21203 }
21204
21205 /* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21206
21207 static SEM_PC
21208 SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21209 {
21210 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21212 int UNUSED written = 0;
21213 IADDR UNUSED pc = abuf->addr;
21214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21215
21216 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21217 frvbf_media_register_not_aligned (current_cpu);
21218 } else {
21219 {
21220 HI tmp_argihi;
21221 HI tmp_argilo;
21222 HI tmp_argjhi;
21223 HI tmp_argjlo;
21224 {
21225 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21226 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21227 written |= (1 << 14);
21228 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21229 }
21230 {
21231 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21232 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21233 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21234 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21235 }
21236 {
21237 DI tmp_tmp;
21238 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21239 if (GTDI (tmp_tmp, 32767)) {
21240 {
21241 {
21242 UHI opval = 32767;
21243 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21244 written |= (1 << 15);
21245 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21246 }
21247 frvbf_media_overflow (current_cpu, 8);
21248 }
21249 } else {
21250 if (LTDI (tmp_tmp, -32768)) {
21251 {
21252 {
21253 UHI opval = -32768;
21254 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21255 written |= (1 << 15);
21256 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21257 }
21258 frvbf_media_overflow (current_cpu, 8);
21259 }
21260 } else {
21261 {
21262 UHI opval = tmp_tmp;
21263 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21264 written |= (1 << 15);
21265 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21266 }
21267 }
21268 }
21269 }
21270 {
21271 DI tmp_tmp;
21272 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21273 if (GTDI (tmp_tmp, 32767)) {
21274 {
21275 {
21276 UHI opval = 32767;
21277 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21278 written |= (1 << 17);
21279 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21280 }
21281 frvbf_media_overflow (current_cpu, 4);
21282 }
21283 } else {
21284 if (LTDI (tmp_tmp, -32768)) {
21285 {
21286 {
21287 UHI opval = -32768;
21288 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21289 written |= (1 << 17);
21290 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21291 }
21292 frvbf_media_overflow (current_cpu, 4);
21293 }
21294 } else {
21295 {
21296 UHI opval = tmp_tmp;
21297 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21298 written |= (1 << 17);
21299 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21300 }
21301 }
21302 }
21303 }
21304 {
21305 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21306 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21307 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21308 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21309 }
21310 {
21311 DI tmp_tmp;
21312 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21313 if (GTDI (tmp_tmp, 32767)) {
21314 {
21315 {
21316 UHI opval = 32767;
21317 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21318 written |= (1 << 16);
21319 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21320 }
21321 frvbf_media_overflow (current_cpu, 2);
21322 }
21323 } else {
21324 if (LTDI (tmp_tmp, -32768)) {
21325 {
21326 {
21327 UHI opval = -32768;
21328 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21329 written |= (1 << 16);
21330 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21331 }
21332 frvbf_media_overflow (current_cpu, 2);
21333 }
21334 } else {
21335 {
21336 UHI opval = tmp_tmp;
21337 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21338 written |= (1 << 16);
21339 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21340 }
21341 }
21342 }
21343 }
21344 {
21345 DI tmp_tmp;
21346 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21347 if (GTDI (tmp_tmp, 32767)) {
21348 {
21349 {
21350 UHI opval = 32767;
21351 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21352 written |= (1 << 18);
21353 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21354 }
21355 frvbf_media_overflow (current_cpu, 1);
21356 }
21357 } else {
21358 if (LTDI (tmp_tmp, -32768)) {
21359 {
21360 {
21361 UHI opval = -32768;
21362 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21363 written |= (1 << 18);
21364 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21365 }
21366 frvbf_media_overflow (current_cpu, 1);
21367 }
21368 } else {
21369 {
21370 UHI opval = tmp_tmp;
21371 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21372 written |= (1 << 18);
21373 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21374 }
21375 }
21376 }
21377 }
21378 }
21379 }
21380
21381 abuf->written = written;
21382 return vpc;
21383 #undef FLD
21384 }
21385
21386 /* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21387
21388 static SEM_PC
21389 SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21390 {
21391 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21393 int UNUSED written = 0;
21394 IADDR UNUSED pc = abuf->addr;
21395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21396
21397 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21398 frvbf_media_register_not_aligned (current_cpu);
21399 } else {
21400 {
21401 UHI tmp_argihi;
21402 UHI tmp_argilo;
21403 UHI tmp_argjhi;
21404 UHI tmp_argjlo;
21405 {
21406 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21407 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21408 written |= (1 << 14);
21409 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21410 }
21411 {
21412 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21413 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21414 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21415 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21416 }
21417 {
21418 DI tmp_tmp;
21419 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21420 if (GTDI (tmp_tmp, 65535)) {
21421 {
21422 {
21423 UHI opval = 65535;
21424 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21425 written |= (1 << 15);
21426 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21427 }
21428 frvbf_media_overflow (current_cpu, 8);
21429 }
21430 } else {
21431 if (LTDI (tmp_tmp, 0)) {
21432 {
21433 {
21434 UHI opval = 0;
21435 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21436 written |= (1 << 15);
21437 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21438 }
21439 frvbf_media_overflow (current_cpu, 8);
21440 }
21441 } else {
21442 {
21443 UHI opval = tmp_tmp;
21444 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21445 written |= (1 << 15);
21446 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21447 }
21448 }
21449 }
21450 }
21451 {
21452 DI tmp_tmp;
21453 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21454 if (GTDI (tmp_tmp, 65535)) {
21455 {
21456 {
21457 UHI opval = 65535;
21458 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21459 written |= (1 << 17);
21460 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21461 }
21462 frvbf_media_overflow (current_cpu, 4);
21463 }
21464 } else {
21465 if (LTDI (tmp_tmp, 0)) {
21466 {
21467 {
21468 UHI opval = 0;
21469 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21470 written |= (1 << 17);
21471 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21472 }
21473 frvbf_media_overflow (current_cpu, 4);
21474 }
21475 } else {
21476 {
21477 UHI opval = tmp_tmp;
21478 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21479 written |= (1 << 17);
21480 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21481 }
21482 }
21483 }
21484 }
21485 {
21486 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21487 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21488 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21489 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21490 }
21491 {
21492 DI tmp_tmp;
21493 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21494 if (GTDI (tmp_tmp, 65535)) {
21495 {
21496 {
21497 UHI opval = 65535;
21498 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21499 written |= (1 << 16);
21500 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21501 }
21502 frvbf_media_overflow (current_cpu, 2);
21503 }
21504 } else {
21505 if (LTDI (tmp_tmp, 0)) {
21506 {
21507 {
21508 UHI opval = 0;
21509 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21510 written |= (1 << 16);
21511 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21512 }
21513 frvbf_media_overflow (current_cpu, 2);
21514 }
21515 } else {
21516 {
21517 UHI opval = tmp_tmp;
21518 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21519 written |= (1 << 16);
21520 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21521 }
21522 }
21523 }
21524 }
21525 {
21526 DI tmp_tmp;
21527 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21528 if (GTDI (tmp_tmp, 65535)) {
21529 {
21530 {
21531 UHI opval = 65535;
21532 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21533 written |= (1 << 18);
21534 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21535 }
21536 frvbf_media_overflow (current_cpu, 1);
21537 }
21538 } else {
21539 if (LTDI (tmp_tmp, 0)) {
21540 {
21541 {
21542 UHI opval = 0;
21543 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21544 written |= (1 << 18);
21545 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21546 }
21547 frvbf_media_overflow (current_cpu, 1);
21548 }
21549 } else {
21550 {
21551 UHI opval = tmp_tmp;
21552 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21553 written |= (1 << 18);
21554 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21555 }
21556 }
21557 }
21558 }
21559 }
21560 }
21561
21562 abuf->written = written;
21563 return vpc;
21564 #undef FLD
21565 }
21566
21567 /* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21568
21569 static SEM_PC
21570 SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21571 {
21572 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21574 int UNUSED written = 0;
21575 IADDR UNUSED pc = abuf->addr;
21576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21577
21578 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21579 frvbf_media_register_not_aligned (current_cpu);
21580 } else {
21581 {
21582 HI tmp_argihi;
21583 HI tmp_argilo;
21584 HI tmp_argjhi;
21585 HI tmp_argjlo;
21586 {
21587 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21588 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21589 written |= (1 << 14);
21590 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21591 }
21592 {
21593 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21594 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21595 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21596 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21597 }
21598 {
21599 DI tmp_tmp;
21600 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21601 if (GTDI (tmp_tmp, 32767)) {
21602 {
21603 {
21604 UHI opval = 32767;
21605 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21606 written |= (1 << 15);
21607 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21608 }
21609 frvbf_media_overflow (current_cpu, 8);
21610 }
21611 } else {
21612 if (LTDI (tmp_tmp, -32768)) {
21613 {
21614 {
21615 UHI opval = -32768;
21616 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21617 written |= (1 << 15);
21618 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21619 }
21620 frvbf_media_overflow (current_cpu, 8);
21621 }
21622 } else {
21623 {
21624 UHI opval = tmp_tmp;
21625 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21626 written |= (1 << 15);
21627 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21628 }
21629 }
21630 }
21631 }
21632 {
21633 DI tmp_tmp;
21634 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21635 if (GTDI (tmp_tmp, 32767)) {
21636 {
21637 {
21638 UHI opval = 32767;
21639 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21640 written |= (1 << 17);
21641 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21642 }
21643 frvbf_media_overflow (current_cpu, 4);
21644 }
21645 } else {
21646 if (LTDI (tmp_tmp, -32768)) {
21647 {
21648 {
21649 UHI opval = -32768;
21650 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21651 written |= (1 << 17);
21652 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21653 }
21654 frvbf_media_overflow (current_cpu, 4);
21655 }
21656 } else {
21657 {
21658 UHI opval = tmp_tmp;
21659 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21660 written |= (1 << 17);
21661 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21662 }
21663 }
21664 }
21665 }
21666 {
21667 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21668 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21669 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21670 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21671 }
21672 {
21673 DI tmp_tmp;
21674 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21675 if (GTDI (tmp_tmp, 32767)) {
21676 {
21677 {
21678 UHI opval = 32767;
21679 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21680 written |= (1 << 16);
21681 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21682 }
21683 frvbf_media_overflow (current_cpu, 2);
21684 }
21685 } else {
21686 if (LTDI (tmp_tmp, -32768)) {
21687 {
21688 {
21689 UHI opval = -32768;
21690 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21691 written |= (1 << 16);
21692 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21693 }
21694 frvbf_media_overflow (current_cpu, 2);
21695 }
21696 } else {
21697 {
21698 UHI opval = tmp_tmp;
21699 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21700 written |= (1 << 16);
21701 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21702 }
21703 }
21704 }
21705 }
21706 {
21707 DI tmp_tmp;
21708 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21709 if (GTDI (tmp_tmp, 32767)) {
21710 {
21711 {
21712 UHI opval = 32767;
21713 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21714 written |= (1 << 18);
21715 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21716 }
21717 frvbf_media_overflow (current_cpu, 1);
21718 }
21719 } else {
21720 if (LTDI (tmp_tmp, -32768)) {
21721 {
21722 {
21723 UHI opval = -32768;
21724 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21725 written |= (1 << 18);
21726 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21727 }
21728 frvbf_media_overflow (current_cpu, 1);
21729 }
21730 } else {
21731 {
21732 UHI opval = tmp_tmp;
21733 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21734 written |= (1 << 18);
21735 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21736 }
21737 }
21738 }
21739 }
21740 }
21741 }
21742
21743 abuf->written = written;
21744 return vpc;
21745 #undef FLD
21746 }
21747
21748 /* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21749
21750 static SEM_PC
21751 SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21752 {
21753 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21754 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21755 int UNUSED written = 0;
21756 IADDR UNUSED pc = abuf->addr;
21757 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21758
21759 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21760 frvbf_media_register_not_aligned (current_cpu);
21761 } else {
21762 {
21763 UHI tmp_argihi;
21764 UHI tmp_argilo;
21765 UHI tmp_argjhi;
21766 UHI tmp_argjlo;
21767 {
21768 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21769 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21770 written |= (1 << 14);
21771 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21772 }
21773 {
21774 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21775 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21776 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21777 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21778 }
21779 {
21780 DI tmp_tmp;
21781 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21782 if (GTDI (tmp_tmp, 65535)) {
21783 {
21784 {
21785 UHI opval = 65535;
21786 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21787 written |= (1 << 15);
21788 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21789 }
21790 frvbf_media_overflow (current_cpu, 8);
21791 }
21792 } else {
21793 if (LTDI (tmp_tmp, 0)) {
21794 {
21795 {
21796 UHI opval = 0;
21797 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21798 written |= (1 << 15);
21799 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21800 }
21801 frvbf_media_overflow (current_cpu, 8);
21802 }
21803 } else {
21804 {
21805 UHI opval = tmp_tmp;
21806 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21807 written |= (1 << 15);
21808 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21809 }
21810 }
21811 }
21812 }
21813 {
21814 DI tmp_tmp;
21815 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21816 if (GTDI (tmp_tmp, 65535)) {
21817 {
21818 {
21819 UHI opval = 65535;
21820 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21821 written |= (1 << 17);
21822 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21823 }
21824 frvbf_media_overflow (current_cpu, 4);
21825 }
21826 } else {
21827 if (LTDI (tmp_tmp, 0)) {
21828 {
21829 {
21830 UHI opval = 0;
21831 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21832 written |= (1 << 17);
21833 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21834 }
21835 frvbf_media_overflow (current_cpu, 4);
21836 }
21837 } else {
21838 {
21839 UHI opval = tmp_tmp;
21840 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
21841 written |= (1 << 17);
21842 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21843 }
21844 }
21845 }
21846 }
21847 {
21848 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21849 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21850 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21851 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21852 }
21853 {
21854 DI tmp_tmp;
21855 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
21856 if (GTDI (tmp_tmp, 65535)) {
21857 {
21858 {
21859 UHI opval = 65535;
21860 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21861 written |= (1 << 16);
21862 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21863 }
21864 frvbf_media_overflow (current_cpu, 2);
21865 }
21866 } else {
21867 if (LTDI (tmp_tmp, 0)) {
21868 {
21869 {
21870 UHI opval = 0;
21871 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21872 written |= (1 << 16);
21873 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21874 }
21875 frvbf_media_overflow (current_cpu, 2);
21876 }
21877 } else {
21878 {
21879 UHI opval = tmp_tmp;
21880 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
21881 written |= (1 << 16);
21882 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21883 }
21884 }
21885 }
21886 }
21887 {
21888 DI tmp_tmp;
21889 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
21890 if (GTDI (tmp_tmp, 65535)) {
21891 {
21892 {
21893 UHI opval = 65535;
21894 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21895 written |= (1 << 18);
21896 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21897 }
21898 frvbf_media_overflow (current_cpu, 1);
21899 }
21900 } else {
21901 if (LTDI (tmp_tmp, 0)) {
21902 {
21903 {
21904 UHI opval = 0;
21905 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21906 written |= (1 << 18);
21907 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21908 }
21909 frvbf_media_overflow (current_cpu, 1);
21910 }
21911 } else {
21912 {
21913 UHI opval = tmp_tmp;
21914 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
21915 written |= (1 << 18);
21916 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21917 }
21918 }
21919 }
21920 }
21921 }
21922 }
21923
21924 abuf->written = written;
21925 return vpc;
21926 #undef FLD
21927 }
21928
21929 /* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21930
21931 static SEM_PC
21932 SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21933 {
21934 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21936 int UNUSED written = 0;
21937 IADDR UNUSED pc = abuf->addr;
21938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21939
21940 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21941 frvbf_media_register_not_aligned (current_cpu);
21942 } else {
21943 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21944 {
21945 HI tmp_argihi;
21946 HI tmp_argilo;
21947 HI tmp_argjhi;
21948 HI tmp_argjlo;
21949 {
21950 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21951 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21952 written |= (1 << 16);
21953 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21954 }
21955 {
21956 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21957 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21958 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21959 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21960 }
21961 {
21962 DI tmp_tmp;
21963 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
21964 if (GTDI (tmp_tmp, 32767)) {
21965 {
21966 {
21967 UHI opval = 32767;
21968 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21969 written |= (1 << 17);
21970 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21971 }
21972 frvbf_media_overflow (current_cpu, 8);
21973 }
21974 } else {
21975 if (LTDI (tmp_tmp, -32768)) {
21976 {
21977 {
21978 UHI opval = -32768;
21979 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21980 written |= (1 << 17);
21981 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21982 }
21983 frvbf_media_overflow (current_cpu, 8);
21984 }
21985 } else {
21986 {
21987 UHI opval = tmp_tmp;
21988 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
21989 written |= (1 << 17);
21990 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21991 }
21992 }
21993 }
21994 }
21995 {
21996 DI tmp_tmp;
21997 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
21998 if (GTDI (tmp_tmp, 32767)) {
21999 {
22000 {
22001 UHI opval = 32767;
22002 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22003 written |= (1 << 19);
22004 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22005 }
22006 frvbf_media_overflow (current_cpu, 4);
22007 }
22008 } else {
22009 if (LTDI (tmp_tmp, -32768)) {
22010 {
22011 {
22012 UHI opval = -32768;
22013 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22014 written |= (1 << 19);
22015 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22016 }
22017 frvbf_media_overflow (current_cpu, 4);
22018 }
22019 } else {
22020 {
22021 UHI opval = tmp_tmp;
22022 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22023 written |= (1 << 19);
22024 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22025 }
22026 }
22027 }
22028 }
22029 {
22030 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22031 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22032 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22033 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22034 }
22035 {
22036 DI tmp_tmp;
22037 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22038 if (GTDI (tmp_tmp, 32767)) {
22039 {
22040 {
22041 UHI opval = 32767;
22042 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22043 written |= (1 << 18);
22044 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22045 }
22046 frvbf_media_overflow (current_cpu, 2);
22047 }
22048 } else {
22049 if (LTDI (tmp_tmp, -32768)) {
22050 {
22051 {
22052 UHI opval = -32768;
22053 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22054 written |= (1 << 18);
22055 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22056 }
22057 frvbf_media_overflow (current_cpu, 2);
22058 }
22059 } else {
22060 {
22061 UHI opval = tmp_tmp;
22062 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22063 written |= (1 << 18);
22064 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22065 }
22066 }
22067 }
22068 }
22069 {
22070 DI tmp_tmp;
22071 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22072 if (GTDI (tmp_tmp, 32767)) {
22073 {
22074 {
22075 UHI opval = 32767;
22076 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22077 written |= (1 << 20);
22078 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22079 }
22080 frvbf_media_overflow (current_cpu, 1);
22081 }
22082 } else {
22083 if (LTDI (tmp_tmp, -32768)) {
22084 {
22085 {
22086 UHI opval = -32768;
22087 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22088 written |= (1 << 20);
22089 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22090 }
22091 frvbf_media_overflow (current_cpu, 1);
22092 }
22093 } else {
22094 {
22095 UHI opval = tmp_tmp;
22096 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22097 written |= (1 << 20);
22098 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22099 }
22100 }
22101 }
22102 }
22103 }
22104 }
22105 }
22106
22107 abuf->written = written;
22108 return vpc;
22109 #undef FLD
22110 }
22111
22112 /* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22113
22114 static SEM_PC
22115 SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22116 {
22117 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22118 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22119 int UNUSED written = 0;
22120 IADDR UNUSED pc = abuf->addr;
22121 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22122
22123 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22124 frvbf_media_register_not_aligned (current_cpu);
22125 } else {
22126 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22127 {
22128 UHI tmp_argihi;
22129 UHI tmp_argilo;
22130 UHI tmp_argjhi;
22131 UHI tmp_argjlo;
22132 {
22133 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22134 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22135 written |= (1 << 16);
22136 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22137 }
22138 {
22139 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22140 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22141 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22142 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22143 }
22144 {
22145 DI tmp_tmp;
22146 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22147 if (GTDI (tmp_tmp, 65535)) {
22148 {
22149 {
22150 UHI opval = 65535;
22151 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22152 written |= (1 << 17);
22153 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22154 }
22155 frvbf_media_overflow (current_cpu, 8);
22156 }
22157 } else {
22158 if (LTDI (tmp_tmp, 0)) {
22159 {
22160 {
22161 UHI opval = 0;
22162 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22163 written |= (1 << 17);
22164 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22165 }
22166 frvbf_media_overflow (current_cpu, 8);
22167 }
22168 } else {
22169 {
22170 UHI opval = tmp_tmp;
22171 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22172 written |= (1 << 17);
22173 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22174 }
22175 }
22176 }
22177 }
22178 {
22179 DI tmp_tmp;
22180 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22181 if (GTDI (tmp_tmp, 65535)) {
22182 {
22183 {
22184 UHI opval = 65535;
22185 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22186 written |= (1 << 19);
22187 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22188 }
22189 frvbf_media_overflow (current_cpu, 4);
22190 }
22191 } else {
22192 if (LTDI (tmp_tmp, 0)) {
22193 {
22194 {
22195 UHI opval = 0;
22196 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22197 written |= (1 << 19);
22198 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22199 }
22200 frvbf_media_overflow (current_cpu, 4);
22201 }
22202 } else {
22203 {
22204 UHI opval = tmp_tmp;
22205 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22206 written |= (1 << 19);
22207 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22208 }
22209 }
22210 }
22211 }
22212 {
22213 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22214 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22215 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22216 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22217 }
22218 {
22219 DI tmp_tmp;
22220 tmp_tmp = ADDHI (tmp_argihi, tmp_argjhi);
22221 if (GTDI (tmp_tmp, 65535)) {
22222 {
22223 {
22224 UHI opval = 65535;
22225 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22226 written |= (1 << 18);
22227 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22228 }
22229 frvbf_media_overflow (current_cpu, 2);
22230 }
22231 } else {
22232 if (LTDI (tmp_tmp, 0)) {
22233 {
22234 {
22235 UHI opval = 0;
22236 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22237 written |= (1 << 18);
22238 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22239 }
22240 frvbf_media_overflow (current_cpu, 2);
22241 }
22242 } else {
22243 {
22244 UHI opval = tmp_tmp;
22245 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22246 written |= (1 << 18);
22247 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22248 }
22249 }
22250 }
22251 }
22252 {
22253 DI tmp_tmp;
22254 tmp_tmp = ADDHI (tmp_argilo, tmp_argjlo);
22255 if (GTDI (tmp_tmp, 65535)) {
22256 {
22257 {
22258 UHI opval = 65535;
22259 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22260 written |= (1 << 20);
22261 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22262 }
22263 frvbf_media_overflow (current_cpu, 1);
22264 }
22265 } else {
22266 if (LTDI (tmp_tmp, 0)) {
22267 {
22268 {
22269 UHI opval = 0;
22270 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22271 written |= (1 << 20);
22272 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22273 }
22274 frvbf_media_overflow (current_cpu, 1);
22275 }
22276 } else {
22277 {
22278 UHI opval = tmp_tmp;
22279 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22280 written |= (1 << 20);
22281 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22282 }
22283 }
22284 }
22285 }
22286 }
22287 }
22288 }
22289
22290 abuf->written = written;
22291 return vpc;
22292 #undef FLD
22293 }
22294
22295 /* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22296
22297 static SEM_PC
22298 SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22299 {
22300 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22302 int UNUSED written = 0;
22303 IADDR UNUSED pc = abuf->addr;
22304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22305
22306 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22307 frvbf_media_register_not_aligned (current_cpu);
22308 } else {
22309 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22310 {
22311 HI tmp_argihi;
22312 HI tmp_argilo;
22313 HI tmp_argjhi;
22314 HI tmp_argjlo;
22315 {
22316 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22317 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22318 written |= (1 << 16);
22319 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22320 }
22321 {
22322 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22323 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22324 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22325 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22326 }
22327 {
22328 DI tmp_tmp;
22329 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22330 if (GTDI (tmp_tmp, 32767)) {
22331 {
22332 {
22333 UHI opval = 32767;
22334 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22335 written |= (1 << 17);
22336 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22337 }
22338 frvbf_media_overflow (current_cpu, 8);
22339 }
22340 } else {
22341 if (LTDI (tmp_tmp, -32768)) {
22342 {
22343 {
22344 UHI opval = -32768;
22345 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22346 written |= (1 << 17);
22347 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22348 }
22349 frvbf_media_overflow (current_cpu, 8);
22350 }
22351 } else {
22352 {
22353 UHI opval = tmp_tmp;
22354 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22355 written |= (1 << 17);
22356 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22357 }
22358 }
22359 }
22360 }
22361 {
22362 DI tmp_tmp;
22363 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22364 if (GTDI (tmp_tmp, 32767)) {
22365 {
22366 {
22367 UHI opval = 32767;
22368 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22369 written |= (1 << 19);
22370 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22371 }
22372 frvbf_media_overflow (current_cpu, 4);
22373 }
22374 } else {
22375 if (LTDI (tmp_tmp, -32768)) {
22376 {
22377 {
22378 UHI opval = -32768;
22379 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22380 written |= (1 << 19);
22381 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22382 }
22383 frvbf_media_overflow (current_cpu, 4);
22384 }
22385 } else {
22386 {
22387 UHI opval = tmp_tmp;
22388 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22389 written |= (1 << 19);
22390 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22391 }
22392 }
22393 }
22394 }
22395 {
22396 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22397 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22398 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22399 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22400 }
22401 {
22402 DI tmp_tmp;
22403 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22404 if (GTDI (tmp_tmp, 32767)) {
22405 {
22406 {
22407 UHI opval = 32767;
22408 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22409 written |= (1 << 18);
22410 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22411 }
22412 frvbf_media_overflow (current_cpu, 2);
22413 }
22414 } else {
22415 if (LTDI (tmp_tmp, -32768)) {
22416 {
22417 {
22418 UHI opval = -32768;
22419 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22420 written |= (1 << 18);
22421 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22422 }
22423 frvbf_media_overflow (current_cpu, 2);
22424 }
22425 } else {
22426 {
22427 UHI opval = tmp_tmp;
22428 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22429 written |= (1 << 18);
22430 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22431 }
22432 }
22433 }
22434 }
22435 {
22436 DI tmp_tmp;
22437 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22438 if (GTDI (tmp_tmp, 32767)) {
22439 {
22440 {
22441 UHI opval = 32767;
22442 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22443 written |= (1 << 20);
22444 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22445 }
22446 frvbf_media_overflow (current_cpu, 1);
22447 }
22448 } else {
22449 if (LTDI (tmp_tmp, -32768)) {
22450 {
22451 {
22452 UHI opval = -32768;
22453 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22454 written |= (1 << 20);
22455 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22456 }
22457 frvbf_media_overflow (current_cpu, 1);
22458 }
22459 } else {
22460 {
22461 UHI opval = tmp_tmp;
22462 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22463 written |= (1 << 20);
22464 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22465 }
22466 }
22467 }
22468 }
22469 }
22470 }
22471 }
22472
22473 abuf->written = written;
22474 return vpc;
22475 #undef FLD
22476 }
22477
22478 /* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22479
22480 static SEM_PC
22481 SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22482 {
22483 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22485 int UNUSED written = 0;
22486 IADDR UNUSED pc = abuf->addr;
22487 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22488
22489 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22490 frvbf_media_register_not_aligned (current_cpu);
22491 } else {
22492 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22493 {
22494 UHI tmp_argihi;
22495 UHI tmp_argilo;
22496 UHI tmp_argjhi;
22497 UHI tmp_argjlo;
22498 {
22499 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22500 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22501 written |= (1 << 16);
22502 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22503 }
22504 {
22505 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22506 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22507 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22508 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22509 }
22510 {
22511 DI tmp_tmp;
22512 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22513 if (GTDI (tmp_tmp, 65535)) {
22514 {
22515 {
22516 UHI opval = 65535;
22517 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22518 written |= (1 << 17);
22519 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22520 }
22521 frvbf_media_overflow (current_cpu, 8);
22522 }
22523 } else {
22524 if (LTDI (tmp_tmp, 0)) {
22525 {
22526 {
22527 UHI opval = 0;
22528 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22529 written |= (1 << 17);
22530 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22531 }
22532 frvbf_media_overflow (current_cpu, 8);
22533 }
22534 } else {
22535 {
22536 UHI opval = tmp_tmp;
22537 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22538 written |= (1 << 17);
22539 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22540 }
22541 }
22542 }
22543 }
22544 {
22545 DI tmp_tmp;
22546 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22547 if (GTDI (tmp_tmp, 65535)) {
22548 {
22549 {
22550 UHI opval = 65535;
22551 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22552 written |= (1 << 19);
22553 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22554 }
22555 frvbf_media_overflow (current_cpu, 4);
22556 }
22557 } else {
22558 if (LTDI (tmp_tmp, 0)) {
22559 {
22560 {
22561 UHI opval = 0;
22562 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22563 written |= (1 << 19);
22564 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22565 }
22566 frvbf_media_overflow (current_cpu, 4);
22567 }
22568 } else {
22569 {
22570 UHI opval = tmp_tmp;
22571 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22572 written |= (1 << 19);
22573 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22574 }
22575 }
22576 }
22577 }
22578 {
22579 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22580 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22581 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22582 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22583 }
22584 {
22585 DI tmp_tmp;
22586 tmp_tmp = SUBHI (tmp_argihi, tmp_argjhi);
22587 if (GTDI (tmp_tmp, 65535)) {
22588 {
22589 {
22590 UHI opval = 65535;
22591 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22592 written |= (1 << 18);
22593 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22594 }
22595 frvbf_media_overflow (current_cpu, 2);
22596 }
22597 } else {
22598 if (LTDI (tmp_tmp, 0)) {
22599 {
22600 {
22601 UHI opval = 0;
22602 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22603 written |= (1 << 18);
22604 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22605 }
22606 frvbf_media_overflow (current_cpu, 2);
22607 }
22608 } else {
22609 {
22610 UHI opval = tmp_tmp;
22611 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22612 written |= (1 << 18);
22613 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22614 }
22615 }
22616 }
22617 }
22618 {
22619 DI tmp_tmp;
22620 tmp_tmp = SUBHI (tmp_argilo, tmp_argjlo);
22621 if (GTDI (tmp_tmp, 65535)) {
22622 {
22623 {
22624 UHI opval = 65535;
22625 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22626 written |= (1 << 20);
22627 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22628 }
22629 frvbf_media_overflow (current_cpu, 1);
22630 }
22631 } else {
22632 if (LTDI (tmp_tmp, 0)) {
22633 {
22634 {
22635 UHI opval = 0;
22636 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22637 written |= (1 << 20);
22638 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22639 }
22640 frvbf_media_overflow (current_cpu, 1);
22641 }
22642 } else {
22643 {
22644 UHI opval = tmp_tmp;
22645 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22646 written |= (1 << 20);
22647 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22648 }
22649 }
22650 }
22651 }
22652 }
22653 }
22654 }
22655
22656 abuf->written = written;
22657 return vpc;
22658 #undef FLD
22659 }
22660
22661 /* mqlclrhs: mqlclrhs$pack $FRintieven,$FRintjeven,$FRintkeven */
22662
22663 static SEM_PC
22664 SEM_FN_NAME (frvbf,mqlclrhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22665 {
22666 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22668 int UNUSED written = 0;
22669 IADDR UNUSED pc = abuf->addr;
22670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22671
22672 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22673 frvbf_media_register_not_aligned (current_cpu);
22674 } else {
22675 {
22676 HI tmp_a1;
22677 HI tmp_a2;
22678 HI tmp_a3;
22679 HI tmp_a4;
22680 HI tmp_b1;
22681 HI tmp_b2;
22682 HI tmp_b3;
22683 HI tmp_b4;
22684 {
22685 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22686 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22687 written |= (1 << 14);
22688 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22689 }
22690 {
22691 tmp_a1 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22692 tmp_a2 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22693 tmp_b1 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22694 tmp_b2 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22695 }
22696 {
22697 tmp_a3 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22698 tmp_a4 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22699 tmp_b3 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22700 tmp_b4 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22701 }
22702 {
22703 UHI opval = (LEUHI (ABSHI (tmp_a1), ABSHI (tmp_b1))) ? (0) : (LEHI (0, tmp_b1)) ? (tmp_a1) : (EQHI (tmp_a1, -32768)) ? (32767) : (NEGHI (tmp_a1));
22704 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22705 written |= (1 << 15);
22706 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22707 }
22708 {
22709 UHI opval = (LEUHI (ABSHI (tmp_a2), ABSHI (tmp_b2))) ? (0) : (LEHI (0, tmp_b2)) ? (tmp_a2) : (EQHI (tmp_a2, -32768)) ? (32767) : (NEGHI (tmp_a2));
22710 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22711 written |= (1 << 17);
22712 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22713 }
22714 {
22715 UHI opval = (LEUHI (ABSHI (tmp_a3), ABSHI (tmp_b3))) ? (0) : (LEHI (0, tmp_b3)) ? (tmp_a3) : (EQHI (tmp_a3, -32768)) ? (32767) : (NEGHI (tmp_a3));
22716 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22717 written |= (1 << 16);
22718 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22719 }
22720 {
22721 UHI opval = (LEUHI (ABSHI (tmp_a4), ABSHI (tmp_b4))) ? (0) : (LEHI (0, tmp_b4)) ? (tmp_a4) : (EQHI (tmp_a4, -32768)) ? (32767) : (NEGHI (tmp_a4));
22722 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22723 written |= (1 << 18);
22724 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22725 }
22726 }
22727 }
22728
22729 abuf->written = written;
22730 return vpc;
22731 #undef FLD
22732 }
22733
22734 /* mqlmths: mqlmths$pack $FRintieven,$FRintjeven,$FRintkeven */
22735
22736 static SEM_PC
22737 SEM_FN_NAME (frvbf,mqlmths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22738 {
22739 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22740 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22741 int UNUSED written = 0;
22742 IADDR UNUSED pc = abuf->addr;
22743 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22744
22745 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22746 frvbf_media_register_not_aligned (current_cpu);
22747 } else {
22748 {
22749 HI tmp_a1;
22750 HI tmp_a2;
22751 HI tmp_a3;
22752 HI tmp_a4;
22753 HI tmp_b1;
22754 HI tmp_b2;
22755 HI tmp_b3;
22756 HI tmp_b4;
22757 {
22758 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22759 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22760 written |= (1 << 14);
22761 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22762 }
22763 {
22764 tmp_a1 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22765 tmp_a2 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22766 tmp_b1 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22767 tmp_b2 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22768 }
22769 {
22770 tmp_a3 = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22771 tmp_a4 = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22772 tmp_b3 = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22773 tmp_b4 = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22774 }
22775 {
22776 UHI opval = (ANDIF (GTHI (tmp_b1, -32768), GEHI (tmp_a1, ABSHI (tmp_b1)))) ? (tmp_b1) : (GTHI (tmp_a1, NEGHI (ABSHI (tmp_b1)))) ? (tmp_a1) : (EQHI (tmp_b1, -32768)) ? (32767) : (NEGHI (tmp_b1));
22777 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22778 written |= (1 << 15);
22779 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22780 }
22781 {
22782 UHI opval = (ANDIF (GTHI (tmp_b2, -32768), GEHI (tmp_a2, ABSHI (tmp_b2)))) ? (tmp_b2) : (GTHI (tmp_a2, NEGHI (ABSHI (tmp_b2)))) ? (tmp_a2) : (EQHI (tmp_b2, -32768)) ? (32767) : (NEGHI (tmp_b2));
22783 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22784 written |= (1 << 17);
22785 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22786 }
22787 {
22788 UHI opval = (ANDIF (GTHI (tmp_b3, -32768), GEHI (tmp_a3, ABSHI (tmp_b3)))) ? (tmp_b3) : (GTHI (tmp_a3, NEGHI (ABSHI (tmp_b3)))) ? (tmp_a3) : (EQHI (tmp_b3, -32768)) ? (32767) : (NEGHI (tmp_b3));
22789 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22790 written |= (1 << 16);
22791 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22792 }
22793 {
22794 UHI opval = (ANDIF (GTHI (tmp_b4, -32768), GEHI (tmp_a4, ABSHI (tmp_b4)))) ? (tmp_b4) : (GTHI (tmp_a4, NEGHI (ABSHI (tmp_b4)))) ? (tmp_a4) : (EQHI (tmp_b4, -32768)) ? (32767) : (NEGHI (tmp_b4));
22795 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22796 written |= (1 << 18);
22797 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22798 }
22799 }
22800 }
22801
22802 abuf->written = written;
22803 return vpc;
22804 #undef FLD
22805 }
22806
22807 /* mqsllhi: mqsllhi$pack $FRintieven,$u6,$FRintkeven */
22808
22809 static SEM_PC
22810 SEM_FN_NAME (frvbf,mqsllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22811 {
22812 #define FLD(f) abuf->fields.sfmt_mqsllhi.f
22813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22814 int UNUSED written = 0;
22815 IADDR UNUSED pc = abuf->addr;
22816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22817
22818 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22819 frvbf_media_register_not_aligned (current_cpu);
22820 } else {
22821 {
22822 {
22823 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22824 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22825 written |= (1 << 9);
22826 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22827 }
22828 {
22829 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22830 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22831 written |= (1 << 10);
22832 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22833 }
22834 {
22835 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22836 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22837 written |= (1 << 11);
22838 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22839 }
22840 {
22841 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22842 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22843 written |= (1 << 13);
22844 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22845 }
22846 {
22847 UHI opval = SLLHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22848 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22849 written |= (1 << 12);
22850 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22851 }
22852 {
22853 UHI opval = SLLHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22854 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22855 written |= (1 << 14);
22856 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22857 }
22858 }
22859 }
22860
22861 abuf->written = written;
22862 return vpc;
22863 #undef FLD
22864 }
22865
22866 /* mqsrahi: mqsrahi$pack $FRintieven,$u6,$FRintkeven */
22867
22868 static SEM_PC
22869 SEM_FN_NAME (frvbf,mqsrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22870 {
22871 #define FLD(f) abuf->fields.sfmt_mqsllhi.f
22872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22873 int UNUSED written = 0;
22874 IADDR UNUSED pc = abuf->addr;
22875 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22876
22877 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22878 frvbf_media_register_not_aligned (current_cpu);
22879 } else {
22880 {
22881 {
22882 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22883 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22884 written |= (1 << 9);
22885 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22886 }
22887 {
22888 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22889 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22890 written |= (1 << 10);
22891 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22892 }
22893 {
22894 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22895 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
22896 written |= (1 << 11);
22897 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22898 }
22899 {
22900 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), ANDSI (FLD (f_u6), 15));
22901 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
22902 written |= (1 << 13);
22903 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22904 }
22905 {
22906 UHI opval = SRAHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22907 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
22908 written |= (1 << 12);
22909 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22910 }
22911 {
22912 UHI opval = SRAHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), ANDSI (FLD (f_u6), 15));
22913 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
22914 written |= (1 << 14);
22915 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22916 }
22917 }
22918 }
22919
22920 abuf->written = written;
22921 return vpc;
22922 #undef FLD
22923 }
22924
22925 /* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22926
22927 static SEM_PC
22928 SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22929 {
22930 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22932 int UNUSED written = 0;
22933 IADDR UNUSED pc = abuf->addr;
22934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22935
22936 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22937 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22938 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22939 frvbf_media_acc_not_aligned (current_cpu);
22940 } else {
22941 {
22942 DI tmp_tmp;
22943 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
22944 if (GTDI (tmp_tmp, 549755813887)) {
22945 {
22946 {
22947 DI opval = 549755813887;
22948 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22949 written |= (1 << 4);
22950 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22951 }
22952 frvbf_media_overflow (current_cpu, 8);
22953 }
22954 } else {
22955 if (LTDI (tmp_tmp, INVDI (549755813887))) {
22956 {
22957 {
22958 DI opval = INVDI (549755813887);
22959 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22960 written |= (1 << 4);
22961 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22962 }
22963 frvbf_media_overflow (current_cpu, 8);
22964 }
22965 } else {
22966 {
22967 DI opval = tmp_tmp;
22968 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22969 written |= (1 << 4);
22970 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22971 }
22972 }
22973 }
22974 }
22975 }
22976 }
22977 }
22978
22979 abuf->written = written;
22980 return vpc;
22981 #undef FLD
22982 }
22983
22984 /* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22985
22986 static SEM_PC
22987 SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22988 {
22989 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22990 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22991 int UNUSED written = 0;
22992 IADDR UNUSED pc = abuf->addr;
22993 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22994
22995 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22996 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22997 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22998 frvbf_media_acc_not_aligned (current_cpu);
22999 } else {
23000 {
23001 DI tmp_tmp;
23002 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23003 if (GTDI (tmp_tmp, 549755813887)) {
23004 {
23005 {
23006 DI opval = 549755813887;
23007 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23008 written |= (1 << 4);
23009 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23010 }
23011 frvbf_media_overflow (current_cpu, 8);
23012 }
23013 } else {
23014 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23015 {
23016 {
23017 DI opval = INVDI (549755813887);
23018 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23019 written |= (1 << 4);
23020 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23021 }
23022 frvbf_media_overflow (current_cpu, 8);
23023 }
23024 } else {
23025 {
23026 DI opval = tmp_tmp;
23027 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23028 written |= (1 << 4);
23029 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23030 }
23031 }
23032 }
23033 }
23034 }
23035 }
23036 }
23037
23038 abuf->written = written;
23039 return vpc;
23040 #undef FLD
23041 }
23042
23043 /* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
23044
23045 static SEM_PC
23046 SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23047 {
23048 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23049 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23050 int UNUSED written = 0;
23051 IADDR UNUSED pc = abuf->addr;
23052 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23053
23054 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23055 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23056 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23057 frvbf_media_acc_not_aligned (current_cpu);
23058 } else {
23059 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23060 frvbf_media_acc_not_aligned (current_cpu);
23061 } else {
23062 {
23063 {
23064 DI tmp_tmp;
23065 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23066 if (GTDI (tmp_tmp, 549755813887)) {
23067 {
23068 {
23069 DI opval = 549755813887;
23070 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23071 written |= (1 << 6);
23072 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23073 }
23074 frvbf_media_overflow (current_cpu, 8);
23075 }
23076 } else {
23077 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23078 {
23079 {
23080 DI opval = INVDI (549755813887);
23081 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23082 written |= (1 << 6);
23083 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23084 }
23085 frvbf_media_overflow (current_cpu, 8);
23086 }
23087 } else {
23088 {
23089 DI opval = tmp_tmp;
23090 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23091 written |= (1 << 6);
23092 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23093 }
23094 }
23095 }
23096 }
23097 {
23098 DI tmp_tmp;
23099 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23100 if (GTDI (tmp_tmp, 549755813887)) {
23101 {
23102 {
23103 DI opval = 549755813887;
23104 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23105 written |= (1 << 7);
23106 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23107 }
23108 frvbf_media_overflow (current_cpu, 4);
23109 }
23110 } else {
23111 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23112 {
23113 {
23114 DI opval = INVDI (549755813887);
23115 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23116 written |= (1 << 7);
23117 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23118 }
23119 frvbf_media_overflow (current_cpu, 4);
23120 }
23121 } else {
23122 {
23123 DI opval = tmp_tmp;
23124 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23125 written |= (1 << 7);
23126 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23127 }
23128 }
23129 }
23130 }
23131 }
23132 }
23133 }
23134 }
23135 }
23136
23137 abuf->written = written;
23138 return vpc;
23139 #undef FLD
23140 }
23141
23142 /* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23143
23144 static SEM_PC
23145 SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23146 {
23147 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23149 int UNUSED written = 0;
23150 IADDR UNUSED pc = abuf->addr;
23151 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23152
23153 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23154 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23155 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23156 frvbf_media_acc_not_aligned (current_cpu);
23157 } else {
23158 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23159 frvbf_media_acc_not_aligned (current_cpu);
23160 } else {
23161 {
23162 {
23163 DI tmp_tmp;
23164 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23165 if (GTDI (tmp_tmp, 549755813887)) {
23166 {
23167 {
23168 DI opval = 549755813887;
23169 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23170 written |= (1 << 6);
23171 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23172 }
23173 frvbf_media_overflow (current_cpu, 8);
23174 }
23175 } else {
23176 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23177 {
23178 {
23179 DI opval = INVDI (549755813887);
23180 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23181 written |= (1 << 6);
23182 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23183 }
23184 frvbf_media_overflow (current_cpu, 8);
23185 }
23186 } else {
23187 {
23188 DI opval = tmp_tmp;
23189 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23190 written |= (1 << 6);
23191 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23192 }
23193 }
23194 }
23195 }
23196 {
23197 DI tmp_tmp;
23198 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23199 if (GTDI (tmp_tmp, 549755813887)) {
23200 {
23201 {
23202 DI opval = 549755813887;
23203 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23204 written |= (1 << 7);
23205 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23206 }
23207 frvbf_media_overflow (current_cpu, 4);
23208 }
23209 } else {
23210 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23211 {
23212 {
23213 DI opval = INVDI (549755813887);
23214 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23215 written |= (1 << 7);
23216 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23217 }
23218 frvbf_media_overflow (current_cpu, 4);
23219 }
23220 } else {
23221 {
23222 DI opval = tmp_tmp;
23223 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23224 written |= (1 << 7);
23225 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23226 }
23227 }
23228 }
23229 }
23230 }
23231 }
23232 }
23233 }
23234 }
23235
23236 abuf->written = written;
23237 return vpc;
23238 #undef FLD
23239 }
23240
23241 /* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23242
23243 static SEM_PC
23244 SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23245 {
23246 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23248 int UNUSED written = 0;
23249 IADDR UNUSED pc = abuf->addr;
23250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23251
23252 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23253 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23254 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23255 frvbf_media_acc_not_aligned (current_cpu);
23256 } else {
23257 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23258 frvbf_media_acc_not_aligned (current_cpu);
23259 } else {
23260 {
23261 {
23262 DI tmp_tmp;
23263 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23264 if (GTDI (tmp_tmp, 549755813887)) {
23265 {
23266 {
23267 DI opval = 549755813887;
23268 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23269 written |= (1 << 4);
23270 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23271 }
23272 frvbf_media_overflow (current_cpu, 8);
23273 }
23274 } else {
23275 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23276 {
23277 {
23278 DI opval = INVDI (549755813887);
23279 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23280 written |= (1 << 4);
23281 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23282 }
23283 frvbf_media_overflow (current_cpu, 8);
23284 }
23285 } else {
23286 {
23287 DI opval = tmp_tmp;
23288 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23289 written |= (1 << 4);
23290 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23291 }
23292 }
23293 }
23294 }
23295 {
23296 DI tmp_tmp;
23297 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23298 if (GTDI (tmp_tmp, 549755813887)) {
23299 {
23300 {
23301 DI opval = 549755813887;
23302 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23303 written |= (1 << 5);
23304 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23305 }
23306 frvbf_media_overflow (current_cpu, 4);
23307 }
23308 } else {
23309 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23310 {
23311 {
23312 DI opval = INVDI (549755813887);
23313 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23314 written |= (1 << 5);
23315 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23316 }
23317 frvbf_media_overflow (current_cpu, 4);
23318 }
23319 } else {
23320 {
23321 DI opval = tmp_tmp;
23322 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23323 written |= (1 << 5);
23324 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23325 }
23326 }
23327 }
23328 }
23329 }
23330 }
23331 }
23332 }
23333 }
23334
23335 abuf->written = written;
23336 return vpc;
23337 #undef FLD
23338 }
23339
23340 /* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23341
23342 static SEM_PC
23343 SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23344 {
23345 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23347 int UNUSED written = 0;
23348 IADDR UNUSED pc = abuf->addr;
23349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23350
23351 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23352 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23353 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23354 frvbf_media_acc_not_aligned (current_cpu);
23355 } else {
23356 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23357 frvbf_media_acc_not_aligned (current_cpu);
23358 } else {
23359 {
23360 {
23361 DI tmp_tmp;
23362 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23363 if (GTDI (tmp_tmp, 549755813887)) {
23364 {
23365 {
23366 DI opval = 549755813887;
23367 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23368 written |= (1 << 6);
23369 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23370 }
23371 frvbf_media_overflow (current_cpu, 8);
23372 }
23373 } else {
23374 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23375 {
23376 {
23377 DI opval = INVDI (549755813887);
23378 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23379 written |= (1 << 6);
23380 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23381 }
23382 frvbf_media_overflow (current_cpu, 8);
23383 }
23384 } else {
23385 {
23386 DI opval = tmp_tmp;
23387 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23388 written |= (1 << 6);
23389 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23390 }
23391 }
23392 }
23393 }
23394 {
23395 DI tmp_tmp;
23396 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (((FLD (f_ACC40Si)) + (1))));
23397 if (GTDI (tmp_tmp, 549755813887)) {
23398 {
23399 {
23400 DI opval = 549755813887;
23401 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23402 written |= (1 << 7);
23403 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23404 }
23405 frvbf_media_overflow (current_cpu, 4);
23406 }
23407 } else {
23408 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23409 {
23410 {
23411 DI opval = INVDI (549755813887);
23412 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23413 written |= (1 << 7);
23414 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23415 }
23416 frvbf_media_overflow (current_cpu, 4);
23417 }
23418 } else {
23419 {
23420 DI opval = tmp_tmp;
23421 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23422 written |= (1 << 7);
23423 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23424 }
23425 }
23426 }
23427 }
23428 {
23429 DI tmp_tmp;
23430 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23431 if (GTDI (tmp_tmp, 549755813887)) {
23432 {
23433 {
23434 DI opval = 549755813887;
23435 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23436 written |= (1 << 8);
23437 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23438 }
23439 frvbf_media_overflow (current_cpu, 2);
23440 }
23441 } else {
23442 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23443 {
23444 {
23445 DI opval = INVDI (549755813887);
23446 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23447 written |= (1 << 8);
23448 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23449 }
23450 frvbf_media_overflow (current_cpu, 2);
23451 }
23452 } else {
23453 {
23454 DI opval = tmp_tmp;
23455 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23456 written |= (1 << 8);
23457 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23458 }
23459 }
23460 }
23461 }
23462 {
23463 DI tmp_tmp;
23464 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Si)) + (2))), GET_H_ACC40S (((FLD (f_ACC40Si)) + (3))));
23465 if (GTDI (tmp_tmp, 549755813887)) {
23466 {
23467 {
23468 DI opval = 549755813887;
23469 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23470 written |= (1 << 9);
23471 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23472 }
23473 frvbf_media_overflow (current_cpu, 1);
23474 }
23475 } else {
23476 if (LTDI (tmp_tmp, INVDI (549755813887))) {
23477 {
23478 {
23479 DI opval = INVDI (549755813887);
23480 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23481 written |= (1 << 9);
23482 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23483 }
23484 frvbf_media_overflow (current_cpu, 1);
23485 }
23486 } else {
23487 {
23488 DI opval = tmp_tmp;
23489 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23490 written |= (1 << 9);
23491 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23492 }
23493 }
23494 }
23495 }
23496 }
23497 }
23498 }
23499 }
23500 }
23501
23502 abuf->written = written;
23503 return vpc;
23504 #undef FLD
23505 }
23506
23507 /* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23508
23509 static SEM_PC
23510 SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23511 {
23512 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23514 int UNUSED written = 0;
23515 IADDR UNUSED pc = abuf->addr;
23516 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23517
23518 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23519 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23520 frvbf_media_acc_not_aligned (current_cpu);
23521 } else {
23522 {
23523 HI tmp_argihi;
23524 HI tmp_argilo;
23525 HI tmp_argjhi;
23526 HI tmp_argjlo;
23527 {
23528 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23529 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23530 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23531 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23532 }
23533 {
23534 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23535 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23536 written |= (1 << 9);
23537 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23538 }
23539 {
23540 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23541 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23542 written |= (1 << 10);
23543 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23544 }
23545 }
23546 }
23547 }
23548
23549 abuf->written = written;
23550 return vpc;
23551 #undef FLD
23552 }
23553
23554 /* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23555
23556 static SEM_PC
23557 SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23558 {
23559 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23561 int UNUSED written = 0;
23562 IADDR UNUSED pc = abuf->addr;
23563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23564
23565 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23566 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23567 frvbf_media_acc_not_aligned (current_cpu);
23568 } else {
23569 {
23570 UHI tmp_argihi;
23571 UHI tmp_argilo;
23572 UHI tmp_argjhi;
23573 UHI tmp_argjlo;
23574 {
23575 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23576 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23577 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23578 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23579 }
23580 {
23581 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23582 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23583 written |= (1 << 9);
23584 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23585 }
23586 {
23587 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23588 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23589 written |= (1 << 10);
23590 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23591 }
23592 }
23593 }
23594 }
23595
23596 abuf->written = written;
23597 return vpc;
23598 #undef FLD
23599 }
23600
23601 /* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23602
23603 static SEM_PC
23604 SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23605 {
23606 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23607 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23608 int UNUSED written = 0;
23609 IADDR UNUSED pc = abuf->addr;
23610 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23611
23612 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23613 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23614 frvbf_media_acc_not_aligned (current_cpu);
23615 } else {
23616 {
23617 HI tmp_argihi;
23618 HI tmp_argilo;
23619 HI tmp_argjhi;
23620 HI tmp_argjlo;
23621 {
23622 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23623 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23624 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23625 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23626 }
23627 {
23628 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23629 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23630 written |= (1 << 9);
23631 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23632 }
23633 {
23634 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23635 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23636 written |= (1 << 10);
23637 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23638 }
23639 }
23640 }
23641 }
23642
23643 abuf->written = written;
23644 return vpc;
23645 #undef FLD
23646 }
23647
23648 /* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23649
23650 static SEM_PC
23651 SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23652 {
23653 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23655 int UNUSED written = 0;
23656 IADDR UNUSED pc = abuf->addr;
23657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23658
23659 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23660 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23661 frvbf_media_acc_not_aligned (current_cpu);
23662 } else {
23663 {
23664 UHI tmp_argihi;
23665 UHI tmp_argilo;
23666 UHI tmp_argjhi;
23667 UHI tmp_argjlo;
23668 {
23669 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23670 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23671 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23672 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23673 }
23674 {
23675 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23676 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23677 written |= (1 << 9);
23678 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23679 }
23680 {
23681 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23682 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23683 written |= (1 << 10);
23684 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23685 }
23686 }
23687 }
23688 }
23689
23690 abuf->written = written;
23691 return vpc;
23692 #undef FLD
23693 }
23694
23695 /* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23696
23697 static SEM_PC
23698 SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23699 {
23700 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23702 int UNUSED written = 0;
23703 IADDR UNUSED pc = abuf->addr;
23704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23705
23706 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23707 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23708 frvbf_media_acc_not_aligned (current_cpu);
23709 } else {
23710 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23711 {
23712 HI tmp_argihi;
23713 HI tmp_argilo;
23714 HI tmp_argjhi;
23715 HI tmp_argjlo;
23716 {
23717 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23718 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23719 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23720 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23721 }
23722 {
23723 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23724 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23725 written |= (1 << 11);
23726 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23727 }
23728 {
23729 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23730 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23731 written |= (1 << 12);
23732 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23733 }
23734 }
23735 }
23736 }
23737 }
23738
23739 abuf->written = written;
23740 return vpc;
23741 #undef FLD
23742 }
23743
23744 /* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23745
23746 static SEM_PC
23747 SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23748 {
23749 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23751 int UNUSED written = 0;
23752 IADDR UNUSED pc = abuf->addr;
23753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23754
23755 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23756 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23757 frvbf_media_acc_not_aligned (current_cpu);
23758 } else {
23759 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23760 {
23761 UHI tmp_argihi;
23762 UHI tmp_argilo;
23763 UHI tmp_argjhi;
23764 UHI tmp_argjlo;
23765 {
23766 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23767 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23768 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23769 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23770 }
23771 {
23772 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23773 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23774 written |= (1 << 11);
23775 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23776 }
23777 {
23778 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23779 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23780 written |= (1 << 12);
23781 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23782 }
23783 }
23784 }
23785 }
23786 }
23787
23788 abuf->written = written;
23789 return vpc;
23790 #undef FLD
23791 }
23792
23793 /* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23794
23795 static SEM_PC
23796 SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23797 {
23798 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23800 int UNUSED written = 0;
23801 IADDR UNUSED pc = abuf->addr;
23802 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23803
23804 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23805 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23806 frvbf_media_acc_not_aligned (current_cpu);
23807 } else {
23808 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23809 frvbf_media_register_not_aligned (current_cpu);
23810 } else {
23811 {
23812 HI tmp_argihi;
23813 HI tmp_argilo;
23814 HI tmp_argjhi;
23815 HI tmp_argjlo;
23816 {
23817 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23818 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23819 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23820 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23821 }
23822 {
23823 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23824 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23825 written |= (1 << 13);
23826 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23827 }
23828 {
23829 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23830 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23831 written |= (1 << 14);
23832 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23833 }
23834 {
23835 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23836 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23837 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23838 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23839 }
23840 {
23841 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23842 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23843 written |= (1 << 15);
23844 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23845 }
23846 {
23847 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23848 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23849 written |= (1 << 16);
23850 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23851 }
23852 }
23853 }
23854 }
23855 }
23856
23857 abuf->written = written;
23858 return vpc;
23859 #undef FLD
23860 }
23861
23862 /* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23863
23864 static SEM_PC
23865 SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23866 {
23867 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23869 int UNUSED written = 0;
23870 IADDR UNUSED pc = abuf->addr;
23871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23872
23873 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23874 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23875 frvbf_media_acc_not_aligned (current_cpu);
23876 } else {
23877 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23878 frvbf_media_register_not_aligned (current_cpu);
23879 } else {
23880 {
23881 UHI tmp_argihi;
23882 UHI tmp_argilo;
23883 UHI tmp_argjhi;
23884 UHI tmp_argjlo;
23885 {
23886 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23887 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23888 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23889 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23890 }
23891 {
23892 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23893 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23894 written |= (1 << 13);
23895 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23896 }
23897 {
23898 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23899 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23900 written |= (1 << 14);
23901 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23902 }
23903 {
23904 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23905 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23906 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23907 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23908 }
23909 {
23910 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23911 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23912 written |= (1 << 15);
23913 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23914 }
23915 {
23916 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23917 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23918 written |= (1 << 16);
23919 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23920 }
23921 }
23922 }
23923 }
23924 }
23925
23926 abuf->written = written;
23927 return vpc;
23928 #undef FLD
23929 }
23930
23931 /* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23932
23933 static SEM_PC
23934 SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23935 {
23936 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23938 int UNUSED written = 0;
23939 IADDR UNUSED pc = abuf->addr;
23940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23941
23942 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23943 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23944 frvbf_media_acc_not_aligned (current_cpu);
23945 } else {
23946 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23947 frvbf_media_register_not_aligned (current_cpu);
23948 } else {
23949 {
23950 HI tmp_argihi;
23951 HI tmp_argilo;
23952 HI tmp_argjhi;
23953 HI tmp_argjlo;
23954 {
23955 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23956 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23957 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23958 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23959 }
23960 {
23961 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23962 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23963 written |= (1 << 13);
23964 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23965 }
23966 {
23967 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23968 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
23969 written |= (1 << 14);
23970 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23971 }
23972 {
23973 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23974 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23975 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23976 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23977 }
23978 {
23979 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23980 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
23981 written |= (1 << 15);
23982 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23983 }
23984 {
23985 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23986 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
23987 written |= (1 << 16);
23988 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23989 }
23990 }
23991 }
23992 }
23993 }
23994
23995 abuf->written = written;
23996 return vpc;
23997 #undef FLD
23998 }
23999
24000 /* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
24001
24002 static SEM_PC
24003 SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24004 {
24005 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24006 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24007 int UNUSED written = 0;
24008 IADDR UNUSED pc = abuf->addr;
24009 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24010
24011 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24012 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24013 frvbf_media_acc_not_aligned (current_cpu);
24014 } else {
24015 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24016 frvbf_media_register_not_aligned (current_cpu);
24017 } else {
24018 {
24019 UHI tmp_argihi;
24020 UHI tmp_argilo;
24021 UHI tmp_argjhi;
24022 UHI tmp_argjlo;
24023 {
24024 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24025 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24026 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24027 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24028 }
24029 {
24030 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24031 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24032 written |= (1 << 13);
24033 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24034 }
24035 {
24036 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24037 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24038 written |= (1 << 14);
24039 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24040 }
24041 {
24042 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24043 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24044 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24045 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24046 }
24047 {
24048 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24049 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24050 written |= (1 << 15);
24051 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24052 }
24053 {
24054 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24055 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24056 written |= (1 << 16);
24057 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24058 }
24059 }
24060 }
24061 }
24062 }
24063
24064 abuf->written = written;
24065 return vpc;
24066 #undef FLD
24067 }
24068
24069 /* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24070
24071 static SEM_PC
24072 SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24073 {
24074 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24076 int UNUSED written = 0;
24077 IADDR UNUSED pc = abuf->addr;
24078 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24079
24080 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24081 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24082 frvbf_media_acc_not_aligned (current_cpu);
24083 } else {
24084 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24085 frvbf_media_register_not_aligned (current_cpu);
24086 } else {
24087 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24088 {
24089 HI tmp_argihi;
24090 HI tmp_argilo;
24091 HI tmp_argjhi;
24092 HI tmp_argjlo;
24093 {
24094 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24095 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24096 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24097 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24098 }
24099 {
24100 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24101 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24102 written |= (1 << 15);
24103 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24104 }
24105 {
24106 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24107 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24108 written |= (1 << 16);
24109 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24110 }
24111 {
24112 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24113 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24114 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24115 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24116 }
24117 {
24118 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24119 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24120 written |= (1 << 17);
24121 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24122 }
24123 {
24124 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24125 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24126 written |= (1 << 18);
24127 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24128 }
24129 }
24130 }
24131 }
24132 }
24133 }
24134
24135 abuf->written = written;
24136 return vpc;
24137 #undef FLD
24138 }
24139
24140 /* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24141
24142 static SEM_PC
24143 SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24144 {
24145 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24147 int UNUSED written = 0;
24148 IADDR UNUSED pc = abuf->addr;
24149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24150
24151 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24152 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24153 frvbf_media_acc_not_aligned (current_cpu);
24154 } else {
24155 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24156 frvbf_media_register_not_aligned (current_cpu);
24157 } else {
24158 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24159 {
24160 UHI tmp_argihi;
24161 UHI tmp_argilo;
24162 UHI tmp_argjhi;
24163 UHI tmp_argjlo;
24164 {
24165 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24166 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24167 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24168 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24169 }
24170 {
24171 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24172 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24173 written |= (1 << 15);
24174 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24175 }
24176 {
24177 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24178 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24179 written |= (1 << 16);
24180 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24181 }
24182 {
24183 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24184 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24185 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24186 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24187 }
24188 {
24189 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24190 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24191 written |= (1 << 17);
24192 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24193 }
24194 {
24195 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24196 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24197 written |= (1 << 18);
24198 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24199 }
24200 }
24201 }
24202 }
24203 }
24204 }
24205
24206 abuf->written = written;
24207 return vpc;
24208 #undef FLD
24209 }
24210
24211 /* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24212
24213 static SEM_PC
24214 SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24215 {
24216 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24217 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24218 int UNUSED written = 0;
24219 IADDR UNUSED pc = abuf->addr;
24220 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24221
24222 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24223 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24224 frvbf_media_acc_not_aligned (current_cpu);
24225 } else {
24226 {
24227 HI tmp_argihi;
24228 HI tmp_argilo;
24229 HI tmp_argjhi;
24230 HI tmp_argjlo;
24231 {
24232 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24233 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24234 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24235 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24236 }
24237 {
24238 DI tmp_tmp;
24239 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24240 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24241 {
24242 {
24243 DI opval = MAKEDI (127, 0xffffffff);
24244 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24245 written |= (1 << 11);
24246 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24247 }
24248 frvbf_media_overflow (current_cpu, 8);
24249 }
24250 } else {
24251 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24252 {
24253 {
24254 DI opval = MAKEDI (0xffffff80, 0);
24255 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24256 written |= (1 << 11);
24257 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24258 }
24259 frvbf_media_overflow (current_cpu, 8);
24260 }
24261 } else {
24262 {
24263 DI opval = tmp_tmp;
24264 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24265 written |= (1 << 11);
24266 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24267 }
24268 }
24269 }
24270 }
24271 {
24272 DI tmp_tmp;
24273 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24274 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24275 {
24276 {
24277 DI opval = MAKEDI (127, 0xffffffff);
24278 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24279 written |= (1 << 12);
24280 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24281 }
24282 frvbf_media_overflow (current_cpu, 4);
24283 }
24284 } else {
24285 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24286 {
24287 {
24288 DI opval = MAKEDI (0xffffff80, 0);
24289 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24290 written |= (1 << 12);
24291 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24292 }
24293 frvbf_media_overflow (current_cpu, 4);
24294 }
24295 } else {
24296 {
24297 DI opval = tmp_tmp;
24298 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24299 written |= (1 << 12);
24300 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24301 }
24302 }
24303 }
24304 }
24305 }
24306 }
24307 }
24308
24309 abuf->written = written;
24310 return vpc;
24311 #undef FLD
24312 }
24313
24314 /* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24315
24316 static SEM_PC
24317 SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24318 {
24319 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24321 int UNUSED written = 0;
24322 IADDR UNUSED pc = abuf->addr;
24323 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24324
24325 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24326 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24327 frvbf_media_acc_not_aligned (current_cpu);
24328 } else {
24329 {
24330 UHI tmp_argihi;
24331 UHI tmp_argilo;
24332 UHI tmp_argjhi;
24333 UHI tmp_argjlo;
24334 {
24335 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24336 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24337 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24338 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24339 }
24340 {
24341 DI tmp_tmp;
24342 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24343 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24344 {
24345 {
24346 UDI opval = MAKEDI (255, 0xffffffff);
24347 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24348 written |= (1 << 11);
24349 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24350 }
24351 frvbf_media_overflow (current_cpu, 8);
24352 }
24353 } else {
24354 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24355 {
24356 {
24357 UDI opval = MAKEDI (0, 0);
24358 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24359 written |= (1 << 11);
24360 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24361 }
24362 frvbf_media_overflow (current_cpu, 8);
24363 }
24364 } else {
24365 {
24366 UDI opval = tmp_tmp;
24367 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24368 written |= (1 << 11);
24369 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24370 }
24371 }
24372 }
24373 }
24374 {
24375 DI tmp_tmp;
24376 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24377 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24378 {
24379 {
24380 UDI opval = MAKEDI (255, 0xffffffff);
24381 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24382 written |= (1 << 12);
24383 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24384 }
24385 frvbf_media_overflow (current_cpu, 4);
24386 }
24387 } else {
24388 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24389 {
24390 {
24391 UDI opval = MAKEDI (0, 0);
24392 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24393 written |= (1 << 12);
24394 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24395 }
24396 frvbf_media_overflow (current_cpu, 4);
24397 }
24398 } else {
24399 {
24400 UDI opval = tmp_tmp;
24401 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24402 written |= (1 << 12);
24403 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24404 }
24405 }
24406 }
24407 }
24408 }
24409 }
24410 }
24411
24412 abuf->written = written;
24413 return vpc;
24414 #undef FLD
24415 }
24416
24417 /* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24418
24419 static SEM_PC
24420 SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24421 {
24422 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24424 int UNUSED written = 0;
24425 IADDR UNUSED pc = abuf->addr;
24426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24427
24428 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24429 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24430 frvbf_media_acc_not_aligned (current_cpu);
24431 } else {
24432 {
24433 HI tmp_argihi;
24434 HI tmp_argilo;
24435 HI tmp_argjhi;
24436 HI tmp_argjlo;
24437 {
24438 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24439 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24440 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24441 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24442 }
24443 {
24444 DI tmp_tmp;
24445 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24446 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24447 {
24448 {
24449 DI opval = MAKEDI (127, 0xffffffff);
24450 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24451 written |= (1 << 11);
24452 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24453 }
24454 frvbf_media_overflow (current_cpu, 8);
24455 }
24456 } else {
24457 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24458 {
24459 {
24460 DI opval = MAKEDI (0xffffff80, 0);
24461 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24462 written |= (1 << 11);
24463 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24464 }
24465 frvbf_media_overflow (current_cpu, 8);
24466 }
24467 } else {
24468 {
24469 DI opval = tmp_tmp;
24470 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24471 written |= (1 << 11);
24472 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24473 }
24474 }
24475 }
24476 }
24477 {
24478 DI tmp_tmp;
24479 tmp_tmp = SUBDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24480 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24481 {
24482 {
24483 DI opval = MAKEDI (127, 0xffffffff);
24484 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24485 written |= (1 << 12);
24486 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24487 }
24488 frvbf_media_overflow (current_cpu, 4);
24489 }
24490 } else {
24491 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24492 {
24493 {
24494 DI opval = MAKEDI (0xffffff80, 0);
24495 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24496 written |= (1 << 12);
24497 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24498 }
24499 frvbf_media_overflow (current_cpu, 4);
24500 }
24501 } else {
24502 {
24503 DI opval = tmp_tmp;
24504 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24505 written |= (1 << 12);
24506 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24507 }
24508 }
24509 }
24510 }
24511 }
24512 }
24513 }
24514
24515 abuf->written = written;
24516 return vpc;
24517 #undef FLD
24518 }
24519
24520 /* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24521
24522 static SEM_PC
24523 SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24524 {
24525 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24527 int UNUSED written = 0;
24528 IADDR UNUSED pc = abuf->addr;
24529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24530
24531 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24532 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24533 frvbf_media_acc_not_aligned (current_cpu);
24534 } else {
24535 {
24536 UHI tmp_argihi;
24537 UHI tmp_argilo;
24538 UHI tmp_argjhi;
24539 UHI tmp_argjlo;
24540 {
24541 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24542 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24543 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24544 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24545 }
24546 {
24547 DI tmp_tmp;
24548 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24549 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24550 {
24551 {
24552 UDI opval = MAKEDI (255, 0xffffffff);
24553 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24554 written |= (1 << 11);
24555 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24556 }
24557 frvbf_media_overflow (current_cpu, 8);
24558 }
24559 } else {
24560 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24561 {
24562 {
24563 UDI opval = MAKEDI (0, 0);
24564 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24565 written |= (1 << 11);
24566 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24567 }
24568 frvbf_media_overflow (current_cpu, 8);
24569 }
24570 } else {
24571 {
24572 UDI opval = tmp_tmp;
24573 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24574 written |= (1 << 11);
24575 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24576 }
24577 }
24578 }
24579 }
24580 {
24581 DI tmp_tmp;
24582 tmp_tmp = SUBDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24583 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24584 {
24585 {
24586 UDI opval = MAKEDI (255, 0xffffffff);
24587 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24588 written |= (1 << 12);
24589 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24590 }
24591 frvbf_media_overflow (current_cpu, 4);
24592 }
24593 } else {
24594 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24595 {
24596 {
24597 UDI opval = MAKEDI (0, 0);
24598 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24599 written |= (1 << 12);
24600 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24601 }
24602 frvbf_media_overflow (current_cpu, 4);
24603 }
24604 } else {
24605 {
24606 UDI opval = tmp_tmp;
24607 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24608 written |= (1 << 12);
24609 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24610 }
24611 }
24612 }
24613 }
24614 }
24615 }
24616 }
24617
24618 abuf->written = written;
24619 return vpc;
24620 #undef FLD
24621 }
24622
24623 /* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24624
24625 static SEM_PC
24626 SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24627 {
24628 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24629 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24630 int UNUSED written = 0;
24631 IADDR UNUSED pc = abuf->addr;
24632 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24633
24634 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24635 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24636 frvbf_media_acc_not_aligned (current_cpu);
24637 } else {
24638 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24639 {
24640 HI tmp_argihi;
24641 HI tmp_argilo;
24642 HI tmp_argjhi;
24643 HI tmp_argjlo;
24644 {
24645 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24646 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24647 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24648 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24649 }
24650 {
24651 DI tmp_tmp;
24652 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24653 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24654 {
24655 {
24656 DI opval = MAKEDI (127, 0xffffffff);
24657 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24658 written |= (1 << 13);
24659 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24660 }
24661 frvbf_media_overflow (current_cpu, 8);
24662 }
24663 } else {
24664 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24665 {
24666 {
24667 DI opval = MAKEDI (0xffffff80, 0);
24668 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24669 written |= (1 << 13);
24670 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24671 }
24672 frvbf_media_overflow (current_cpu, 8);
24673 }
24674 } else {
24675 {
24676 DI opval = tmp_tmp;
24677 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24678 written |= (1 << 13);
24679 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24680 }
24681 }
24682 }
24683 }
24684 {
24685 DI tmp_tmp;
24686 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24687 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24688 {
24689 {
24690 DI opval = MAKEDI (127, 0xffffffff);
24691 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24692 written |= (1 << 14);
24693 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24694 }
24695 frvbf_media_overflow (current_cpu, 4);
24696 }
24697 } else {
24698 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24699 {
24700 {
24701 DI opval = MAKEDI (0xffffff80, 0);
24702 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24703 written |= (1 << 14);
24704 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24705 }
24706 frvbf_media_overflow (current_cpu, 4);
24707 }
24708 } else {
24709 {
24710 DI opval = tmp_tmp;
24711 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24712 written |= (1 << 14);
24713 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24714 }
24715 }
24716 }
24717 }
24718 }
24719 }
24720 }
24721 }
24722
24723 abuf->written = written;
24724 return vpc;
24725 #undef FLD
24726 }
24727
24728 /* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24729
24730 static SEM_PC
24731 SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24732 {
24733 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24735 int UNUSED written = 0;
24736 IADDR UNUSED pc = abuf->addr;
24737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24738
24739 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24740 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24741 frvbf_media_acc_not_aligned (current_cpu);
24742 } else {
24743 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24744 {
24745 UHI tmp_argihi;
24746 UHI tmp_argilo;
24747 UHI tmp_argjhi;
24748 UHI tmp_argjlo;
24749 {
24750 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24751 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24752 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24753 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24754 }
24755 {
24756 DI tmp_tmp;
24757 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24758 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24759 {
24760 {
24761 UDI opval = MAKEDI (255, 0xffffffff);
24762 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24763 written |= (1 << 13);
24764 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24765 }
24766 frvbf_media_overflow (current_cpu, 8);
24767 }
24768 } else {
24769 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24770 {
24771 {
24772 UDI opval = MAKEDI (0, 0);
24773 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24774 written |= (1 << 13);
24775 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24776 }
24777 frvbf_media_overflow (current_cpu, 8);
24778 }
24779 } else {
24780 {
24781 UDI opval = tmp_tmp;
24782 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24783 written |= (1 << 13);
24784 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24785 }
24786 }
24787 }
24788 }
24789 {
24790 DI tmp_tmp;
24791 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24792 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24793 {
24794 {
24795 UDI opval = MAKEDI (255, 0xffffffff);
24796 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24797 written |= (1 << 14);
24798 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24799 }
24800 frvbf_media_overflow (current_cpu, 4);
24801 }
24802 } else {
24803 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24804 {
24805 {
24806 UDI opval = MAKEDI (0, 0);
24807 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24808 written |= (1 << 14);
24809 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24810 }
24811 frvbf_media_overflow (current_cpu, 4);
24812 }
24813 } else {
24814 {
24815 UDI opval = tmp_tmp;
24816 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
24817 written |= (1 << 14);
24818 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24819 }
24820 }
24821 }
24822 }
24823 }
24824 }
24825 }
24826 }
24827
24828 abuf->written = written;
24829 return vpc;
24830 #undef FLD
24831 }
24832
24833 /* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24834
24835 static SEM_PC
24836 SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24837 {
24838 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24840 int UNUSED written = 0;
24841 IADDR UNUSED pc = abuf->addr;
24842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24843
24844 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24845 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24846 frvbf_media_acc_not_aligned (current_cpu);
24847 } else {
24848 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24849 frvbf_media_register_not_aligned (current_cpu);
24850 } else {
24851 {
24852 HI tmp_argihi;
24853 HI tmp_argilo;
24854 HI tmp_argjhi;
24855 HI tmp_argjlo;
24856 {
24857 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24858 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24859 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24860 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24861 }
24862 {
24863 DI tmp_tmp;
24864 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24865 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24866 {
24867 {
24868 DI opval = MAKEDI (127, 0xffffffff);
24869 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24870 written |= (1 << 17);
24871 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24872 }
24873 frvbf_media_overflow (current_cpu, 8);
24874 }
24875 } else {
24876 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24877 {
24878 {
24879 DI opval = MAKEDI (0xffffff80, 0);
24880 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24881 written |= (1 << 17);
24882 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24883 }
24884 frvbf_media_overflow (current_cpu, 8);
24885 }
24886 } else {
24887 {
24888 DI opval = tmp_tmp;
24889 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24890 written |= (1 << 17);
24891 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24892 }
24893 }
24894 }
24895 }
24896 {
24897 DI tmp_tmp;
24898 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24899 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24900 {
24901 {
24902 DI opval = MAKEDI (127, 0xffffffff);
24903 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24904 written |= (1 << 18);
24905 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24906 }
24907 frvbf_media_overflow (current_cpu, 4);
24908 }
24909 } else {
24910 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24911 {
24912 {
24913 DI opval = MAKEDI (0xffffff80, 0);
24914 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24915 written |= (1 << 18);
24916 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24917 }
24918 frvbf_media_overflow (current_cpu, 4);
24919 }
24920 } else {
24921 {
24922 DI opval = tmp_tmp;
24923 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
24924 written |= (1 << 18);
24925 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24926 }
24927 }
24928 }
24929 }
24930 {
24931 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24932 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24933 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24934 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24935 }
24936 {
24937 DI tmp_tmp;
24938 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24939 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24940 {
24941 {
24942 DI opval = MAKEDI (127, 0xffffffff);
24943 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24944 written |= (1 << 19);
24945 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24946 }
24947 frvbf_media_overflow (current_cpu, 2);
24948 }
24949 } else {
24950 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24951 {
24952 {
24953 DI opval = MAKEDI (0xffffff80, 0);
24954 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24955 written |= (1 << 19);
24956 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24957 }
24958 frvbf_media_overflow (current_cpu, 2);
24959 }
24960 } else {
24961 {
24962 DI opval = tmp_tmp;
24963 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
24964 written |= (1 << 19);
24965 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24966 }
24967 }
24968 }
24969 }
24970 {
24971 DI tmp_tmp;
24972 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24973 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24974 {
24975 {
24976 DI opval = MAKEDI (127, 0xffffffff);
24977 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24978 written |= (1 << 20);
24979 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24980 }
24981 frvbf_media_overflow (current_cpu, 1);
24982 }
24983 } else {
24984 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24985 {
24986 {
24987 DI opval = MAKEDI (0xffffff80, 0);
24988 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24989 written |= (1 << 20);
24990 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24991 }
24992 frvbf_media_overflow (current_cpu, 1);
24993 }
24994 } else {
24995 {
24996 DI opval = tmp_tmp;
24997 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
24998 written |= (1 << 20);
24999 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25000 }
25001 }
25002 }
25003 }
25004 }
25005 }
25006 }
25007 }
25008
25009 abuf->written = written;
25010 return vpc;
25011 #undef FLD
25012 }
25013
25014 /* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
25015
25016 static SEM_PC
25017 SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25018 {
25019 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25020 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25021 int UNUSED written = 0;
25022 IADDR UNUSED pc = abuf->addr;
25023 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25024
25025 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25026 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25027 frvbf_media_acc_not_aligned (current_cpu);
25028 } else {
25029 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25030 frvbf_media_register_not_aligned (current_cpu);
25031 } else {
25032 {
25033 UHI tmp_argihi;
25034 UHI tmp_argilo;
25035 UHI tmp_argjhi;
25036 UHI tmp_argjlo;
25037 {
25038 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25039 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25040 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25041 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25042 }
25043 {
25044 DI tmp_tmp;
25045 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25046 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25047 {
25048 {
25049 UDI opval = MAKEDI (255, 0xffffffff);
25050 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25051 written |= (1 << 17);
25052 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25053 }
25054 frvbf_media_overflow (current_cpu, 8);
25055 }
25056 } else {
25057 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25058 {
25059 {
25060 UDI opval = MAKEDI (0, 0);
25061 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25062 written |= (1 << 17);
25063 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25064 }
25065 frvbf_media_overflow (current_cpu, 8);
25066 }
25067 } else {
25068 {
25069 UDI opval = tmp_tmp;
25070 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25071 written |= (1 << 17);
25072 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25073 }
25074 }
25075 }
25076 }
25077 {
25078 DI tmp_tmp;
25079 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25080 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25081 {
25082 {
25083 UDI opval = MAKEDI (255, 0xffffffff);
25084 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25085 written |= (1 << 18);
25086 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25087 }
25088 frvbf_media_overflow (current_cpu, 4);
25089 }
25090 } else {
25091 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25092 {
25093 {
25094 UDI opval = MAKEDI (0, 0);
25095 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25096 written |= (1 << 18);
25097 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25098 }
25099 frvbf_media_overflow (current_cpu, 4);
25100 }
25101 } else {
25102 {
25103 UDI opval = tmp_tmp;
25104 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25105 written |= (1 << 18);
25106 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25107 }
25108 }
25109 }
25110 }
25111 {
25112 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25113 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25114 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25115 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25116 }
25117 {
25118 DI tmp_tmp;
25119 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25120 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25121 {
25122 {
25123 UDI opval = MAKEDI (255, 0xffffffff);
25124 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25125 written |= (1 << 19);
25126 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25127 }
25128 frvbf_media_overflow (current_cpu, 2);
25129 }
25130 } else {
25131 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25132 {
25133 {
25134 UDI opval = MAKEDI (0, 0);
25135 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25136 written |= (1 << 19);
25137 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25138 }
25139 frvbf_media_overflow (current_cpu, 2);
25140 }
25141 } else {
25142 {
25143 UDI opval = tmp_tmp;
25144 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25145 written |= (1 << 19);
25146 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25147 }
25148 }
25149 }
25150 }
25151 {
25152 DI tmp_tmp;
25153 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25154 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25155 {
25156 {
25157 UDI opval = MAKEDI (255, 0xffffffff);
25158 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25159 written |= (1 << 20);
25160 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25161 }
25162 frvbf_media_overflow (current_cpu, 1);
25163 }
25164 } else {
25165 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25166 {
25167 {
25168 UDI opval = MAKEDI (0, 0);
25169 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25170 written |= (1 << 20);
25171 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25172 }
25173 frvbf_media_overflow (current_cpu, 1);
25174 }
25175 } else {
25176 {
25177 UDI opval = tmp_tmp;
25178 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25179 written |= (1 << 20);
25180 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25181 }
25182 }
25183 }
25184 }
25185 }
25186 }
25187 }
25188 }
25189
25190 abuf->written = written;
25191 return vpc;
25192 #undef FLD
25193 }
25194
25195 /* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25196
25197 static SEM_PC
25198 SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25199 {
25200 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25202 int UNUSED written = 0;
25203 IADDR UNUSED pc = abuf->addr;
25204 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25205
25206 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25207 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25208 frvbf_media_acc_not_aligned (current_cpu);
25209 } else {
25210 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25211 frvbf_media_register_not_aligned (current_cpu);
25212 } else {
25213 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25214 {
25215 HI tmp_argihi;
25216 HI tmp_argilo;
25217 HI tmp_argjhi;
25218 HI tmp_argjlo;
25219 {
25220 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25221 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25222 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25223 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25224 }
25225 {
25226 DI tmp_tmp;
25227 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25228 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25229 {
25230 {
25231 DI opval = MAKEDI (127, 0xffffffff);
25232 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25233 written |= (1 << 19);
25234 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25235 }
25236 frvbf_media_overflow (current_cpu, 8);
25237 }
25238 } else {
25239 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25240 {
25241 {
25242 DI opval = MAKEDI (0xffffff80, 0);
25243 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25244 written |= (1 << 19);
25245 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25246 }
25247 frvbf_media_overflow (current_cpu, 8);
25248 }
25249 } else {
25250 {
25251 DI opval = tmp_tmp;
25252 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25253 written |= (1 << 19);
25254 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25255 }
25256 }
25257 }
25258 }
25259 {
25260 DI tmp_tmp;
25261 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25262 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25263 {
25264 {
25265 DI opval = MAKEDI (127, 0xffffffff);
25266 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25267 written |= (1 << 20);
25268 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25269 }
25270 frvbf_media_overflow (current_cpu, 4);
25271 }
25272 } else {
25273 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25274 {
25275 {
25276 DI opval = MAKEDI (0xffffff80, 0);
25277 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25278 written |= (1 << 20);
25279 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25280 }
25281 frvbf_media_overflow (current_cpu, 4);
25282 }
25283 } else {
25284 {
25285 DI opval = tmp_tmp;
25286 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25287 written |= (1 << 20);
25288 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25289 }
25290 }
25291 }
25292 }
25293 {
25294 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25295 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25296 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25297 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25298 }
25299 {
25300 DI tmp_tmp;
25301 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25302 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25303 {
25304 {
25305 DI opval = MAKEDI (127, 0xffffffff);
25306 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25307 written |= (1 << 21);
25308 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25309 }
25310 frvbf_media_overflow (current_cpu, 2);
25311 }
25312 } else {
25313 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25314 {
25315 {
25316 DI opval = MAKEDI (0xffffff80, 0);
25317 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25318 written |= (1 << 21);
25319 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25320 }
25321 frvbf_media_overflow (current_cpu, 2);
25322 }
25323 } else {
25324 {
25325 DI opval = tmp_tmp;
25326 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25327 written |= (1 << 21);
25328 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25329 }
25330 }
25331 }
25332 }
25333 {
25334 DI tmp_tmp;
25335 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25336 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25337 {
25338 {
25339 DI opval = MAKEDI (127, 0xffffffff);
25340 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25341 written |= (1 << 22);
25342 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25343 }
25344 frvbf_media_overflow (current_cpu, 1);
25345 }
25346 } else {
25347 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25348 {
25349 {
25350 DI opval = MAKEDI (0xffffff80, 0);
25351 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25352 written |= (1 << 22);
25353 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25354 }
25355 frvbf_media_overflow (current_cpu, 1);
25356 }
25357 } else {
25358 {
25359 DI opval = tmp_tmp;
25360 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25361 written |= (1 << 22);
25362 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25363 }
25364 }
25365 }
25366 }
25367 }
25368 }
25369 }
25370 }
25371 }
25372
25373 abuf->written = written;
25374 return vpc;
25375 #undef FLD
25376 }
25377
25378 /* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25379
25380 static SEM_PC
25381 SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25382 {
25383 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25385 int UNUSED written = 0;
25386 IADDR UNUSED pc = abuf->addr;
25387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25388
25389 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25390 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25391 frvbf_media_acc_not_aligned (current_cpu);
25392 } else {
25393 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25394 frvbf_media_register_not_aligned (current_cpu);
25395 } else {
25396 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25397 {
25398 UHI tmp_argihi;
25399 UHI tmp_argilo;
25400 UHI tmp_argjhi;
25401 UHI tmp_argjlo;
25402 {
25403 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25404 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25405 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25406 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25407 }
25408 {
25409 DI tmp_tmp;
25410 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25411 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25412 {
25413 {
25414 UDI opval = MAKEDI (255, 0xffffffff);
25415 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25416 written |= (1 << 19);
25417 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25418 }
25419 frvbf_media_overflow (current_cpu, 8);
25420 }
25421 } else {
25422 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25423 {
25424 {
25425 UDI opval = MAKEDI (0, 0);
25426 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25427 written |= (1 << 19);
25428 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25429 }
25430 frvbf_media_overflow (current_cpu, 8);
25431 }
25432 } else {
25433 {
25434 UDI opval = tmp_tmp;
25435 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25436 written |= (1 << 19);
25437 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25438 }
25439 }
25440 }
25441 }
25442 {
25443 DI tmp_tmp;
25444 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (1))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25445 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25446 {
25447 {
25448 UDI opval = MAKEDI (255, 0xffffffff);
25449 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25450 written |= (1 << 20);
25451 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25452 }
25453 frvbf_media_overflow (current_cpu, 4);
25454 }
25455 } else {
25456 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25457 {
25458 {
25459 UDI opval = MAKEDI (0, 0);
25460 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25461 written |= (1 << 20);
25462 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25463 }
25464 frvbf_media_overflow (current_cpu, 4);
25465 }
25466 } else {
25467 {
25468 UDI opval = tmp_tmp;
25469 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (1)), opval);
25470 written |= (1 << 20);
25471 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25472 }
25473 }
25474 }
25475 }
25476 {
25477 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25478 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25479 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25480 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25481 }
25482 {
25483 DI tmp_tmp;
25484 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (2))), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25485 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25486 {
25487 {
25488 UDI opval = MAKEDI (255, 0xffffffff);
25489 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25490 written |= (1 << 21);
25491 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25492 }
25493 frvbf_media_overflow (current_cpu, 2);
25494 }
25495 } else {
25496 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25497 {
25498 {
25499 UDI opval = MAKEDI (0, 0);
25500 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25501 written |= (1 << 21);
25502 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25503 }
25504 frvbf_media_overflow (current_cpu, 2);
25505 }
25506 } else {
25507 {
25508 UDI opval = tmp_tmp;
25509 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (2)), opval);
25510 written |= (1 << 21);
25511 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25512 }
25513 }
25514 }
25515 }
25516 {
25517 DI tmp_tmp;
25518 tmp_tmp = ADDDI (GET_H_ACC40U (((FLD (f_ACC40Uk)) + (3))), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25519 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25520 {
25521 {
25522 UDI opval = MAKEDI (255, 0xffffffff);
25523 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25524 written |= (1 << 22);
25525 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25526 }
25527 frvbf_media_overflow (current_cpu, 1);
25528 }
25529 } else {
25530 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25531 {
25532 {
25533 UDI opval = MAKEDI (0, 0);
25534 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25535 written |= (1 << 22);
25536 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25537 }
25538 frvbf_media_overflow (current_cpu, 1);
25539 }
25540 } else {
25541 {
25542 UDI opval = tmp_tmp;
25543 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ((FLD (f_ACC40Uk)) + (3)), opval);
25544 written |= (1 << 22);
25545 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25546 }
25547 }
25548 }
25549 }
25550 }
25551 }
25552 }
25553 }
25554 }
25555
25556 abuf->written = written;
25557 return vpc;
25558 #undef FLD
25559 }
25560
25561 /* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25562
25563 static SEM_PC
25564 SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25565 {
25566 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25568 int UNUSED written = 0;
25569 IADDR UNUSED pc = abuf->addr;
25570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25571
25572 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25573 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25574 frvbf_media_acc_not_aligned (current_cpu);
25575 } else {
25576 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25577 frvbf_media_register_not_aligned (current_cpu);
25578 } else {
25579 {
25580 HI tmp_argihi;
25581 HI tmp_argilo;
25582 HI tmp_argjhi;
25583 HI tmp_argjlo;
25584 {
25585 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25586 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25587 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25588 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25589 }
25590 {
25591 DI tmp_tmp;
25592 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25593 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25594 {
25595 {
25596 DI opval = MAKEDI (127, 0xffffffff);
25597 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25598 written |= (1 << 19);
25599 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25600 }
25601 frvbf_media_overflow (current_cpu, 2);
25602 }
25603 } else {
25604 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25605 {
25606 {
25607 DI opval = MAKEDI (0xffffff80, 0);
25608 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25609 written |= (1 << 19);
25610 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25611 }
25612 frvbf_media_overflow (current_cpu, 2);
25613 }
25614 } else {
25615 {
25616 DI opval = tmp_tmp;
25617 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25618 written |= (1 << 19);
25619 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25620 }
25621 }
25622 }
25623 }
25624 {
25625 DI tmp_tmp;
25626 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25627 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25628 {
25629 {
25630 DI opval = MAKEDI (127, 0xffffffff);
25631 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25632 written |= (1 << 20);
25633 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25634 }
25635 frvbf_media_overflow (current_cpu, 1);
25636 }
25637 } else {
25638 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25639 {
25640 {
25641 DI opval = MAKEDI (0xffffff80, 0);
25642 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25643 written |= (1 << 20);
25644 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25645 }
25646 frvbf_media_overflow (current_cpu, 1);
25647 }
25648 } else {
25649 {
25650 DI opval = tmp_tmp;
25651 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25652 written |= (1 << 20);
25653 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25654 }
25655 }
25656 }
25657 }
25658 {
25659 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25660 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25661 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25662 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25663 }
25664 {
25665 DI tmp_tmp;
25666 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25667 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25668 {
25669 {
25670 DI opval = MAKEDI (127, 0xffffffff);
25671 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25672 written |= (1 << 17);
25673 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25674 }
25675 frvbf_media_overflow (current_cpu, 8);
25676 }
25677 } else {
25678 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25679 {
25680 {
25681 DI opval = MAKEDI (0xffffff80, 0);
25682 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25683 written |= (1 << 17);
25684 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25685 }
25686 frvbf_media_overflow (current_cpu, 8);
25687 }
25688 } else {
25689 {
25690 DI opval = tmp_tmp;
25691 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25692 written |= (1 << 17);
25693 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25694 }
25695 }
25696 }
25697 }
25698 {
25699 DI tmp_tmp;
25700 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25701 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25702 {
25703 {
25704 DI opval = MAKEDI (127, 0xffffffff);
25705 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25706 written |= (1 << 18);
25707 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25708 }
25709 frvbf_media_overflow (current_cpu, 4);
25710 }
25711 } else {
25712 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25713 {
25714 {
25715 DI opval = MAKEDI (0xffffff80, 0);
25716 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25717 written |= (1 << 18);
25718 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25719 }
25720 frvbf_media_overflow (current_cpu, 4);
25721 }
25722 } else {
25723 {
25724 DI opval = tmp_tmp;
25725 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25726 written |= (1 << 18);
25727 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25728 }
25729 }
25730 }
25731 }
25732 }
25733 }
25734 }
25735 }
25736
25737 abuf->written = written;
25738 return vpc;
25739 #undef FLD
25740 }
25741
25742 /* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25743
25744 static SEM_PC
25745 SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25746 {
25747 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25749 int UNUSED written = 0;
25750 IADDR UNUSED pc = abuf->addr;
25751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25752
25753 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25754 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25755 frvbf_media_acc_not_aligned (current_cpu);
25756 } else {
25757 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25758 frvbf_media_register_not_aligned (current_cpu);
25759 } else {
25760 {
25761 HI tmp_argihi;
25762 HI tmp_argilo;
25763 HI tmp_argjhi;
25764 HI tmp_argjlo;
25765 {
25766 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25767 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25768 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25769 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25770 }
25771 {
25772 DI tmp_tmp;
25773 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25774 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25775 {
25776 {
25777 DI opval = MAKEDI (127, 0xffffffff);
25778 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25779 written |= (1 << 19);
25780 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25781 }
25782 frvbf_media_overflow (current_cpu, 2);
25783 }
25784 } else {
25785 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25786 {
25787 {
25788 DI opval = MAKEDI (0xffffff80, 0);
25789 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25790 written |= (1 << 19);
25791 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25792 }
25793 frvbf_media_overflow (current_cpu, 2);
25794 }
25795 } else {
25796 {
25797 DI opval = tmp_tmp;
25798 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
25799 written |= (1 << 19);
25800 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25801 }
25802 }
25803 }
25804 }
25805 {
25806 DI tmp_tmp;
25807 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25808 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25809 {
25810 {
25811 DI opval = MAKEDI (127, 0xffffffff);
25812 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25813 written |= (1 << 20);
25814 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25815 }
25816 frvbf_media_overflow (current_cpu, 1);
25817 }
25818 } else {
25819 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25820 {
25821 {
25822 DI opval = MAKEDI (0xffffff80, 0);
25823 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25824 written |= (1 << 20);
25825 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25826 }
25827 frvbf_media_overflow (current_cpu, 1);
25828 }
25829 } else {
25830 {
25831 DI opval = tmp_tmp;
25832 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
25833 written |= (1 << 20);
25834 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25835 }
25836 }
25837 }
25838 }
25839 {
25840 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25841 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25842 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25843 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25844 }
25845 {
25846 DI tmp_tmp;
25847 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25848 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25849 {
25850 {
25851 DI opval = MAKEDI (127, 0xffffffff);
25852 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25853 written |= (1 << 17);
25854 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25855 }
25856 frvbf_media_overflow (current_cpu, 8);
25857 }
25858 } else {
25859 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25860 {
25861 {
25862 DI opval = MAKEDI (0xffffff80, 0);
25863 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25864 written |= (1 << 17);
25865 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25866 }
25867 frvbf_media_overflow (current_cpu, 8);
25868 }
25869 } else {
25870 {
25871 DI opval = tmp_tmp;
25872 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25873 written |= (1 << 17);
25874 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25875 }
25876 }
25877 }
25878 }
25879 {
25880 DI tmp_tmp;
25881 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25882 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25883 {
25884 {
25885 DI opval = MAKEDI (127, 0xffffffff);
25886 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25887 written |= (1 << 18);
25888 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25889 }
25890 frvbf_media_overflow (current_cpu, 4);
25891 }
25892 } else {
25893 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25894 {
25895 {
25896 DI opval = MAKEDI (0xffffff80, 0);
25897 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25898 written |= (1 << 18);
25899 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25900 }
25901 frvbf_media_overflow (current_cpu, 4);
25902 }
25903 } else {
25904 {
25905 DI opval = tmp_tmp;
25906 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25907 written |= (1 << 18);
25908 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25909 }
25910 }
25911 }
25912 }
25913 }
25914 }
25915 }
25916 }
25917
25918 abuf->written = written;
25919 return vpc;
25920 #undef FLD
25921 }
25922
25923 /* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25924
25925 static SEM_PC
25926 SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25927 {
25928 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25930 int UNUSED written = 0;
25931 IADDR UNUSED pc = abuf->addr;
25932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25933
25934 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25935 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25936 frvbf_media_acc_not_aligned (current_cpu);
25937 } else {
25938 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25939 frvbf_media_register_not_aligned (current_cpu);
25940 } else {
25941 {
25942 HI tmp_argihi;
25943 HI tmp_argilo;
25944 HI tmp_argjhi;
25945 HI tmp_argjlo;
25946 {
25947 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25948 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25949 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25950 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25951 }
25952 {
25953 DI tmp_tmp;
25954 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25955 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25956 {
25957 {
25958 DI opval = MAKEDI (127, 0xffffffff);
25959 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25960 written |= (1 << 17);
25961 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25962 }
25963 frvbf_media_overflow (current_cpu, 8);
25964 }
25965 } else {
25966 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25967 {
25968 {
25969 DI opval = MAKEDI (0xffffff80, 0);
25970 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25971 written |= (1 << 17);
25972 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25973 }
25974 frvbf_media_overflow (current_cpu, 8);
25975 }
25976 } else {
25977 {
25978 DI opval = tmp_tmp;
25979 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25980 written |= (1 << 17);
25981 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25982 }
25983 }
25984 }
25985 }
25986 {
25987 DI tmp_tmp;
25988 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (1))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25989 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25990 {
25991 {
25992 DI opval = MAKEDI (127, 0xffffffff);
25993 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
25994 written |= (1 << 18);
25995 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25996 }
25997 frvbf_media_overflow (current_cpu, 4);
25998 }
25999 } else {
26000 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26001 {
26002 {
26003 DI opval = MAKEDI (0xffffff80, 0);
26004 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26005 written |= (1 << 18);
26006 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26007 }
26008 frvbf_media_overflow (current_cpu, 4);
26009 }
26010 } else {
26011 {
26012 DI opval = tmp_tmp;
26013 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26014 written |= (1 << 18);
26015 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26016 }
26017 }
26018 }
26019 }
26020 {
26021 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26022 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26023 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26024 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26025 }
26026 {
26027 DI tmp_tmp;
26028 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (2))), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
26029 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26030 {
26031 {
26032 DI opval = MAKEDI (127, 0xffffffff);
26033 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26034 written |= (1 << 19);
26035 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26036 }
26037 frvbf_media_overflow (current_cpu, 2);
26038 }
26039 } else {
26040 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26041 {
26042 {
26043 DI opval = MAKEDI (0xffffff80, 0);
26044 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26045 written |= (1 << 19);
26046 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26047 }
26048 frvbf_media_overflow (current_cpu, 2);
26049 }
26050 } else {
26051 {
26052 DI opval = tmp_tmp;
26053 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (2)), opval);
26054 written |= (1 << 19);
26055 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26056 }
26057 }
26058 }
26059 }
26060 {
26061 DI tmp_tmp;
26062 tmp_tmp = ADDDI (GET_H_ACC40S (((FLD (f_ACC40Sk)) + (3))), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
26063 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26064 {
26065 {
26066 DI opval = MAKEDI (127, 0xffffffff);
26067 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26068 written |= (1 << 20);
26069 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26070 }
26071 frvbf_media_overflow (current_cpu, 1);
26072 }
26073 } else {
26074 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26075 {
26076 {
26077 DI opval = MAKEDI (0xffffff80, 0);
26078 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26079 written |= (1 << 20);
26080 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26081 }
26082 frvbf_media_overflow (current_cpu, 1);
26083 }
26084 } else {
26085 {
26086 DI opval = tmp_tmp;
26087 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (3)), opval);
26088 written |= (1 << 20);
26089 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26090 }
26091 }
26092 }
26093 }
26094 }
26095 }
26096 }
26097 }
26098
26099 abuf->written = written;
26100 return vpc;
26101 #undef FLD
26102 }
26103
26104 /* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26105
26106 static SEM_PC
26107 SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26108 {
26109 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26110 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26111 int UNUSED written = 0;
26112 IADDR UNUSED pc = abuf->addr;
26113 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26114
26115 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26116 {
26117 HI tmp_argihi;
26118 HI tmp_argilo;
26119 HI tmp_argjhi;
26120 HI tmp_argjlo;
26121 {
26122 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26123 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26124 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26125 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26126 }
26127 {
26128 DI tmp_tmp1;
26129 DI tmp_tmp2;
26130 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26131 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26132 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26133 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26134 {
26135 {
26136 DI opval = MAKEDI (127, 0xffffffff);
26137 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26138 written |= (1 << 9);
26139 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26140 }
26141 frvbf_media_overflow (current_cpu, 8);
26142 }
26143 } else {
26144 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26145 {
26146 {
26147 DI opval = MAKEDI (0xffffff80, 0);
26148 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26149 written |= (1 << 9);
26150 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26151 }
26152 frvbf_media_overflow (current_cpu, 8);
26153 }
26154 } else {
26155 {
26156 DI opval = tmp_tmp1;
26157 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26158 written |= (1 << 9);
26159 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26160 }
26161 }
26162 }
26163 }
26164 }
26165 }
26166
26167 abuf->written = written;
26168 return vpc;
26169 #undef FLD
26170 }
26171
26172 /* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26173
26174 static SEM_PC
26175 SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26176 {
26177 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26178 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26179 int UNUSED written = 0;
26180 IADDR UNUSED pc = abuf->addr;
26181 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26182
26183 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26184 {
26185 UHI tmp_argihi;
26186 UHI tmp_argilo;
26187 UHI tmp_argjhi;
26188 UHI tmp_argjlo;
26189 {
26190 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26191 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26192 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26193 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26194 }
26195 {
26196 DI tmp_tmp1;
26197 DI tmp_tmp2;
26198 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26199 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26200 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26201 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26202 {
26203 {
26204 DI opval = MAKEDI (255, 0xffffffff);
26205 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26206 written |= (1 << 9);
26207 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26208 }
26209 frvbf_media_overflow (current_cpu, 8);
26210 }
26211 } else {
26212 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26213 {
26214 {
26215 DI opval = MAKEDI (0, 0);
26216 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26217 written |= (1 << 9);
26218 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26219 }
26220 frvbf_media_overflow (current_cpu, 8);
26221 }
26222 } else {
26223 {
26224 DI opval = tmp_tmp1;
26225 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26226 written |= (1 << 9);
26227 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26228 }
26229 }
26230 }
26231 }
26232 }
26233 }
26234
26235 abuf->written = written;
26236 return vpc;
26237 #undef FLD
26238 }
26239
26240 /* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26241
26242 static SEM_PC
26243 SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26244 {
26245 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26246 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26247 int UNUSED written = 0;
26248 IADDR UNUSED pc = abuf->addr;
26249 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26250
26251 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26252 {
26253 HI tmp_argihi;
26254 HI tmp_argilo;
26255 HI tmp_argjhi;
26256 HI tmp_argjlo;
26257 {
26258 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26259 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26260 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26261 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26262 }
26263 {
26264 DI tmp_tmp1;
26265 DI tmp_tmp2;
26266 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26267 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26268 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26269 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26270 {
26271 {
26272 DI opval = MAKEDI (127, 0xffffffff);
26273 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26274 written |= (1 << 9);
26275 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26276 }
26277 frvbf_media_overflow (current_cpu, 8);
26278 }
26279 } else {
26280 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26281 {
26282 {
26283 DI opval = MAKEDI (0xffffff80, 0);
26284 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26285 written |= (1 << 9);
26286 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26287 }
26288 frvbf_media_overflow (current_cpu, 8);
26289 }
26290 } else {
26291 {
26292 DI opval = tmp_tmp1;
26293 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26294 written |= (1 << 9);
26295 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26296 }
26297 }
26298 }
26299 }
26300 }
26301 }
26302
26303 abuf->written = written;
26304 return vpc;
26305 #undef FLD
26306 }
26307
26308 /* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26309
26310 static SEM_PC
26311 SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26312 {
26313 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26315 int UNUSED written = 0;
26316 IADDR UNUSED pc = abuf->addr;
26317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26318
26319 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26320 {
26321 UHI tmp_argihi;
26322 UHI tmp_argilo;
26323 UHI tmp_argjhi;
26324 UHI tmp_argjlo;
26325 {
26326 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26327 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26328 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26329 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26330 }
26331 {
26332 DI tmp_tmp1;
26333 DI tmp_tmp2;
26334 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26335 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26336 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26337 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26338 {
26339 {
26340 DI opval = MAKEDI (255, 0xffffffff);
26341 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26342 written |= (1 << 9);
26343 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26344 }
26345 frvbf_media_overflow (current_cpu, 8);
26346 }
26347 } else {
26348 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26349 {
26350 {
26351 DI opval = MAKEDI (0, 0);
26352 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26353 written |= (1 << 9);
26354 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26355 }
26356 frvbf_media_overflow (current_cpu, 8);
26357 }
26358 } else {
26359 {
26360 DI opval = tmp_tmp1;
26361 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26362 written |= (1 << 9);
26363 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26364 }
26365 }
26366 }
26367 }
26368 }
26369 }
26370
26371 abuf->written = written;
26372 return vpc;
26373 #undef FLD
26374 }
26375
26376 /* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26377
26378 static SEM_PC
26379 SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26380 {
26381 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26382 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26383 int UNUSED written = 0;
26384 IADDR UNUSED pc = abuf->addr;
26385 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26386
26387 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26388 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26389 {
26390 HI tmp_argihi;
26391 HI tmp_argilo;
26392 HI tmp_argjhi;
26393 HI tmp_argjlo;
26394 {
26395 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26396 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26397 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26398 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26399 }
26400 {
26401 DI tmp_tmp1;
26402 DI tmp_tmp2;
26403 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26404 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26405 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26406 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26407 {
26408 {
26409 DI opval = MAKEDI (127, 0xffffffff);
26410 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26411 written |= (1 << 11);
26412 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26413 }
26414 frvbf_media_overflow (current_cpu, 8);
26415 }
26416 } else {
26417 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26418 {
26419 {
26420 DI opval = MAKEDI (0xffffff80, 0);
26421 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26422 written |= (1 << 11);
26423 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26424 }
26425 frvbf_media_overflow (current_cpu, 8);
26426 }
26427 } else {
26428 {
26429 DI opval = tmp_tmp1;
26430 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26431 written |= (1 << 11);
26432 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26433 }
26434 }
26435 }
26436 }
26437 }
26438 }
26439 }
26440
26441 abuf->written = written;
26442 return vpc;
26443 #undef FLD
26444 }
26445
26446 /* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26447
26448 static SEM_PC
26449 SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26450 {
26451 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26453 int UNUSED written = 0;
26454 IADDR UNUSED pc = abuf->addr;
26455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26456
26457 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26458 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26459 {
26460 UHI tmp_argihi;
26461 UHI tmp_argilo;
26462 UHI tmp_argjhi;
26463 UHI tmp_argjlo;
26464 {
26465 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26466 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26467 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26468 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26469 }
26470 {
26471 DI tmp_tmp1;
26472 DI tmp_tmp2;
26473 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26474 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26475 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26476 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26477 {
26478 {
26479 DI opval = MAKEDI (255, 0xffffffff);
26480 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26481 written |= (1 << 11);
26482 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26483 }
26484 frvbf_media_overflow (current_cpu, 8);
26485 }
26486 } else {
26487 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26488 {
26489 {
26490 DI opval = MAKEDI (0, 0);
26491 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26492 written |= (1 << 11);
26493 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26494 }
26495 frvbf_media_overflow (current_cpu, 8);
26496 }
26497 } else {
26498 {
26499 DI opval = tmp_tmp1;
26500 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26501 written |= (1 << 11);
26502 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26503 }
26504 }
26505 }
26506 }
26507 }
26508 }
26509 }
26510
26511 abuf->written = written;
26512 return vpc;
26513 #undef FLD
26514 }
26515
26516 /* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26517
26518 static SEM_PC
26519 SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26520 {
26521 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26523 int UNUSED written = 0;
26524 IADDR UNUSED pc = abuf->addr;
26525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26526
26527 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26528 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26529 {
26530 HI tmp_argihi;
26531 HI tmp_argilo;
26532 HI tmp_argjhi;
26533 HI tmp_argjlo;
26534 {
26535 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26536 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26537 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26538 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26539 }
26540 {
26541 DI tmp_tmp1;
26542 DI tmp_tmp2;
26543 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26544 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26545 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26546 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26547 {
26548 {
26549 DI opval = MAKEDI (127, 0xffffffff);
26550 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26551 written |= (1 << 11);
26552 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26553 }
26554 frvbf_media_overflow (current_cpu, 8);
26555 }
26556 } else {
26557 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26558 {
26559 {
26560 DI opval = MAKEDI (0xffffff80, 0);
26561 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26562 written |= (1 << 11);
26563 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26564 }
26565 frvbf_media_overflow (current_cpu, 8);
26566 }
26567 } else {
26568 {
26569 DI opval = tmp_tmp1;
26570 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26571 written |= (1 << 11);
26572 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26573 }
26574 }
26575 }
26576 }
26577 }
26578 }
26579 }
26580
26581 abuf->written = written;
26582 return vpc;
26583 #undef FLD
26584 }
26585
26586 /* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26587
26588 static SEM_PC
26589 SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26590 {
26591 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26592 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26593 int UNUSED written = 0;
26594 IADDR UNUSED pc = abuf->addr;
26595 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26596
26597 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26598 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26599 {
26600 UHI tmp_argihi;
26601 UHI tmp_argilo;
26602 UHI tmp_argjhi;
26603 UHI tmp_argjlo;
26604 {
26605 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26606 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26607 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26608 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26609 }
26610 {
26611 DI tmp_tmp1;
26612 DI tmp_tmp2;
26613 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26614 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26615 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26616 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26617 {
26618 {
26619 DI opval = MAKEDI (255, 0xffffffff);
26620 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26621 written |= (1 << 11);
26622 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26623 }
26624 frvbf_media_overflow (current_cpu, 8);
26625 }
26626 } else {
26627 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26628 {
26629 {
26630 DI opval = MAKEDI (0, 0);
26631 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26632 written |= (1 << 11);
26633 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26634 }
26635 frvbf_media_overflow (current_cpu, 8);
26636 }
26637 } else {
26638 {
26639 DI opval = tmp_tmp1;
26640 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26641 written |= (1 << 11);
26642 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26643 }
26644 }
26645 }
26646 }
26647 }
26648 }
26649 }
26650
26651 abuf->written = written;
26652 return vpc;
26653 #undef FLD
26654 }
26655
26656 /* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26657
26658 static SEM_PC
26659 SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26660 {
26661 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26663 int UNUSED written = 0;
26664 IADDR UNUSED pc = abuf->addr;
26665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26666
26667 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26668 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26669 frvbf_media_acc_not_aligned (current_cpu);
26670 } else {
26671 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26672 frvbf_media_register_not_aligned (current_cpu);
26673 } else {
26674 {
26675 HI tmp_argihi;
26676 HI tmp_argilo;
26677 HI tmp_argjhi;
26678 HI tmp_argjlo;
26679 {
26680 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26681 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26682 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26683 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26684 }
26685 {
26686 DI tmp_tmp1;
26687 DI tmp_tmp2;
26688 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26689 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26690 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26691 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26692 {
26693 {
26694 DI opval = MAKEDI (127, 0xffffffff);
26695 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26696 written |= (1 << 13);
26697 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26698 }
26699 frvbf_media_overflow (current_cpu, 8);
26700 }
26701 } else {
26702 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26703 {
26704 {
26705 DI opval = MAKEDI (0xffffff80, 0);
26706 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26707 written |= (1 << 13);
26708 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26709 }
26710 frvbf_media_overflow (current_cpu, 8);
26711 }
26712 } else {
26713 {
26714 DI opval = tmp_tmp1;
26715 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26716 written |= (1 << 13);
26717 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26718 }
26719 }
26720 }
26721 }
26722 {
26723 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26724 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26725 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26726 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26727 }
26728 {
26729 DI tmp_tmp1;
26730 DI tmp_tmp2;
26731 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26732 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26733 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26734 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26735 {
26736 {
26737 DI opval = MAKEDI (127, 0xffffffff);
26738 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26739 written |= (1 << 14);
26740 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26741 }
26742 frvbf_media_overflow (current_cpu, 4);
26743 }
26744 } else {
26745 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26746 {
26747 {
26748 DI opval = MAKEDI (0xffffff80, 0);
26749 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26750 written |= (1 << 14);
26751 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26752 }
26753 frvbf_media_overflow (current_cpu, 4);
26754 }
26755 } else {
26756 {
26757 DI opval = tmp_tmp1;
26758 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26759 written |= (1 << 14);
26760 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26761 }
26762 }
26763 }
26764 }
26765 }
26766 }
26767 }
26768 }
26769
26770 abuf->written = written;
26771 return vpc;
26772 #undef FLD
26773 }
26774
26775 /* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26776
26777 static SEM_PC
26778 SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26779 {
26780 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26782 int UNUSED written = 0;
26783 IADDR UNUSED pc = abuf->addr;
26784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26785
26786 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26787 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26788 frvbf_media_acc_not_aligned (current_cpu);
26789 } else {
26790 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26791 frvbf_media_register_not_aligned (current_cpu);
26792 } else {
26793 {
26794 UHI tmp_argihi;
26795 UHI tmp_argilo;
26796 UHI tmp_argjhi;
26797 UHI tmp_argjlo;
26798 {
26799 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26800 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26801 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26802 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26803 }
26804 {
26805 DI tmp_tmp1;
26806 DI tmp_tmp2;
26807 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26808 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26809 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26810 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26811 {
26812 {
26813 DI opval = MAKEDI (255, 0xffffffff);
26814 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26815 written |= (1 << 13);
26816 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26817 }
26818 frvbf_media_overflow (current_cpu, 8);
26819 }
26820 } else {
26821 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26822 {
26823 {
26824 DI opval = MAKEDI (0, 0);
26825 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26826 written |= (1 << 13);
26827 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26828 }
26829 frvbf_media_overflow (current_cpu, 8);
26830 }
26831 } else {
26832 {
26833 DI opval = tmp_tmp1;
26834 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26835 written |= (1 << 13);
26836 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26837 }
26838 }
26839 }
26840 }
26841 {
26842 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26843 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26844 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26845 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26846 }
26847 {
26848 DI tmp_tmp1;
26849 DI tmp_tmp2;
26850 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26851 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26852 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26853 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26854 {
26855 {
26856 DI opval = MAKEDI (255, 0xffffffff);
26857 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26858 written |= (1 << 14);
26859 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26860 }
26861 frvbf_media_overflow (current_cpu, 4);
26862 }
26863 } else {
26864 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26865 {
26866 {
26867 DI opval = MAKEDI (0, 0);
26868 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26869 written |= (1 << 14);
26870 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26871 }
26872 frvbf_media_overflow (current_cpu, 4);
26873 }
26874 } else {
26875 {
26876 DI opval = tmp_tmp1;
26877 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26878 written |= (1 << 14);
26879 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26880 }
26881 }
26882 }
26883 }
26884 }
26885 }
26886 }
26887 }
26888
26889 abuf->written = written;
26890 return vpc;
26891 #undef FLD
26892 }
26893
26894 /* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26895
26896 static SEM_PC
26897 SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26898 {
26899 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26901 int UNUSED written = 0;
26902 IADDR UNUSED pc = abuf->addr;
26903 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26904
26905 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26906 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26907 frvbf_media_acc_not_aligned (current_cpu);
26908 } else {
26909 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26910 frvbf_media_register_not_aligned (current_cpu);
26911 } else {
26912 {
26913 HI tmp_argihi;
26914 HI tmp_argilo;
26915 HI tmp_argjhi;
26916 HI tmp_argjlo;
26917 {
26918 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26919 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26920 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26921 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26922 }
26923 {
26924 DI tmp_tmp1;
26925 DI tmp_tmp2;
26926 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26927 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26928 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26929 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26930 {
26931 {
26932 DI opval = MAKEDI (127, 0xffffffff);
26933 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26934 written |= (1 << 13);
26935 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26936 }
26937 frvbf_media_overflow (current_cpu, 8);
26938 }
26939 } else {
26940 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26941 {
26942 {
26943 DI opval = MAKEDI (0xffffff80, 0);
26944 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26945 written |= (1 << 13);
26946 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26947 }
26948 frvbf_media_overflow (current_cpu, 8);
26949 }
26950 } else {
26951 {
26952 DI opval = tmp_tmp1;
26953 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26954 written |= (1 << 13);
26955 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26956 }
26957 }
26958 }
26959 }
26960 {
26961 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26962 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26963 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26964 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26965 }
26966 {
26967 DI tmp_tmp1;
26968 DI tmp_tmp2;
26969 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26970 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26971 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26972 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26973 {
26974 {
26975 DI opval = MAKEDI (127, 0xffffffff);
26976 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26977 written |= (1 << 14);
26978 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26979 }
26980 frvbf_media_overflow (current_cpu, 4);
26981 }
26982 } else {
26983 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26984 {
26985 {
26986 DI opval = MAKEDI (0xffffff80, 0);
26987 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26988 written |= (1 << 14);
26989 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26990 }
26991 frvbf_media_overflow (current_cpu, 4);
26992 }
26993 } else {
26994 {
26995 DI opval = tmp_tmp1;
26996 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
26997 written |= (1 << 14);
26998 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26999 }
27000 }
27001 }
27002 }
27003 }
27004 }
27005 }
27006 }
27007
27008 abuf->written = written;
27009 return vpc;
27010 #undef FLD
27011 }
27012
27013 /* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
27014
27015 static SEM_PC
27016 SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27017 {
27018 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
27019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27020 int UNUSED written = 0;
27021 IADDR UNUSED pc = abuf->addr;
27022 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27023
27024 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
27025 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
27026 frvbf_media_acc_not_aligned (current_cpu);
27027 } else {
27028 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
27029 frvbf_media_register_not_aligned (current_cpu);
27030 } else {
27031 {
27032 UHI tmp_argihi;
27033 UHI tmp_argilo;
27034 UHI tmp_argjhi;
27035 UHI tmp_argjlo;
27036 {
27037 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27038 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27039 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27040 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (0))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27041 }
27042 {
27043 DI tmp_tmp1;
27044 DI tmp_tmp2;
27045 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27046 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27047 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27048 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27049 {
27050 {
27051 DI opval = MAKEDI (255, 0xffffffff);
27052 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27053 written |= (1 << 13);
27054 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27055 }
27056 frvbf_media_overflow (current_cpu, 8);
27057 }
27058 } else {
27059 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27060 {
27061 {
27062 DI opval = MAKEDI (0, 0);
27063 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27064 written |= (1 << 13);
27065 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27066 }
27067 frvbf_media_overflow (current_cpu, 8);
27068 }
27069 } else {
27070 {
27071 DI opval = tmp_tmp1;
27072 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27073 written |= (1 << 13);
27074 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27075 }
27076 }
27077 }
27078 }
27079 {
27080 tmp_argihi = ADDHI (GET_H_FR_HI (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27081 tmp_argilo = ADDHI (GET_H_FR_LO (((FLD (f_FRi)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27082 tmp_argjhi = ADDHI (GET_H_FR_HI (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27083 tmp_argjlo = ADDHI (GET_H_FR_LO (((FLD (f_FRj)) + (1))), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27084 }
27085 {
27086 DI tmp_tmp1;
27087 DI tmp_tmp2;
27088 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27089 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27090 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27091 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27092 {
27093 {
27094 DI opval = MAKEDI (255, 0xffffffff);
27095 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27096 written |= (1 << 14);
27097 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27098 }
27099 frvbf_media_overflow (current_cpu, 4);
27100 }
27101 } else {
27102 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27103 {
27104 {
27105 DI opval = MAKEDI (0, 0);
27106 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27107 written |= (1 << 14);
27108 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27109 }
27110 frvbf_media_overflow (current_cpu, 4);
27111 }
27112 } else {
27113 {
27114 DI opval = tmp_tmp1;
27115 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ((FLD (f_ACC40Sk)) + (1)), opval);
27116 written |= (1 << 14);
27117 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27118 }
27119 }
27120 }
27121 }
27122 }
27123 }
27124 }
27125 }
27126
27127 abuf->written = written;
27128 return vpc;
27129 #undef FLD
27130 }
27131
27132 /* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27133
27134 static SEM_PC
27135 SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27136 {
27137 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27139 int UNUSED written = 0;
27140 IADDR UNUSED pc = abuf->addr;
27141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27142
27143 {
27144 UHI tmp_tmp;
27145 if (ANDSI (FLD (f_u6), 1)) {
27146 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27147 } else {
27148 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27149 }
27150 {
27151 UHI opval = tmp_tmp;
27152 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27153 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27154 }
27155 {
27156 UHI opval = tmp_tmp;
27157 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27158 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27159 }
27160 }
27161
27162 return vpc;
27163 #undef FLD
27164 }
27165
27166 /* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27167
27168 static SEM_PC
27169 SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27170 {
27171 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27173 int UNUSED written = 0;
27174 IADDR UNUSED pc = abuf->addr;
27175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27176
27177 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27178 {
27179 UHI tmp_tmp;
27180 if (ANDSI (FLD (f_u6), 1)) {
27181 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27182 } else {
27183 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27184 }
27185 {
27186 UHI opval = tmp_tmp;
27187 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27188 written |= (1 << 7);
27189 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27190 }
27191 {
27192 UHI opval = tmp_tmp;
27193 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27194 written |= (1 << 8);
27195 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27196 }
27197 }
27198 }
27199
27200 abuf->written = written;
27201 return vpc;
27202 #undef FLD
27203 }
27204
27205 /* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27206
27207 static SEM_PC
27208 SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27209 {
27210 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27212 int UNUSED written = 0;
27213 IADDR UNUSED pc = abuf->addr;
27214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27215
27216 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27217 frvbf_media_register_not_aligned (current_cpu);
27218 } else {
27219 {
27220 UHI tmp_tmp;
27221 {
27222 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27223 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27224 written |= (1 << 6);
27225 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27226 }
27227 if (ANDSI (FLD (f_u6), 1)) {
27228 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27229 } else {
27230 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27231 }
27232 {
27233 UHI opval = tmp_tmp;
27234 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27235 written |= (1 << 7);
27236 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27237 }
27238 {
27239 UHI opval = tmp_tmp;
27240 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27241 written |= (1 << 9);
27242 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27243 }
27244 {
27245 UHI opval = tmp_tmp;
27246 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27247 written |= (1 << 8);
27248 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27249 }
27250 {
27251 UHI opval = tmp_tmp;
27252 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27253 written |= (1 << 10);
27254 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27255 }
27256 }
27257 }
27258
27259 abuf->written = written;
27260 return vpc;
27261 #undef FLD
27262 }
27263
27264 /* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27265
27266 static SEM_PC
27267 SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27268 {
27269 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27270 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27271 int UNUSED written = 0;
27272 IADDR UNUSED pc = abuf->addr;
27273 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27274
27275 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27276 frvbf_media_register_not_aligned (current_cpu);
27277 } else {
27278 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27279 {
27280 UHI tmp_tmp;
27281 {
27282 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27283 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27284 written |= (1 << 8);
27285 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27286 }
27287 if (ANDSI (FLD (f_u6), 1)) {
27288 tmp_tmp = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27289 } else {
27290 tmp_tmp = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27291 }
27292 {
27293 UHI opval = tmp_tmp;
27294 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27295 written |= (1 << 9);
27296 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27297 }
27298 {
27299 UHI opval = tmp_tmp;
27300 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27301 written |= (1 << 11);
27302 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27303 }
27304 {
27305 UHI opval = tmp_tmp;
27306 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27307 written |= (1 << 10);
27308 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27309 }
27310 {
27311 UHI opval = tmp_tmp;
27312 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27313 written |= (1 << 12);
27314 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27315 }
27316 }
27317 }
27318 }
27319
27320 abuf->written = written;
27321 return vpc;
27322 #undef FLD
27323 }
27324
27325 /* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27326
27327 static SEM_PC
27328 SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27329 {
27330 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
27331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27332 int UNUSED written = 0;
27333 IADDR UNUSED pc = abuf->addr;
27334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27335
27336 {
27337 {
27338 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27339 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27340 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27341 }
27342 {
27343 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27344 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27345 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27346 }
27347 }
27348
27349 return vpc;
27350 #undef FLD
27351 }
27352
27353 /* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27354
27355 static SEM_PC
27356 SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27357 {
27358 #define FLD(f) abuf->fields.sfmt_mdpackh.f
27359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27360 int UNUSED written = 0;
27361 IADDR UNUSED pc = abuf->addr;
27362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27363
27364 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27365 frvbf_media_register_not_aligned (current_cpu);
27366 } else {
27367 {
27368 {
27369 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27370 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27371 written |= (1 << 10);
27372 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27373 }
27374 {
27375 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27376 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27377 written |= (1 << 11);
27378 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27379 }
27380 {
27381 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27382 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27383 written |= (1 << 12);
27384 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27385 }
27386 {
27387 {
27388 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27389 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27390 written |= (1 << 13);
27391 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27392 }
27393 {
27394 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27395 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27396 written |= (1 << 15);
27397 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27398 }
27399 }
27400 {
27401 {
27402 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27403 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27404 written |= (1 << 14);
27405 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27406 }
27407 {
27408 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27409 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27410 written |= (1 << 16);
27411 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27412 }
27413 }
27414 }
27415 }
27416
27417 abuf->written = written;
27418 return vpc;
27419 #undef FLD
27420 }
27421
27422 /* munpackh: munpackh$pack $FRinti,$FRintkeven */
27423
27424 static SEM_PC
27425 SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27426 {
27427 #define FLD(f) abuf->fields.sfmt_munpackh.f
27428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27429 int UNUSED written = 0;
27430 IADDR UNUSED pc = abuf->addr;
27431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27432
27433 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27434 frvbf_media_register_not_aligned (current_cpu);
27435 } else {
27436 {
27437 {
27438 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27439 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27440 written |= (1 << 6);
27441 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27442 }
27443 {
27444 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27445 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27446 written |= (1 << 7);
27447 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27448 }
27449 {
27450 {
27451 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27452 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27453 written |= (1 << 8);
27454 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27455 }
27456 {
27457 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27458 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27459 written |= (1 << 10);
27460 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27461 }
27462 {
27463 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27464 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27465 written |= (1 << 9);
27466 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27467 }
27468 {
27469 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27470 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27471 written |= (1 << 11);
27472 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27473 }
27474 }
27475 }
27476 }
27477
27478 abuf->written = written;
27479 return vpc;
27480 #undef FLD
27481 }
27482
27483 /* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27484
27485 static SEM_PC
27486 SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27487 {
27488 #define FLD(f) abuf->fields.sfmt_mdunpackh.f
27489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27490 int UNUSED written = 0;
27491 IADDR UNUSED pc = abuf->addr;
27492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27493
27494 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27495 frvbf_media_register_not_aligned (current_cpu);
27496 } else {
27497 {
27498 {
27499 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27500 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27501 written |= (1 << 8);
27502 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27503 }
27504 {
27505 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27506 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27507 written |= (1 << 9);
27508 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27509 }
27510 {
27511 {
27512 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27513 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27514 written |= (1 << 10);
27515 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27516 }
27517 {
27518 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (0)));
27519 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27520 written |= (1 << 14);
27521 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27522 }
27523 {
27524 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27525 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27526 written |= (1 << 12);
27527 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27528 }
27529 {
27530 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (0)));
27531 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (0, 1))), opval);
27532 written |= (1 << 16);
27533 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27534 }
27535 }
27536 {
27537 {
27538 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27539 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27540 written |= (1 << 11);
27541 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27542 }
27543 {
27544 UHI opval = GET_H_FR_HI (((FLD (f_FRi)) + (1)));
27545 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27546 written |= (1 << 15);
27547 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27548 }
27549 {
27550 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27551 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27552 written |= (1 << 13);
27553 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27554 }
27555 {
27556 UHI opval = GET_H_FR_LO (((FLD (f_FRi)) + (1)));
27557 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (ADDSI (2, 1))), opval);
27558 written |= (1 << 17);
27559 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27560 }
27561 }
27562 }
27563 }
27564
27565 abuf->written = written;
27566 return vpc;
27567 #undef FLD
27568 }
27569
27570 /* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27571
27572 static SEM_PC
27573 SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27574 {
27575 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27576 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27577 int UNUSED written = 0;
27578 IADDR UNUSED pc = abuf->addr;
27579 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27580
27581 {
27582 {
27583 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27584 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27585 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27586 }
27587 {
27588 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27589 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27590 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27591 }
27592 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27593 frvbf_media_register_not_aligned (current_cpu);
27594 } else {
27595 {
27596 {
27597 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27598 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27599 written |= (1 << 10);
27600 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27601 }
27602 {
27603 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27604 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27605 written |= (1 << 12);
27606 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27607 }
27608 {
27609 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27610 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27611 written |= (1 << 11);
27612 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27613 }
27614 {
27615 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27616 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27617 written |= (1 << 13);
27618 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27619 }
27620 }
27621 }
27622 }
27623
27624 abuf->written = written;
27625 return vpc;
27626 #undef FLD
27627 }
27628
27629 /* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27630
27631 static SEM_PC
27632 SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27633 {
27634 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27636 int UNUSED written = 0;
27637 IADDR UNUSED pc = abuf->addr;
27638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27639
27640 {
27641 {
27642 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27643 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27644 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27645 }
27646 {
27647 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27648 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27649 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27650 }
27651 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27652 frvbf_media_register_not_aligned (current_cpu);
27653 } else {
27654 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27655 {
27656 {
27657 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27658 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27659 written |= (1 << 12);
27660 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27661 }
27662 {
27663 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27664 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27665 written |= (1 << 14);
27666 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27667 }
27668 {
27669 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27670 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27671 written |= (1 << 13);
27672 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27673 }
27674 {
27675 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27676 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27677 written |= (1 << 15);
27678 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27679 }
27680 }
27681 }
27682 }
27683 }
27684
27685 abuf->written = written;
27686 return vpc;
27687 #undef FLD
27688 }
27689
27690 /* mhtob: mhtob$pack $FRintjeven,$FRintk */
27691
27692 static SEM_PC
27693 SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27694 {
27695 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27696 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27697 int UNUSED written = 0;
27698 IADDR UNUSED pc = abuf->addr;
27699 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27700
27701 {
27702 {
27703 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27704 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27705 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27706 }
27707 {
27708 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27709 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27710 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27711 }
27712 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27713 frvbf_media_register_not_aligned (current_cpu);
27714 } else {
27715 {
27716 {
27717 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27718 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27719 written |= (1 << 13);
27720 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27721 }
27722 {
27723 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27724 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27725 written |= (1 << 12);
27726 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27727 }
27728 {
27729 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27730 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27731 written |= (1 << 11);
27732 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27733 }
27734 {
27735 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27736 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27737 written |= (1 << 10);
27738 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27739 }
27740 }
27741 }
27742 }
27743
27744 abuf->written = written;
27745 return vpc;
27746 #undef FLD
27747 }
27748
27749 /* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27750
27751 static SEM_PC
27752 SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27753 {
27754 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27756 int UNUSED written = 0;
27757 IADDR UNUSED pc = abuf->addr;
27758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27759
27760 {
27761 {
27762 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27763 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27764 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27765 }
27766 {
27767 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27768 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27769 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27770 }
27771 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27772 frvbf_media_register_not_aligned (current_cpu);
27773 } else {
27774 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27775 {
27776 {
27777 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (0)));
27778 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ((FLD (f_FRk)) + (0)), opval);
27779 written |= (1 << 15);
27780 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27781 }
27782 {
27783 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (0)));
27784 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ((FLD (f_FRk)) + (0)), opval);
27785 written |= (1 << 14);
27786 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27787 }
27788 {
27789 UHI opval = GET_H_FR_HI (((FLD (f_FRj)) + (1)));
27790 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ((FLD (f_FRk)) + (0)), opval);
27791 written |= (1 << 13);
27792 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27793 }
27794 {
27795 UHI opval = GET_H_FR_LO (((FLD (f_FRj)) + (1)));
27796 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ((FLD (f_FRk)) + (0)), opval);
27797 written |= (1 << 12);
27798 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27799 }
27800 }
27801 }
27802 }
27803 }
27804
27805 abuf->written = written;
27806 return vpc;
27807 #undef FLD
27808 }
27809
27810 /* mbtohe: mbtohe$pack $FRintj,$FRintk */
27811
27812 static SEM_PC
27813 SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27814 {
27815 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27817 int UNUSED written = 0;
27818 IADDR UNUSED pc = abuf->addr;
27819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27820
27821 {
27822 {
27823 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27824 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27825 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27826 }
27827 {
27828 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27829 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27830 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27831 }
27832 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27833 frvbf_media_register_not_aligned (current_cpu);
27834 } else {
27835 {
27836 {
27837 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27838 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27839 written |= (1 << 10);
27840 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27841 }
27842 {
27843 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27844 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27845 written |= (1 << 14);
27846 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27847 }
27848 {
27849 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27850 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27851 written |= (1 << 11);
27852 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27853 }
27854 {
27855 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27856 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27857 written |= (1 << 15);
27858 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27859 }
27860 {
27861 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27862 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27863 written |= (1 << 12);
27864 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27865 }
27866 {
27867 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27868 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27869 written |= (1 << 16);
27870 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27871 }
27872 {
27873 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27874 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27875 written |= (1 << 13);
27876 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27877 }
27878 {
27879 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27880 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27881 written |= (1 << 17);
27882 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27883 }
27884 }
27885 }
27886 }
27887
27888 abuf->written = written;
27889 return vpc;
27890 #undef FLD
27891 }
27892
27893 /* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27894
27895 static SEM_PC
27896 SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27897 {
27898 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27899 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27900 int UNUSED written = 0;
27901 IADDR UNUSED pc = abuf->addr;
27902 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27903
27904 {
27905 {
27906 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27907 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27908 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27909 }
27910 {
27911 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27912 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27913 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27914 }
27915 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27916 frvbf_media_register_not_aligned (current_cpu);
27917 } else {
27918 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27919 {
27920 {
27921 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27922 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (0)), opval);
27923 written |= (1 << 12);
27924 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27925 }
27926 {
27927 UHI opval = GET_H_FR_3 (((FLD (f_FRj)) + (0)));
27928 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (0)), opval);
27929 written |= (1 << 16);
27930 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27931 }
27932 {
27933 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27934 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (1)), opval);
27935 written |= (1 << 13);
27936 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27937 }
27938 {
27939 UHI opval = GET_H_FR_2 (((FLD (f_FRj)) + (0)));
27940 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (1)), opval);
27941 written |= (1 << 17);
27942 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27943 }
27944 {
27945 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27946 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (2)), opval);
27947 written |= (1 << 14);
27948 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27949 }
27950 {
27951 UHI opval = GET_H_FR_1 (((FLD (f_FRj)) + (0)));
27952 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (2)), opval);
27953 written |= (1 << 18);
27954 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27955 }
27956 {
27957 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27958 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ((FLD (f_FRk)) + (3)), opval);
27959 written |= (1 << 15);
27960 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27961 }
27962 {
27963 UHI opval = GET_H_FR_0 (((FLD (f_FRj)) + (0)));
27964 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ((FLD (f_FRk)) + (3)), opval);
27965 written |= (1 << 19);
27966 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27967 }
27968 }
27969 }
27970 }
27971 }
27972
27973 abuf->written = written;
27974 return vpc;
27975 #undef FLD
27976 }
27977
27978 /* mnop: mnop$pack */
27979
27980 static SEM_PC
27981 SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27982 {
27983 #define FLD(f) abuf->fields.fmt_empty.f
27984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27985 int UNUSED written = 0;
27986 IADDR UNUSED pc = abuf->addr;
27987 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27988
27989 ((void) 0); /*nop*/
27990
27991 return vpc;
27992 #undef FLD
27993 }
27994
27995 /* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27996
27997 static SEM_PC
27998 SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27999 {
28000 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
28001 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28002 int UNUSED written = 0;
28003 IADDR UNUSED pc = abuf->addr;
28004 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28005
28006 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
28007
28008 return vpc;
28009 #undef FLD
28010 }
28011
28012 /* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
28013
28014 static SEM_PC
28015 SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28016 {
28017 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
28018 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28019 int UNUSED written = 0;
28020 IADDR UNUSED pc = abuf->addr;
28021 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28022
28023 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
28024
28025 return vpc;
28026 #undef FLD
28027 }
28028
28029 /* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
28030
28031 static SEM_PC
28032 SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28033 {
28034 #define FLD(f) abuf->fields.sfmt_mcuti.f
28035 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28036 int UNUSED written = 0;
28037 IADDR UNUSED pc = abuf->addr;
28038 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28039
28040 {
28041 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
28042 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28043 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28044 }
28045
28046 return vpc;
28047 #undef FLD
28048 }
28049
28050 /* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
28051
28052 static SEM_PC
28053 SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28054 {
28055 #define FLD(f) abuf->fields.sfmt_mrdaccg.f
28056 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28057 int UNUSED written = 0;
28058 IADDR UNUSED pc = abuf->addr;
28059 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28060
28061 {
28062 SI opval = GET_H_ACCG (FLD (f_ACCGi));
28063 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28064 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28065 }
28066
28067 return vpc;
28068 #undef FLD
28069 }
28070
28071 /* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
28072
28073 static SEM_PC
28074 SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28075 {
28076 #define FLD(f) abuf->fields.sfmt_cmmachs.f
28077 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28078 int UNUSED written = 0;
28079 IADDR UNUSED pc = abuf->addr;
28080 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28081
28082 {
28083 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
28084 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
28085 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28086 }
28087
28088 return vpc;
28089 #undef FLD
28090 }
28091
28092 /* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28093
28094 static SEM_PC
28095 SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28096 {
28097 #define FLD(f) abuf->fields.sfmt_mwtaccg.f
28098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28099 int UNUSED written = 0;
28100 IADDR UNUSED pc = abuf->addr;
28101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28102
28103 {
28104 frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
28105 {
28106 USI opval = GET_H_FR_INT (FLD (f_FRi));
28107 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28108 TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28109 }
28110 }
28111
28112 return vpc;
28113 #undef FLD
28114 }
28115
28116 /* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28117
28118 static SEM_PC
28119 SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28120 {
28121 #define FLD(f) abuf->fields.fmt_empty.f
28122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28123 int UNUSED written = 0;
28124 IADDR UNUSED pc = abuf->addr;
28125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28126
28127 frvbf_media_cop (current_cpu, 1);
28128
28129 return vpc;
28130 #undef FLD
28131 }
28132
28133 /* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28134
28135 static SEM_PC
28136 SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28137 {
28138 #define FLD(f) abuf->fields.fmt_empty.f
28139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28140 int UNUSED written = 0;
28141 IADDR UNUSED pc = abuf->addr;
28142 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28143
28144 frvbf_media_cop (current_cpu, 2);
28145
28146 return vpc;
28147 #undef FLD
28148 }
28149
28150 /* fnop: fnop$pack */
28151
28152 static SEM_PC
28153 SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28154 {
28155 #define FLD(f) abuf->fields.fmt_empty.f
28156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28157 int UNUSED written = 0;
28158 IADDR UNUSED pc = abuf->addr;
28159 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28160
28161 ((void) 0); /*nop*/
28162
28163 return vpc;
28164 #undef FLD
28165 }
28166
28167 /* Table of all semantic fns. */
28168
28169 static const struct sem_fn_desc sem_fns[] = {
28170 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28171 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28172 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28173 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28174 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28175 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28176 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28177 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28178 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28179 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28180 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28181 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28182 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28183 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28184 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28185 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28186 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28187 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
28188 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28189 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28190 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
28191 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28192 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28193 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
28194 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28195 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
28196 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28197 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28198 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28199 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28200 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28201 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28202 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28203 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28204 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28205 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28206 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28207 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28208 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28209 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28210 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28211 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28212 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28213 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28214 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28215 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28216 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28217 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28218 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28219 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28220 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28221 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28222 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28223 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28224 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28225 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28226 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28227 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28228 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28229 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28230 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28231 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28232 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
28233 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28234 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
28235 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28236 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28237 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28238 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28239 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28240 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28241 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28242 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28243 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28244 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28245 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28246 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28247 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28248 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28249 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28250 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28251 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28252 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28253 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28254 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28255 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28256 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28257 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28258 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28259 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28260 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28261 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28262 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28263 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28264 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28265 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28266 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28267 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28268 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28269 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28270 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28271 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28272 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28273 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28274 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28275 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28276 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28277 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28278 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28279 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28280 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28281 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28282 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28283 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28284 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28285 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28286 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28287 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28288 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28289 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28290 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28291 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28292 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28293 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28294 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28295 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28296 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28297 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28298 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28299 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28300 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28301 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28302 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28303 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28304 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28305 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28306 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28307 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28308 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28309 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28310 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28311 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28312 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28313 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28314 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28315 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28316 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28317 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28318 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28319 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28320 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28321 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28322 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28323 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28324 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28325 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28326 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28327 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28328 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28329 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28330 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28331 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28332 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28333 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28334 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28335 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28336 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28337 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28338 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28339 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28340 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28341 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28342 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28343 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28344 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
28345 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28346 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28347 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28348 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28349 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28350 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28351 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28352 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
28353 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28354 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28355 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
28356 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28357 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28358 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
28359 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28360 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28361 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28362 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28363 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28364 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28365 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28366 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28367 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28368 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28369 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28370 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28371 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28372 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28373 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28374 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28375 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28376 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28377 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28378 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28379 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28380 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28381 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28382 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28383 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28384 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28385 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28386 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28387 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28388 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28389 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28390 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28391 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28392 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28393 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28394 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28395 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28396 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28397 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28398 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28399 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28400 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28401 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28402 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28403 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28404 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28405 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28406 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28407 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28408 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28409 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28410 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28411 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28412 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28413 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28414 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28415 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28416 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28417 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28418 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28419 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28420 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28421 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28422 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28423 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28424 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28425 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28426 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28427 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28428 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28429 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28430 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28431 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28432 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28433 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28434 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28435 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28436 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28437 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28438 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28439 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28440 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28441 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28442 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28443 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28444 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28445 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28446 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28447 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28448 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28449 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28450 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28451 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28452 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28453 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28454 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28455 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28456 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28457 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28458 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28459 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28460 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28461 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28462 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28463 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28464 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28465 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28466 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28467 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28468 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28469 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28470 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28471 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28472 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28473 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28474 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28475 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28476 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28477 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28478 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28479 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28480 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28481 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28482 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28483 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28484 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28485 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28486 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28487 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28488 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28489 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28490 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28491 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28492 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28493 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28494 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28495 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28496 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28497 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28498 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28499 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28500 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28501 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28502 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28503 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28504 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28505 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28506 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28507 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28508 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28509 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28510 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28511 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28512 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28513 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28514 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28515 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28516 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28517 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28518 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28519 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28520 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28521 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28522 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28523 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28524 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28525 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28526 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28527 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28528 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28529 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28530 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28531 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28532 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28533 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28534 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28535 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28536 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28537 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28538 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28539 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28540 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28541 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28542 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28543 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28544 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28545 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28546 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28547 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28548 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28549 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28550 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28551 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28552 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28553 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28554 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28555 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28556 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28557 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28558 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28559 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28560 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28561 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28562 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28563 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28564 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28565 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28566 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28567 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28568 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28569 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28570 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28571 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28572 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28573 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28574 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28575 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28576 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28577 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28578 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28579 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28580 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28581 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28582 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28583 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28584 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28585 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28586 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28587 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28588 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28589 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28590 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28591 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28592 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28593 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28594 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28595 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28596 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28597 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28598 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28599 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28600 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28601 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28602 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28603 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28604 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28605 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28606 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28607 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28608 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28609 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28610 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28611 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28612 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28613 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28614 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28615 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28616 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28617 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28618 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28619 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28620 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28621 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28622 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28623 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28624 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28625 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28626 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28627 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28628 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28629 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28630 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28631 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28632 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28633 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28634 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28635 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28636 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28637 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28638 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28639 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28640 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28641 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28642 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28643 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28644 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28645 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28646 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28647 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28648 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28649 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28650 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28651 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28652 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28653 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28654 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28655 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28656 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28657 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28658 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28659 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28660 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28661 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28662 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28663 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28664 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28665 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28666 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28667 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28668 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28669 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28670 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28671 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28672 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28673 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28674 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28675 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28676 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28677 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28678 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28679 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28680 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28681 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28682 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28683 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28684 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28685 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28686 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28687 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28688 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28689 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28690 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28691 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28692 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28693 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28694 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28695 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28696 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28697 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
28698 { FRVBF_INSN_LRAI, SEM_FN_NAME (frvbf,lrai) },
28699 { FRVBF_INSN_LRAD, SEM_FN_NAME (frvbf,lrad) },
28700 { FRVBF_INSN_TLBPR, SEM_FN_NAME (frvbf,tlbpr) },
28701 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28702 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28703 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28704 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28705 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28706 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28707 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28708 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28709 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28710 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28711 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28712 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28713 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28714 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28715 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28716 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28717 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28718 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28719 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28720 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28721 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28722 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28723 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28724 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28725 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28726 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28727 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28728 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28729 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28730 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28731 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28732 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28733 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28734 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28735 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28736 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28737 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28738 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28739 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28740 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28741 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28742 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28743 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28744 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28745 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28746 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28747 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28748 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28749 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28750 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28751 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28752 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28753 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28754 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28755 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28756 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28757 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28758 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28759 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28760 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28761 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28762 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28763 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28764 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28765 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28766 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28767 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28768 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28769 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28770 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28771 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28772 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28773 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28774 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28775 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28776 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28777 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28778 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28779 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28780 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28781 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28782 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28783 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28784 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28785 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28786 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28787 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28788 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28789 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28790 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28791 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28792 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28793 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28794 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28795 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28796 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28797 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28798 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28799 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28800 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28801 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28802 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28803 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28804 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28805 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28806 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28807 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28808 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28809 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28810 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28811 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28812 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28813 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28814 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28815 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28816 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28817 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28818 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28819 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28820 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28821 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28822 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28823 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28824 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28825 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28826 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28827 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28828 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28829 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28830 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28831 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28832 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28833 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28834 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28835 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28836 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28837 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28838 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28839 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28840 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28841 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28842 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28843 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28844 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28845 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28846 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28847 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
28848 { FRVBF_INSN_MQLCLRHS, SEM_FN_NAME (frvbf,mqlclrhs) },
28849 { FRVBF_INSN_MQLMTHS, SEM_FN_NAME (frvbf,mqlmths) },
28850 { FRVBF_INSN_MQSLLHI, SEM_FN_NAME (frvbf,mqsllhi) },
28851 { FRVBF_INSN_MQSRAHI, SEM_FN_NAME (frvbf,mqsrahi) },
28852 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28853 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28854 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28855 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28856 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28857 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28858 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28859 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28860 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28861 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28862 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28863 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28864 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28865 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28866 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28867 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28868 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28869 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28870 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28871 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28872 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28873 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28874 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28875 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28876 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28877 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28878 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28879 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28880 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28881 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28882 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28883 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28884 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28885 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28886 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28887 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28888 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28889 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28890 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28891 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28892 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28893 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28894 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28895 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28896 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28897 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28898 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28899 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28900 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28901 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28902 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28903 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28904 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28905 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28906 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28907 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28908 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
28909 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28910 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28911 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
28912 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28913 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28914 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28915 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28916 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28917 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28918 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28919 { 0, 0 }
28920 };
28921
28922 /* Add the semantic fns to IDESC_TABLE. */
28923
28924 void
28925 SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28926 {
28927 IDESC *idesc_table = CPU_IDESC (current_cpu);
28928 const struct sem_fn_desc *sf;
28929 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28930
28931 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28932 {
28933 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28934 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28935 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28936 #if FAST_P
28937 if (valid_p)
28938 idesc_table[sf->index].sem_fast = sf->fn;
28939 else
28940 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28941 #else
28942 if (valid_p)
28943 idesc_table[sf->index].sem_full = sf->fn;
28944 else
28945 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28946 #endif
28947 }
28948 }
28949