]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/frv/sem.c
Update year range in copyright notice of all files owned by the GDB project.
[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-2015 Free Software Foundation, Inc.
6
7 This file is part of the GNU simulators.
8
9 This file is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
12 any later version.
13
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 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 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
33
34 /* This is used so that we can compile two copies of the semantic code,
35 one with full feature support and one without that runs fast(er).
36 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
37 #if FAST_P
38 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
39 #undef TRACE_RESULT
40 #define TRACE_RESULT(cpu, abuf, name, type, val)
41 #else
42 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
43 #endif
44
45 /* x-invalid: --invalid-- */
46
47 static SEM_PC
48 SEM_FN_NAME (frvbf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
49 {
50 #define FLD(f) abuf->fields.sfmt_empty.f
51 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
52 int UNUSED written = 0;
53 IADDR UNUSED pc = abuf->addr;
54 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
55
56 {
57 /* Update the recorded pc in the cpu state struct.
58 Only necessary for WITH_SCACHE case, but to avoid the
59 conditional compilation .... */
60 SET_H_PC (pc);
61 /* Virtual insns have zero size. Overwrite vpc with address of next insn
62 using the default-insn-bitsize spec. When executing insns in parallel
63 we may want to queue the fault and continue execution. */
64 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
65 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
66 }
67
68 return vpc;
69 #undef FLD
70 }
71
72 /* x-after: --after-- */
73
74 static SEM_PC
75 SEM_FN_NAME (frvbf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
76 {
77 #define FLD(f) abuf->fields.sfmt_empty.f
78 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
79 int UNUSED written = 0;
80 IADDR UNUSED pc = abuf->addr;
81 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
82
83 {
84 #if WITH_SCACHE_PBB_FRVBF
85 frvbf_pbb_after (current_cpu, sem_arg);
86 #endif
87 }
88
89 return vpc;
90 #undef FLD
91 }
92
93 /* x-before: --before-- */
94
95 static SEM_PC
96 SEM_FN_NAME (frvbf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
97 {
98 #define FLD(f) abuf->fields.sfmt_empty.f
99 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
100 int UNUSED written = 0;
101 IADDR UNUSED pc = abuf->addr;
102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
103
104 {
105 #if WITH_SCACHE_PBB_FRVBF
106 frvbf_pbb_before (current_cpu, sem_arg);
107 #endif
108 }
109
110 return vpc;
111 #undef FLD
112 }
113
114 /* x-cti-chain: --cti-chain-- */
115
116 static SEM_PC
117 SEM_FN_NAME (frvbf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
118 {
119 #define FLD(f) abuf->fields.sfmt_empty.f
120 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
121 int UNUSED written = 0;
122 IADDR UNUSED pc = abuf->addr;
123 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
124
125 {
126 #if WITH_SCACHE_PBB_FRVBF
127 #ifdef DEFINE_SWITCH
128 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
129 pbb_br_type, pbb_br_npc);
130 BREAK (sem);
131 #else
132 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
133 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
134 CPU_PBB_BR_TYPE (current_cpu),
135 CPU_PBB_BR_NPC (current_cpu));
136 #endif
137 #endif
138 }
139
140 return vpc;
141 #undef FLD
142 }
143
144 /* x-chain: --chain-- */
145
146 static SEM_PC
147 SEM_FN_NAME (frvbf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
148 {
149 #define FLD(f) abuf->fields.sfmt_empty.f
150 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
151 int UNUSED written = 0;
152 IADDR UNUSED pc = abuf->addr;
153 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
154
155 {
156 #if WITH_SCACHE_PBB_FRVBF
157 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
158 #ifdef DEFINE_SWITCH
159 BREAK (sem);
160 #endif
161 #endif
162 }
163
164 return vpc;
165 #undef FLD
166 }
167
168 /* x-begin: --begin-- */
169
170 static SEM_PC
171 SEM_FN_NAME (frvbf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
172 {
173 #define FLD(f) abuf->fields.sfmt_empty.f
174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
175 int UNUSED written = 0;
176 IADDR UNUSED pc = abuf->addr;
177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
178
179 {
180 #if WITH_SCACHE_PBB_FRVBF
181 #if defined DEFINE_SWITCH || defined FAST_P
182 /* In the switch case FAST_P is a constant, allowing several optimizations
183 in any called inline functions. */
184 vpc = frvbf_pbb_begin (current_cpu, FAST_P);
185 #else
186 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
187 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
188 #else
189 vpc = frvbf_pbb_begin (current_cpu, 0);
190 #endif
191 #endif
192 #endif
193 }
194
195 return vpc;
196 #undef FLD
197 }
198
199 /* add: add$pack $GRi,$GRj,$GRk */
200
201 static SEM_PC
202 SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
203 {
204 #define FLD(f) abuf->fields.sfmt_addcc.f
205 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
206 int UNUSED written = 0;
207 IADDR UNUSED pc = abuf->addr;
208 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
209
210 {
211 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
212 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
213 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
214 }
215
216 return vpc;
217 #undef FLD
218 }
219
220 /* sub: sub$pack $GRi,$GRj,$GRk */
221
222 static SEM_PC
223 SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
224 {
225 #define FLD(f) abuf->fields.sfmt_addcc.f
226 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
227 int UNUSED written = 0;
228 IADDR UNUSED pc = abuf->addr;
229 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
230
231 {
232 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
233 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
234 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
235 }
236
237 return vpc;
238 #undef FLD
239 }
240
241 /* and: and$pack $GRi,$GRj,$GRk */
242
243 static SEM_PC
244 SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
245 {
246 #define FLD(f) abuf->fields.sfmt_addcc.f
247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
248 int UNUSED written = 0;
249 IADDR UNUSED pc = abuf->addr;
250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
251
252 {
253 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
254 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
255 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
256 }
257
258 return vpc;
259 #undef FLD
260 }
261
262 /* or: or$pack $GRi,$GRj,$GRk */
263
264 static SEM_PC
265 SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
266 {
267 #define FLD(f) abuf->fields.sfmt_addcc.f
268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
269 int UNUSED written = 0;
270 IADDR UNUSED pc = abuf->addr;
271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
272
273 {
274 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
275 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
276 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
277 }
278
279 return vpc;
280 #undef FLD
281 }
282
283 /* xor: xor$pack $GRi,$GRj,$GRk */
284
285 static SEM_PC
286 SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
287 {
288 #define FLD(f) abuf->fields.sfmt_addcc.f
289 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
290 int UNUSED written = 0;
291 IADDR UNUSED pc = abuf->addr;
292 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
293
294 {
295 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
296 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
297 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
298 }
299
300 return vpc;
301 #undef FLD
302 }
303
304 /* not: not$pack $GRj,$GRk */
305
306 static SEM_PC
307 SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
308 {
309 #define FLD(f) abuf->fields.sfmt_scutss.f
310 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
311 int UNUSED written = 0;
312 IADDR UNUSED pc = abuf->addr;
313 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
314
315 {
316 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
317 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
318 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
319 }
320
321 return vpc;
322 #undef FLD
323 }
324
325 /* sdiv: sdiv$pack $GRi,$GRj,$GRk */
326
327 static SEM_PC
328 SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
329 {
330 #define FLD(f) abuf->fields.sfmt_addcc.f
331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
332 int UNUSED written = 0;
333 IADDR UNUSED pc = abuf->addr;
334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
335
336 {
337 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
338 ; /*clobber*/
339 }
340
341 return vpc;
342 #undef FLD
343 }
344
345 /* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
346
347 static SEM_PC
348 SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
349 {
350 #define FLD(f) abuf->fields.sfmt_addcc.f
351 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
352 int UNUSED written = 0;
353 IADDR UNUSED pc = abuf->addr;
354 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
355
356 {
357 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
358 ; /*clobber*/
359 }
360
361 return vpc;
362 #undef FLD
363 }
364
365 /* udiv: udiv$pack $GRi,$GRj,$GRk */
366
367 static SEM_PC
368 SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
369 {
370 #define FLD(f) abuf->fields.sfmt_addcc.f
371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
372 int UNUSED written = 0;
373 IADDR UNUSED pc = abuf->addr;
374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
375
376 {
377 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
378 ; /*clobber*/
379 }
380
381 return vpc;
382 #undef FLD
383 }
384
385 /* nudiv: nudiv$pack $GRi,$GRj,$GRk */
386
387 static SEM_PC
388 SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
389 {
390 #define FLD(f) abuf->fields.sfmt_addcc.f
391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
392 int UNUSED written = 0;
393 IADDR UNUSED pc = abuf->addr;
394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
395
396 {
397 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
398 ; /*clobber*/
399 }
400
401 return vpc;
402 #undef FLD
403 }
404
405 /* smul: smul$pack $GRi,$GRj,$GRdoublek */
406
407 static SEM_PC
408 SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
409 {
410 #define FLD(f) abuf->fields.sfmt_smulcc.f
411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
412 int UNUSED written = 0;
413 IADDR UNUSED pc = abuf->addr;
414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
415
416 {
417 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
418 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
419 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
420 }
421
422 return vpc;
423 #undef FLD
424 }
425
426 /* umul: umul$pack $GRi,$GRj,$GRdoublek */
427
428 static SEM_PC
429 SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
430 {
431 #define FLD(f) abuf->fields.sfmt_smulcc.f
432 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
433 int UNUSED written = 0;
434 IADDR UNUSED pc = abuf->addr;
435 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
436
437 {
438 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
439 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
440 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
441 }
442
443 return vpc;
444 #undef FLD
445 }
446
447 /* smu: smu$pack $GRi,$GRj */
448
449 static SEM_PC
450 SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
451 {
452 #define FLD(f) abuf->fields.sfmt_smass.f
453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
454 int UNUSED written = 0;
455 IADDR UNUSED pc = abuf->addr;
456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
457
458 {
459 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
460 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
461 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
462 }
463
464 return vpc;
465 #undef FLD
466 }
467
468 /* smass: smass$pack $GRi,$GRj */
469
470 static SEM_PC
471 SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
472 {
473 #define FLD(f) abuf->fields.sfmt_smass.f
474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
475 int UNUSED written = 0;
476 IADDR UNUSED pc = abuf->addr;
477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
478
479 {
480 DI opval = (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (SUBDI (MAKEDI (2147483647, 0xffffffff), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (SUBDI (MAKEDI (0x80000000, 0), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (ADDDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
481 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
482 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
483 }
484
485 return vpc;
486 #undef FLD
487 }
488
489 /* smsss: smsss$pack $GRi,$GRj */
490
491 static SEM_PC
492 SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
493 {
494 #define FLD(f) abuf->fields.sfmt_smass.f
495 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
496 int UNUSED written = 0;
497 IADDR UNUSED pc = abuf->addr;
498 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
499
500 {
501 DI opval = (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (ADDDI (MAKEDI (2147483647, 0xffffffff), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (ADDDI (MAKEDI (0x80000000, 0), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (SUBDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
502 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
503 TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
504 }
505
506 return vpc;
507 #undef FLD
508 }
509
510 /* sll: sll$pack $GRi,$GRj,$GRk */
511
512 static SEM_PC
513 SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
514 {
515 #define FLD(f) abuf->fields.sfmt_addcc.f
516 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
517 int UNUSED written = 0;
518 IADDR UNUSED pc = abuf->addr;
519 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
520
521 {
522 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
523 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
524 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
525 }
526
527 return vpc;
528 #undef FLD
529 }
530
531 /* srl: srl$pack $GRi,$GRj,$GRk */
532
533 static SEM_PC
534 SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
535 {
536 #define FLD(f) abuf->fields.sfmt_addcc.f
537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
538 int UNUSED written = 0;
539 IADDR UNUSED pc = abuf->addr;
540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
541
542 {
543 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
544 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
545 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
546 }
547
548 return vpc;
549 #undef FLD
550 }
551
552 /* sra: sra$pack $GRi,$GRj,$GRk */
553
554 static SEM_PC
555 SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
556 {
557 #define FLD(f) abuf->fields.sfmt_addcc.f
558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
559 int UNUSED written = 0;
560 IADDR UNUSED pc = abuf->addr;
561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
562
563 {
564 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
565 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
566 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
567 }
568
569 return vpc;
570 #undef FLD
571 }
572
573 /* slass: slass$pack $GRi,$GRj,$GRk */
574
575 static SEM_PC
576 SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
577 {
578 #define FLD(f) abuf->fields.sfmt_addcc.f
579 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
580 int UNUSED written = 0;
581 IADDR UNUSED pc = abuf->addr;
582 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
583
584 {
585 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
586 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
587 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
588 }
589
590 return vpc;
591 #undef FLD
592 }
593
594 /* scutss: scutss$pack $GRj,$GRk */
595
596 static SEM_PC
597 SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
598 {
599 #define FLD(f) abuf->fields.sfmt_scutss.f
600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
601 int UNUSED written = 0;
602 IADDR UNUSED pc = abuf->addr;
603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
604
605 {
606 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
607 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
608 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
609 }
610
611 return vpc;
612 #undef FLD
613 }
614
615 /* scan: scan$pack $GRi,$GRj,$GRk */
616
617 static SEM_PC
618 SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
619 {
620 #define FLD(f) abuf->fields.sfmt_addcc.f
621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
622 int UNUSED written = 0;
623 IADDR UNUSED pc = abuf->addr;
624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
625
626 {
627 SI tmp_tmp1;
628 SI tmp_tmp2;
629 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
630 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
631 {
632 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
633 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
634 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
635 }
636 }
637
638 return vpc;
639 #undef FLD
640 }
641
642 /* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
643
644 static SEM_PC
645 SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
646 {
647 #define FLD(f) abuf->fields.sfmt_cswap.f
648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
649 int UNUSED written = 0;
650 IADDR UNUSED pc = abuf->addr;
651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
652
653 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
654 {
655 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
656 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
657 written |= (1 << 4);
658 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
659 }
660 }
661
662 abuf->written = written;
663 return vpc;
664 #undef FLD
665 }
666
667 /* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
668
669 static SEM_PC
670 SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
671 {
672 #define FLD(f) abuf->fields.sfmt_cswap.f
673 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
674 int UNUSED written = 0;
675 IADDR UNUSED pc = abuf->addr;
676 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
677
678 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
679 {
680 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
681 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
682 written |= (1 << 4);
683 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
684 }
685 }
686
687 abuf->written = written;
688 return vpc;
689 #undef FLD
690 }
691
692 /* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
693
694 static SEM_PC
695 SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
696 {
697 #define FLD(f) abuf->fields.sfmt_cswap.f
698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
699 int UNUSED written = 0;
700 IADDR UNUSED pc = abuf->addr;
701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
702
703 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
704 {
705 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
706 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
707 written |= (1 << 4);
708 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
709 }
710 }
711
712 abuf->written = written;
713 return vpc;
714 #undef FLD
715 }
716
717 /* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
718
719 static SEM_PC
720 SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
721 {
722 #define FLD(f) abuf->fields.sfmt_cswap.f
723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
724 int UNUSED written = 0;
725 IADDR UNUSED pc = abuf->addr;
726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
727
728 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
729 {
730 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
731 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
732 written |= (1 << 4);
733 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
734 }
735 }
736
737 abuf->written = written;
738 return vpc;
739 #undef FLD
740 }
741
742 /* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
743
744 static SEM_PC
745 SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
746 {
747 #define FLD(f) abuf->fields.sfmt_cswap.f
748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
749 int UNUSED written = 0;
750 IADDR UNUSED pc = abuf->addr;
751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
752
753 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
754 {
755 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
756 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
757 written |= (1 << 4);
758 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
759 }
760 }
761
762 abuf->written = written;
763 return vpc;
764 #undef FLD
765 }
766
767 /* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
768
769 static SEM_PC
770 SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
771 {
772 #define FLD(f) abuf->fields.sfmt_cswap.f
773 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
774 int UNUSED written = 0;
775 IADDR UNUSED pc = abuf->addr;
776 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
777
778 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
779 {
780 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
781 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
782 written |= (1 << 3);
783 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
784 }
785 }
786
787 abuf->written = written;
788 return vpc;
789 #undef FLD
790 }
791
792 /* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
793
794 static SEM_PC
795 SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
796 {
797 #define FLD(f) abuf->fields.sfmt_clddu.f
798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
799 int UNUSED written = 0;
800 IADDR UNUSED pc = abuf->addr;
801 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
802
803 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
804 {
805 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
806 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
807 written |= (1 << 4);
808 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
809 }
810 }
811
812 abuf->written = written;
813 return vpc;
814 #undef FLD
815 }
816
817 /* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
818
819 static SEM_PC
820 SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
821 {
822 #define FLD(f) abuf->fields.sfmt_cswap.f
823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
824 int UNUSED written = 0;
825 IADDR UNUSED pc = abuf->addr;
826 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
827
828 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
829 {
830 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
831 ; /*clobber*/
832 }
833 }
834
835 abuf->written = written;
836 return vpc;
837 #undef FLD
838 }
839
840 /* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
841
842 static SEM_PC
843 SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
844 {
845 #define FLD(f) abuf->fields.sfmt_cswap.f
846 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
847 int UNUSED written = 0;
848 IADDR UNUSED pc = abuf->addr;
849 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
850
851 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
852 {
853 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
854 ; /*clobber*/
855 }
856 }
857
858 abuf->written = written;
859 return vpc;
860 #undef FLD
861 }
862
863 /* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
864
865 static SEM_PC
866 SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
867 {
868 #define FLD(f) abuf->fields.sfmt_cswap.f
869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
870 int UNUSED written = 0;
871 IADDR UNUSED pc = abuf->addr;
872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
873
874 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
875 {
876 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
877 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
878 written |= (1 << 4);
879 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
880 }
881 }
882
883 abuf->written = written;
884 return vpc;
885 #undef FLD
886 }
887
888 /* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
889
890 static SEM_PC
891 SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
892 {
893 #define FLD(f) abuf->fields.sfmt_cswap.f
894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
895 int UNUSED written = 0;
896 IADDR UNUSED pc = abuf->addr;
897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
898
899 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
900 {
901 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
902 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
903 written |= (1 << 4);
904 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
905 }
906 }
907
908 abuf->written = written;
909 return vpc;
910 #undef FLD
911 }
912
913 /* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
914
915 static SEM_PC
916 SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
917 {
918 #define FLD(f) abuf->fields.sfmt_cswap.f
919 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
920 int UNUSED written = 0;
921 IADDR UNUSED pc = abuf->addr;
922 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
923
924 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
925 {
926 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
927 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
928 written |= (1 << 4);
929 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
930 }
931 }
932
933 abuf->written = written;
934 return vpc;
935 #undef FLD
936 }
937
938 /* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
939
940 static SEM_PC
941 SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
942 {
943 #define FLD(f) abuf->fields.sfmt_cswap.f
944 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
945 int UNUSED written = 0;
946 IADDR UNUSED pc = abuf->addr;
947 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
948
949 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
950 {
951 SI tmp_tmp1;
952 SI tmp_tmp2;
953 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
954 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
955 {
956 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
957 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
958 written |= (1 << 4);
959 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
960 }
961 }
962 }
963
964 abuf->written = written;
965 return vpc;
966 #undef FLD
967 }
968
969 /* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
970
971 static SEM_PC
972 SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
973 {
974 #define FLD(f) abuf->fields.sfmt_addcc.f
975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
976 int UNUSED written = 0;
977 IADDR UNUSED pc = abuf->addr;
978 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
979
980 {
981 BI tmp_tmp;
982 QI tmp_cc;
983 SI tmp_result;
984 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
985 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
986 if (EQBI (tmp_tmp, 0)) {
987 tmp_cc = ANDQI (tmp_cc, 13);
988 } else {
989 tmp_cc = ORQI (tmp_cc, 2);
990 }
991 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
992 if (EQBI (tmp_tmp, 0)) {
993 tmp_cc = ANDQI (tmp_cc, 14);
994 } else {
995 tmp_cc = ORQI (tmp_cc, 1);
996 }
997 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
998 if (EQSI (tmp_result, 0)) {
999 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1000 } else {
1001 if (LTSI (tmp_result, 0)) {
1002 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1003 } else {
1004 tmp_cc = ANDQI (tmp_cc, 3);
1005 }
1006 }
1007 {
1008 SI opval = tmp_result;
1009 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1010 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1011 }
1012 {
1013 UQI opval = tmp_cc;
1014 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1015 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1016 }
1017 }
1018
1019 return vpc;
1020 #undef FLD
1021 }
1022
1023 /* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1024
1025 static SEM_PC
1026 SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1027 {
1028 #define FLD(f) abuf->fields.sfmt_addcc.f
1029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1030 int UNUSED written = 0;
1031 IADDR UNUSED pc = abuf->addr;
1032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1033
1034 {
1035 BI tmp_tmp;
1036 QI tmp_cc;
1037 SI tmp_result;
1038 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1039 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1040 if (EQBI (tmp_tmp, 0)) {
1041 tmp_cc = ANDQI (tmp_cc, 13);
1042 } else {
1043 tmp_cc = ORQI (tmp_cc, 2);
1044 }
1045 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1046 if (EQBI (tmp_tmp, 0)) {
1047 tmp_cc = ANDQI (tmp_cc, 14);
1048 } else {
1049 tmp_cc = ORQI (tmp_cc, 1);
1050 }
1051 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1052 if (EQSI (tmp_result, 0)) {
1053 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1054 } else {
1055 if (LTSI (tmp_result, 0)) {
1056 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1057 } else {
1058 tmp_cc = ANDQI (tmp_cc, 3);
1059 }
1060 }
1061 {
1062 SI opval = tmp_result;
1063 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1064 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1065 }
1066 {
1067 UQI opval = tmp_cc;
1068 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1069 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1070 }
1071 }
1072
1073 return vpc;
1074 #undef FLD
1075 }
1076
1077 /* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1078
1079 static SEM_PC
1080 SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1081 {
1082 #define FLD(f) abuf->fields.sfmt_addcc.f
1083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1084 int UNUSED written = 0;
1085 IADDR UNUSED pc = abuf->addr;
1086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1087
1088 {
1089 SI tmp_tmp;
1090 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1091 {
1092 SI opval = tmp_tmp;
1093 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1094 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1095 }
1096 if (EQSI (tmp_tmp, 0)) {
1097 {
1098 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1099 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1100 written |= (1 << 4);
1101 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1102 }
1103 } else {
1104 if (LTSI (tmp_tmp, 0)) {
1105 {
1106 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1107 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1108 written |= (1 << 4);
1109 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1110 }
1111 } else {
1112 {
1113 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1114 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1115 written |= (1 << 4);
1116 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1117 }
1118 }
1119 }
1120 }
1121
1122 abuf->written = written;
1123 return vpc;
1124 #undef FLD
1125 }
1126
1127 /* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1128
1129 static SEM_PC
1130 SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1131 {
1132 #define FLD(f) abuf->fields.sfmt_addcc.f
1133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1134 int UNUSED written = 0;
1135 IADDR UNUSED pc = abuf->addr;
1136 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1137
1138 {
1139 SI tmp_tmp;
1140 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1141 {
1142 SI opval = tmp_tmp;
1143 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1144 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1145 }
1146 if (EQSI (tmp_tmp, 0)) {
1147 {
1148 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1149 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1150 written |= (1 << 4);
1151 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1152 }
1153 } else {
1154 if (LTSI (tmp_tmp, 0)) {
1155 {
1156 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1157 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1158 written |= (1 << 4);
1159 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1160 }
1161 } else {
1162 {
1163 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1164 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1165 written |= (1 << 4);
1166 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1167 }
1168 }
1169 }
1170 }
1171
1172 abuf->written = written;
1173 return vpc;
1174 #undef FLD
1175 }
1176
1177 /* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1178
1179 static SEM_PC
1180 SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1181 {
1182 #define FLD(f) abuf->fields.sfmt_addcc.f
1183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1184 int UNUSED written = 0;
1185 IADDR UNUSED pc = abuf->addr;
1186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1187
1188 {
1189 SI tmp_tmp;
1190 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1191 {
1192 SI opval = tmp_tmp;
1193 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1194 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1195 }
1196 if (EQSI (tmp_tmp, 0)) {
1197 {
1198 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1199 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1200 written |= (1 << 4);
1201 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1202 }
1203 } else {
1204 if (LTSI (tmp_tmp, 0)) {
1205 {
1206 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1207 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1208 written |= (1 << 4);
1209 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1210 }
1211 } else {
1212 {
1213 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1214 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1215 written |= (1 << 4);
1216 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1217 }
1218 }
1219 }
1220 }
1221
1222 abuf->written = written;
1223 return vpc;
1224 #undef FLD
1225 }
1226
1227 /* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1228
1229 static SEM_PC
1230 SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1231 {
1232 #define FLD(f) abuf->fields.sfmt_addcc.f
1233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1234 int UNUSED written = 0;
1235 IADDR UNUSED pc = abuf->addr;
1236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1237
1238 {
1239 SI tmp_shift;
1240 SI tmp_tmp;
1241 QI tmp_cc;
1242 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1243 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1244 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1245 {
1246 SI opval = tmp_tmp;
1247 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1248 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1249 }
1250 if (EQSI (tmp_tmp, 0)) {
1251 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1252 } else {
1253 if (LTSI (tmp_tmp, 0)) {
1254 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1255 } else {
1256 tmp_cc = ANDQI (tmp_cc, 3);
1257 }
1258 }
1259 {
1260 UQI opval = tmp_cc;
1261 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1262 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1263 }
1264 }
1265
1266 return vpc;
1267 #undef FLD
1268 }
1269
1270 /* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1271
1272 static SEM_PC
1273 SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1274 {
1275 #define FLD(f) abuf->fields.sfmt_addcc.f
1276 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1277 int UNUSED written = 0;
1278 IADDR UNUSED pc = abuf->addr;
1279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1280
1281 {
1282 SI tmp_shift;
1283 SI tmp_tmp;
1284 QI tmp_cc;
1285 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1286 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1287 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1288 {
1289 SI opval = tmp_tmp;
1290 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1291 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1292 }
1293 if (EQSI (tmp_tmp, 0)) {
1294 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1295 } else {
1296 if (LTSI (tmp_tmp, 0)) {
1297 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1298 } else {
1299 tmp_cc = ANDQI (tmp_cc, 3);
1300 }
1301 }
1302 {
1303 UQI opval = tmp_cc;
1304 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1305 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1306 }
1307 }
1308
1309 return vpc;
1310 #undef FLD
1311 }
1312
1313 /* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1314
1315 static SEM_PC
1316 SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1317 {
1318 #define FLD(f) abuf->fields.sfmt_addcc.f
1319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1320 int UNUSED written = 0;
1321 IADDR UNUSED pc = abuf->addr;
1322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1323
1324 {
1325 SI tmp_shift;
1326 SI tmp_tmp;
1327 QI tmp_cc;
1328 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1329 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1330 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1331 {
1332 SI opval = tmp_tmp;
1333 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1334 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1335 }
1336 if (EQSI (tmp_tmp, 0)) {
1337 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1338 } else {
1339 if (LTSI (tmp_tmp, 0)) {
1340 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1341 } else {
1342 tmp_cc = ANDQI (tmp_cc, 3);
1343 }
1344 }
1345 {
1346 UQI opval = tmp_cc;
1347 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1348 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1349 }
1350 }
1351
1352 return vpc;
1353 #undef FLD
1354 }
1355
1356 /* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1357
1358 static SEM_PC
1359 SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1360 {
1361 #define FLD(f) abuf->fields.sfmt_smulcc.f
1362 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1363 int UNUSED written = 0;
1364 IADDR UNUSED pc = abuf->addr;
1365 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1366
1367 {
1368 DI tmp_tmp;
1369 QI tmp_cc;
1370 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1371 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1372 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1373 tmp_cc = ANDQI (tmp_cc, 7);
1374 } else {
1375 tmp_cc = ORQI (tmp_cc, 8);
1376 }
1377 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1378 tmp_cc = ANDQI (tmp_cc, 11);
1379 } else {
1380 tmp_cc = ORQI (tmp_cc, 4);
1381 }
1382 {
1383 DI opval = tmp_tmp;
1384 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1385 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1386 }
1387 {
1388 UQI opval = tmp_cc;
1389 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1390 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1391 }
1392 }
1393
1394 return vpc;
1395 #undef FLD
1396 }
1397
1398 /* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1399
1400 static SEM_PC
1401 SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1402 {
1403 #define FLD(f) abuf->fields.sfmt_smulcc.f
1404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1405 int UNUSED written = 0;
1406 IADDR UNUSED pc = abuf->addr;
1407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1408
1409 {
1410 DI tmp_tmp;
1411 QI tmp_cc;
1412 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1413 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1414 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1415 tmp_cc = ANDQI (tmp_cc, 7);
1416 } else {
1417 tmp_cc = ORQI (tmp_cc, 8);
1418 }
1419 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1420 tmp_cc = ANDQI (tmp_cc, 11);
1421 } else {
1422 tmp_cc = ORQI (tmp_cc, 4);
1423 }
1424 {
1425 DI opval = tmp_tmp;
1426 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1427 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1428 }
1429 {
1430 UQI opval = tmp_cc;
1431 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1432 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1433 }
1434 }
1435
1436 return vpc;
1437 #undef FLD
1438 }
1439
1440 /* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1441
1442 static SEM_PC
1443 SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1444 {
1445 #define FLD(f) abuf->fields.sfmt_caddcc.f
1446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1447 int UNUSED written = 0;
1448 IADDR UNUSED pc = abuf->addr;
1449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1450
1451 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1452 {
1453 BI tmp_tmp;
1454 QI tmp_cc;
1455 SI tmp_result;
1456 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1457 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1458 if (EQBI (tmp_tmp, 0)) {
1459 tmp_cc = ANDQI (tmp_cc, 13);
1460 } else {
1461 tmp_cc = ORQI (tmp_cc, 2);
1462 }
1463 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1464 if (EQBI (tmp_tmp, 0)) {
1465 tmp_cc = ANDQI (tmp_cc, 14);
1466 } else {
1467 tmp_cc = ORQI (tmp_cc, 1);
1468 }
1469 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1470 if (EQSI (tmp_result, 0)) {
1471 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1472 } else {
1473 if (LTSI (tmp_result, 0)) {
1474 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1475 } else {
1476 tmp_cc = ANDQI (tmp_cc, 3);
1477 }
1478 }
1479 {
1480 SI opval = tmp_result;
1481 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1482 written |= (1 << 6);
1483 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1484 }
1485 {
1486 UQI opval = tmp_cc;
1487 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1488 written |= (1 << 7);
1489 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1490 }
1491 }
1492 }
1493
1494 abuf->written = written;
1495 return vpc;
1496 #undef FLD
1497 }
1498
1499 /* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1500
1501 static SEM_PC
1502 SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1503 {
1504 #define FLD(f) abuf->fields.sfmt_caddcc.f
1505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1506 int UNUSED written = 0;
1507 IADDR UNUSED pc = abuf->addr;
1508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1509
1510 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1511 {
1512 BI tmp_tmp;
1513 QI tmp_cc;
1514 SI tmp_result;
1515 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1516 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1517 if (EQBI (tmp_tmp, 0)) {
1518 tmp_cc = ANDQI (tmp_cc, 13);
1519 } else {
1520 tmp_cc = ORQI (tmp_cc, 2);
1521 }
1522 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1523 if (EQBI (tmp_tmp, 0)) {
1524 tmp_cc = ANDQI (tmp_cc, 14);
1525 } else {
1526 tmp_cc = ORQI (tmp_cc, 1);
1527 }
1528 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1529 if (EQSI (tmp_result, 0)) {
1530 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1531 } else {
1532 if (LTSI (tmp_result, 0)) {
1533 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1534 } else {
1535 tmp_cc = ANDQI (tmp_cc, 3);
1536 }
1537 }
1538 {
1539 SI opval = tmp_result;
1540 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1541 written |= (1 << 6);
1542 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1543 }
1544 {
1545 UQI opval = tmp_cc;
1546 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1547 written |= (1 << 7);
1548 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1549 }
1550 }
1551 }
1552
1553 abuf->written = written;
1554 return vpc;
1555 #undef FLD
1556 }
1557
1558 /* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1559
1560 static SEM_PC
1561 SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1562 {
1563 #define FLD(f) abuf->fields.sfmt_csmulcc.f
1564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1565 int UNUSED written = 0;
1566 IADDR UNUSED pc = abuf->addr;
1567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1568
1569 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1570 {
1571 DI tmp_tmp;
1572 QI tmp_cc;
1573 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1574 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1575 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1576 tmp_cc = ANDQI (tmp_cc, 7);
1577 } else {
1578 tmp_cc = ORQI (tmp_cc, 8);
1579 }
1580 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1581 tmp_cc = ANDQI (tmp_cc, 11);
1582 } else {
1583 tmp_cc = ORQI (tmp_cc, 4);
1584 }
1585 {
1586 DI opval = tmp_tmp;
1587 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1588 written |= (1 << 6);
1589 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1590 }
1591 {
1592 UQI opval = tmp_cc;
1593 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1594 written |= (1 << 7);
1595 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1596 }
1597 }
1598 }
1599
1600 abuf->written = written;
1601 return vpc;
1602 #undef FLD
1603 }
1604
1605 /* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1606
1607 static SEM_PC
1608 SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1609 {
1610 #define FLD(f) abuf->fields.sfmt_caddcc.f
1611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1612 int UNUSED written = 0;
1613 IADDR UNUSED pc = abuf->addr;
1614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1615
1616 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1617 {
1618 SI tmp_tmp;
1619 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1620 {
1621 SI opval = tmp_tmp;
1622 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1623 written |= (1 << 6);
1624 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1625 }
1626 if (EQSI (tmp_tmp, 0)) {
1627 {
1628 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1629 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1630 written |= (1 << 7);
1631 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1632 }
1633 } else {
1634 if (LTSI (tmp_tmp, 0)) {
1635 {
1636 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1637 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1638 written |= (1 << 7);
1639 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1640 }
1641 } else {
1642 {
1643 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1644 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1645 written |= (1 << 7);
1646 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1647 }
1648 }
1649 }
1650 }
1651 }
1652
1653 abuf->written = written;
1654 return vpc;
1655 #undef FLD
1656 }
1657
1658 /* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1659
1660 static SEM_PC
1661 SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1662 {
1663 #define FLD(f) abuf->fields.sfmt_caddcc.f
1664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1665 int UNUSED written = 0;
1666 IADDR UNUSED pc = abuf->addr;
1667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1668
1669 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1670 {
1671 SI tmp_tmp;
1672 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1673 {
1674 SI opval = tmp_tmp;
1675 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1676 written |= (1 << 6);
1677 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1678 }
1679 if (EQSI (tmp_tmp, 0)) {
1680 {
1681 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1682 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1683 written |= (1 << 7);
1684 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1685 }
1686 } else {
1687 if (LTSI (tmp_tmp, 0)) {
1688 {
1689 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1690 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1691 written |= (1 << 7);
1692 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1693 }
1694 } else {
1695 {
1696 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1697 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1698 written |= (1 << 7);
1699 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1700 }
1701 }
1702 }
1703 }
1704 }
1705
1706 abuf->written = written;
1707 return vpc;
1708 #undef FLD
1709 }
1710
1711 /* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1712
1713 static SEM_PC
1714 SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1715 {
1716 #define FLD(f) abuf->fields.sfmt_caddcc.f
1717 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1718 int UNUSED written = 0;
1719 IADDR UNUSED pc = abuf->addr;
1720 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1721
1722 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1723 {
1724 SI tmp_tmp;
1725 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1726 {
1727 SI opval = tmp_tmp;
1728 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1729 written |= (1 << 6);
1730 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1731 }
1732 if (EQSI (tmp_tmp, 0)) {
1733 {
1734 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1735 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1736 written |= (1 << 7);
1737 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1738 }
1739 } else {
1740 if (LTSI (tmp_tmp, 0)) {
1741 {
1742 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1743 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1744 written |= (1 << 7);
1745 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1746 }
1747 } else {
1748 {
1749 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1750 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1751 written |= (1 << 7);
1752 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1753 }
1754 }
1755 }
1756 }
1757 }
1758
1759 abuf->written = written;
1760 return vpc;
1761 #undef FLD
1762 }
1763
1764 /* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1765
1766 static SEM_PC
1767 SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1768 {
1769 #define FLD(f) abuf->fields.sfmt_caddcc.f
1770 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1771 int UNUSED written = 0;
1772 IADDR UNUSED pc = abuf->addr;
1773 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1774
1775 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1776 {
1777 SI tmp_shift;
1778 SI tmp_tmp;
1779 QI tmp_cc;
1780 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1781 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
1782 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1783 {
1784 SI opval = tmp_tmp;
1785 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1786 written |= (1 << 6);
1787 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1788 }
1789 if (EQSI (tmp_tmp, 0)) {
1790 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1791 } else {
1792 if (LTSI (tmp_tmp, 0)) {
1793 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1794 } else {
1795 tmp_cc = ANDQI (tmp_cc, 3);
1796 }
1797 }
1798 {
1799 UQI opval = tmp_cc;
1800 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1801 written |= (1 << 7);
1802 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1803 }
1804 }
1805 }
1806
1807 abuf->written = written;
1808 return vpc;
1809 #undef FLD
1810 }
1811
1812 /* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1813
1814 static SEM_PC
1815 SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1816 {
1817 #define FLD(f) abuf->fields.sfmt_caddcc.f
1818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1819 int UNUSED written = 0;
1820 IADDR UNUSED pc = abuf->addr;
1821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1822
1823 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1824 {
1825 SI tmp_shift;
1826 SI tmp_tmp;
1827 QI tmp_cc;
1828 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1829 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
1830 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1831 {
1832 SI opval = tmp_tmp;
1833 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1834 written |= (1 << 6);
1835 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1836 }
1837 if (EQSI (tmp_tmp, 0)) {
1838 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1839 } else {
1840 if (LTSI (tmp_tmp, 0)) {
1841 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1842 } else {
1843 tmp_cc = ANDQI (tmp_cc, 3);
1844 }
1845 }
1846 {
1847 UQI opval = tmp_cc;
1848 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1849 written |= (1 << 7);
1850 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1851 }
1852 }
1853 }
1854
1855 abuf->written = written;
1856 return vpc;
1857 #undef FLD
1858 }
1859
1860 /* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1861
1862 static SEM_PC
1863 SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1864 {
1865 #define FLD(f) abuf->fields.sfmt_caddcc.f
1866 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1867 int UNUSED written = 0;
1868 IADDR UNUSED pc = abuf->addr;
1869 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1870
1871 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1872 {
1873 SI tmp_shift;
1874 SI tmp_tmp;
1875 QI tmp_cc;
1876 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1877 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
1878 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1879 {
1880 SI opval = tmp_tmp;
1881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1882 written |= (1 << 6);
1883 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1884 }
1885 if (EQSI (tmp_tmp, 0)) {
1886 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1887 } else {
1888 if (LTSI (tmp_tmp, 0)) {
1889 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1890 } else {
1891 tmp_cc = ANDQI (tmp_cc, 3);
1892 }
1893 }
1894 {
1895 UQI opval = tmp_cc;
1896 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1897 written |= (1 << 7);
1898 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1899 }
1900 }
1901 }
1902
1903 abuf->written = written;
1904 return vpc;
1905 #undef FLD
1906 }
1907
1908 /* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1909
1910 static SEM_PC
1911 SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1912 {
1913 #define FLD(f) abuf->fields.sfmt_addcc.f
1914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1915 int UNUSED written = 0;
1916 IADDR UNUSED pc = abuf->addr;
1917 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1918
1919 {
1920 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1921 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1922 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1923 }
1924
1925 return vpc;
1926 #undef FLD
1927 }
1928
1929 /* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1930
1931 static SEM_PC
1932 SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1933 {
1934 #define FLD(f) abuf->fields.sfmt_addcc.f
1935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1936 int UNUSED written = 0;
1937 IADDR UNUSED pc = abuf->addr;
1938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1939
1940 {
1941 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1942 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1943 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1944 }
1945
1946 return vpc;
1947 #undef FLD
1948 }
1949
1950 /* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1951
1952 static SEM_PC
1953 SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1954 {
1955 #define FLD(f) abuf->fields.sfmt_addcc.f
1956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1957 int UNUSED written = 0;
1958 IADDR UNUSED pc = abuf->addr;
1959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1960
1961 {
1962 SI tmp_tmp;
1963 QI tmp_cc;
1964 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1965 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1966 if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1967 tmp_cc = ANDQI (tmp_cc, 13);
1968 } else {
1969 tmp_cc = ORQI (tmp_cc, 2);
1970 }
1971 if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1972 tmp_cc = ANDQI (tmp_cc, 14);
1973 } else {
1974 tmp_cc = ORQI (tmp_cc, 1);
1975 }
1976 if (EQSI (tmp_tmp, 0)) {
1977 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1978 } else {
1979 if (LTSI (tmp_tmp, 0)) {
1980 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1981 } else {
1982 tmp_cc = ANDQI (tmp_cc, 3);
1983 }
1984 }
1985 {
1986 SI opval = tmp_tmp;
1987 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1988 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1989 }
1990 {
1991 UQI opval = tmp_cc;
1992 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1993 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1994 }
1995 }
1996
1997 return vpc;
1998 #undef FLD
1999 }
2000
2001 /* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2002
2003 static SEM_PC
2004 SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2005 {
2006 #define FLD(f) abuf->fields.sfmt_addcc.f
2007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2008 int UNUSED written = 0;
2009 IADDR UNUSED pc = abuf->addr;
2010 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2011
2012 {
2013 SI tmp_tmp;
2014 QI tmp_cc;
2015 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2016 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2017 if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2018 tmp_cc = ANDQI (tmp_cc, 13);
2019 } else {
2020 tmp_cc = ORQI (tmp_cc, 2);
2021 }
2022 if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2023 tmp_cc = ANDQI (tmp_cc, 14);
2024 } else {
2025 tmp_cc = ORQI (tmp_cc, 1);
2026 }
2027 if (EQSI (tmp_tmp, 0)) {
2028 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2029 } else {
2030 if (LTSI (tmp_tmp, 0)) {
2031 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2032 } else {
2033 tmp_cc = ANDQI (tmp_cc, 3);
2034 }
2035 }
2036 {
2037 SI opval = tmp_tmp;
2038 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2039 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2040 }
2041 {
2042 UQI opval = tmp_cc;
2043 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2044 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2045 }
2046 }
2047
2048 return vpc;
2049 #undef FLD
2050 }
2051
2052 /* addss: addss$pack $GRi,$GRj,$GRk */
2053
2054 static SEM_PC
2055 SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2056 {
2057 #define FLD(f) abuf->fields.sfmt_addcc.f
2058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2059 int UNUSED written = 0;
2060 IADDR UNUSED pc = abuf->addr;
2061 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2062
2063 {
2064 {
2065 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2066 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2067 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2068 }
2069 if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2070 {
2071 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2072 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2073 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2074 }
2075 }
2076 }
2077
2078 return vpc;
2079 #undef FLD
2080 }
2081
2082 /* subss: subss$pack $GRi,$GRj,$GRk */
2083
2084 static SEM_PC
2085 SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2086 {
2087 #define FLD(f) abuf->fields.sfmt_addcc.f
2088 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2089 int UNUSED written = 0;
2090 IADDR UNUSED pc = abuf->addr;
2091 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2092
2093 {
2094 {
2095 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2096 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2097 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2098 }
2099 if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2100 {
2101 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2102 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2103 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2104 }
2105 }
2106 }
2107
2108 return vpc;
2109 #undef FLD
2110 }
2111
2112 /* addi: addi$pack $GRi,$s12,$GRk */
2113
2114 static SEM_PC
2115 SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2116 {
2117 #define FLD(f) abuf->fields.sfmt_swapi.f
2118 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2119 int UNUSED written = 0;
2120 IADDR UNUSED pc = abuf->addr;
2121 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2122
2123 {
2124 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2125 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2126 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2127 }
2128
2129 return vpc;
2130 #undef FLD
2131 }
2132
2133 /* subi: subi$pack $GRi,$s12,$GRk */
2134
2135 static SEM_PC
2136 SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2137 {
2138 #define FLD(f) abuf->fields.sfmt_swapi.f
2139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2140 int UNUSED written = 0;
2141 IADDR UNUSED pc = abuf->addr;
2142 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2143
2144 {
2145 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2146 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2147 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2148 }
2149
2150 return vpc;
2151 #undef FLD
2152 }
2153
2154 /* andi: andi$pack $GRi,$s12,$GRk */
2155
2156 static SEM_PC
2157 SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2158 {
2159 #define FLD(f) abuf->fields.sfmt_swapi.f
2160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2161 int UNUSED written = 0;
2162 IADDR UNUSED pc = abuf->addr;
2163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2164
2165 {
2166 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2167 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2168 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2169 }
2170
2171 return vpc;
2172 #undef FLD
2173 }
2174
2175 /* ori: ori$pack $GRi,$s12,$GRk */
2176
2177 static SEM_PC
2178 SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2179 {
2180 #define FLD(f) abuf->fields.sfmt_swapi.f
2181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2182 int UNUSED written = 0;
2183 IADDR UNUSED pc = abuf->addr;
2184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2185
2186 {
2187 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2188 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2189 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2190 }
2191
2192 return vpc;
2193 #undef FLD
2194 }
2195
2196 /* xori: xori$pack $GRi,$s12,$GRk */
2197
2198 static SEM_PC
2199 SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2200 {
2201 #define FLD(f) abuf->fields.sfmt_swapi.f
2202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2203 int UNUSED written = 0;
2204 IADDR UNUSED pc = abuf->addr;
2205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2206
2207 {
2208 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2209 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2210 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2211 }
2212
2213 return vpc;
2214 #undef FLD
2215 }
2216
2217 /* sdivi: sdivi$pack $GRi,$s12,$GRk */
2218
2219 static SEM_PC
2220 SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2221 {
2222 #define FLD(f) abuf->fields.sfmt_swapi.f
2223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2224 int UNUSED written = 0;
2225 IADDR UNUSED pc = abuf->addr;
2226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2227
2228 {
2229 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2230 ; /*clobber*/
2231 }
2232
2233 return vpc;
2234 #undef FLD
2235 }
2236
2237 /* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2238
2239 static SEM_PC
2240 SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2241 {
2242 #define FLD(f) abuf->fields.sfmt_swapi.f
2243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2244 int UNUSED written = 0;
2245 IADDR UNUSED pc = abuf->addr;
2246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2247
2248 {
2249 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2250 ; /*clobber*/
2251 }
2252
2253 return vpc;
2254 #undef FLD
2255 }
2256
2257 /* udivi: udivi$pack $GRi,$s12,$GRk */
2258
2259 static SEM_PC
2260 SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2261 {
2262 #define FLD(f) abuf->fields.sfmt_swapi.f
2263 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2264 int UNUSED written = 0;
2265 IADDR UNUSED pc = abuf->addr;
2266 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2267
2268 {
2269 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2270 ; /*clobber*/
2271 }
2272
2273 return vpc;
2274 #undef FLD
2275 }
2276
2277 /* nudivi: nudivi$pack $GRi,$s12,$GRk */
2278
2279 static SEM_PC
2280 SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2281 {
2282 #define FLD(f) abuf->fields.sfmt_swapi.f
2283 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2284 int UNUSED written = 0;
2285 IADDR UNUSED pc = abuf->addr;
2286 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2287
2288 {
2289 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2290 ; /*clobber*/
2291 }
2292
2293 return vpc;
2294 #undef FLD
2295 }
2296
2297 /* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2298
2299 static SEM_PC
2300 SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2301 {
2302 #define FLD(f) abuf->fields.sfmt_smuli.f
2303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2304 int UNUSED written = 0;
2305 IADDR UNUSED pc = abuf->addr;
2306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2307
2308 {
2309 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2310 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2311 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2312 }
2313
2314 return vpc;
2315 #undef FLD
2316 }
2317
2318 /* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2319
2320 static SEM_PC
2321 SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2322 {
2323 #define FLD(f) abuf->fields.sfmt_smuli.f
2324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2325 int UNUSED written = 0;
2326 IADDR UNUSED pc = abuf->addr;
2327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2328
2329 {
2330 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2331 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2332 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2333 }
2334
2335 return vpc;
2336 #undef FLD
2337 }
2338
2339 /* slli: slli$pack $GRi,$s12,$GRk */
2340
2341 static SEM_PC
2342 SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2343 {
2344 #define FLD(f) abuf->fields.sfmt_swapi.f
2345 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2346 int UNUSED written = 0;
2347 IADDR UNUSED pc = abuf->addr;
2348 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2349
2350 {
2351 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2352 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2353 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2354 }
2355
2356 return vpc;
2357 #undef FLD
2358 }
2359
2360 /* srli: srli$pack $GRi,$s12,$GRk */
2361
2362 static SEM_PC
2363 SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2364 {
2365 #define FLD(f) abuf->fields.sfmt_swapi.f
2366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2367 int UNUSED written = 0;
2368 IADDR UNUSED pc = abuf->addr;
2369 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2370
2371 {
2372 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2373 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2374 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2375 }
2376
2377 return vpc;
2378 #undef FLD
2379 }
2380
2381 /* srai: srai$pack $GRi,$s12,$GRk */
2382
2383 static SEM_PC
2384 SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2385 {
2386 #define FLD(f) abuf->fields.sfmt_swapi.f
2387 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2388 int UNUSED written = 0;
2389 IADDR UNUSED pc = abuf->addr;
2390 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2391
2392 {
2393 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2394 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2395 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2396 }
2397
2398 return vpc;
2399 #undef FLD
2400 }
2401
2402 /* scani: scani$pack $GRi,$s12,$GRk */
2403
2404 static SEM_PC
2405 SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2406 {
2407 #define FLD(f) abuf->fields.sfmt_swapi.f
2408 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2409 int UNUSED written = 0;
2410 IADDR UNUSED pc = abuf->addr;
2411 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2412
2413 {
2414 SI tmp_tmp1;
2415 SI tmp_tmp2;
2416 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2417 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2418 {
2419 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2420 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2421 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2422 }
2423 }
2424
2425 return vpc;
2426 #undef FLD
2427 }
2428
2429 /* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2430
2431 static SEM_PC
2432 SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2433 {
2434 #define FLD(f) abuf->fields.sfmt_addicc.f
2435 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2436 int UNUSED written = 0;
2437 IADDR UNUSED pc = abuf->addr;
2438 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2439
2440 {
2441 BI tmp_tmp;
2442 QI tmp_cc;
2443 SI tmp_result;
2444 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2445 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2446 if (EQBI (tmp_tmp, 0)) {
2447 tmp_cc = ANDQI (tmp_cc, 13);
2448 } else {
2449 tmp_cc = ORQI (tmp_cc, 2);
2450 }
2451 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2452 if (EQBI (tmp_tmp, 0)) {
2453 tmp_cc = ANDQI (tmp_cc, 14);
2454 } else {
2455 tmp_cc = ORQI (tmp_cc, 1);
2456 }
2457 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2458 if (EQSI (tmp_result, 0)) {
2459 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2460 } else {
2461 if (LTSI (tmp_result, 0)) {
2462 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2463 } else {
2464 tmp_cc = ANDQI (tmp_cc, 3);
2465 }
2466 }
2467 {
2468 SI opval = tmp_result;
2469 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2470 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2471 }
2472 {
2473 UQI opval = tmp_cc;
2474 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2475 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2476 }
2477 }
2478
2479 return vpc;
2480 #undef FLD
2481 }
2482
2483 /* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2484
2485 static SEM_PC
2486 SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2487 {
2488 #define FLD(f) abuf->fields.sfmt_addicc.f
2489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2490 int UNUSED written = 0;
2491 IADDR UNUSED pc = abuf->addr;
2492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2493
2494 {
2495 BI tmp_tmp;
2496 QI tmp_cc;
2497 SI tmp_result;
2498 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2499 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2500 if (EQBI (tmp_tmp, 0)) {
2501 tmp_cc = ANDQI (tmp_cc, 13);
2502 } else {
2503 tmp_cc = ORQI (tmp_cc, 2);
2504 }
2505 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2506 if (EQBI (tmp_tmp, 0)) {
2507 tmp_cc = ANDQI (tmp_cc, 14);
2508 } else {
2509 tmp_cc = ORQI (tmp_cc, 1);
2510 }
2511 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2512 if (EQSI (tmp_result, 0)) {
2513 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2514 } else {
2515 if (LTSI (tmp_result, 0)) {
2516 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2517 } else {
2518 tmp_cc = ANDQI (tmp_cc, 3);
2519 }
2520 }
2521 {
2522 SI opval = tmp_result;
2523 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2524 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2525 }
2526 {
2527 UQI opval = tmp_cc;
2528 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2529 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2530 }
2531 }
2532
2533 return vpc;
2534 #undef FLD
2535 }
2536
2537 /* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2538
2539 static SEM_PC
2540 SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2541 {
2542 #define FLD(f) abuf->fields.sfmt_addicc.f
2543 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2544 int UNUSED written = 0;
2545 IADDR UNUSED pc = abuf->addr;
2546 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2547
2548 {
2549 SI tmp_tmp;
2550 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2551 {
2552 SI opval = tmp_tmp;
2553 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2554 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2555 }
2556 if (EQSI (tmp_tmp, 0)) {
2557 {
2558 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2559 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2560 written |= (1 << 4);
2561 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2562 }
2563 } else {
2564 if (LTSI (tmp_tmp, 0)) {
2565 {
2566 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2567 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2568 written |= (1 << 4);
2569 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2570 }
2571 } else {
2572 {
2573 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2574 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2575 written |= (1 << 4);
2576 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2577 }
2578 }
2579 }
2580 }
2581
2582 abuf->written = written;
2583 return vpc;
2584 #undef FLD
2585 }
2586
2587 /* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2588
2589 static SEM_PC
2590 SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2591 {
2592 #define FLD(f) abuf->fields.sfmt_addicc.f
2593 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2594 int UNUSED written = 0;
2595 IADDR UNUSED pc = abuf->addr;
2596 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2597
2598 {
2599 SI tmp_tmp;
2600 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2601 {
2602 SI opval = tmp_tmp;
2603 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2604 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2605 }
2606 if (EQSI (tmp_tmp, 0)) {
2607 {
2608 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2609 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2610 written |= (1 << 4);
2611 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2612 }
2613 } else {
2614 if (LTSI (tmp_tmp, 0)) {
2615 {
2616 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2617 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2618 written |= (1 << 4);
2619 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2620 }
2621 } else {
2622 {
2623 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2624 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2625 written |= (1 << 4);
2626 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2627 }
2628 }
2629 }
2630 }
2631
2632 abuf->written = written;
2633 return vpc;
2634 #undef FLD
2635 }
2636
2637 /* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2638
2639 static SEM_PC
2640 SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2641 {
2642 #define FLD(f) abuf->fields.sfmt_addicc.f
2643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2644 int UNUSED written = 0;
2645 IADDR UNUSED pc = abuf->addr;
2646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2647
2648 {
2649 SI tmp_tmp;
2650 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2651 {
2652 SI opval = tmp_tmp;
2653 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2655 }
2656 if (EQSI (tmp_tmp, 0)) {
2657 {
2658 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2659 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2660 written |= (1 << 4);
2661 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2662 }
2663 } else {
2664 if (LTSI (tmp_tmp, 0)) {
2665 {
2666 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2667 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2668 written |= (1 << 4);
2669 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2670 }
2671 } else {
2672 {
2673 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2674 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2675 written |= (1 << 4);
2676 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2677 }
2678 }
2679 }
2680 }
2681
2682 abuf->written = written;
2683 return vpc;
2684 #undef FLD
2685 }
2686
2687 /* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2688
2689 static SEM_PC
2690 SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2691 {
2692 #define FLD(f) abuf->fields.sfmt_smulicc.f
2693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2694 int UNUSED written = 0;
2695 IADDR UNUSED pc = abuf->addr;
2696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2697
2698 {
2699 DI tmp_tmp;
2700 QI tmp_cc;
2701 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2702 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2703 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2704 tmp_cc = ANDQI (tmp_cc, 7);
2705 } else {
2706 tmp_cc = ORQI (tmp_cc, 8);
2707 }
2708 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2709 tmp_cc = ANDQI (tmp_cc, 11);
2710 } else {
2711 tmp_cc = ORQI (tmp_cc, 4);
2712 }
2713 {
2714 DI opval = tmp_tmp;
2715 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2716 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2717 }
2718 {
2719 UQI opval = tmp_cc;
2720 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2721 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2722 }
2723 }
2724
2725 return vpc;
2726 #undef FLD
2727 }
2728
2729 /* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2730
2731 static SEM_PC
2732 SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2733 {
2734 #define FLD(f) abuf->fields.sfmt_smulicc.f
2735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2736 int UNUSED written = 0;
2737 IADDR UNUSED pc = abuf->addr;
2738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2739
2740 {
2741 DI tmp_tmp;
2742 QI tmp_cc;
2743 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2744 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2745 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2746 tmp_cc = ANDQI (tmp_cc, 7);
2747 } else {
2748 tmp_cc = ORQI (tmp_cc, 8);
2749 }
2750 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2751 tmp_cc = ANDQI (tmp_cc, 11);
2752 } else {
2753 tmp_cc = ORQI (tmp_cc, 4);
2754 }
2755 {
2756 DI opval = tmp_tmp;
2757 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2758 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2759 }
2760 {
2761 UQI opval = tmp_cc;
2762 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2763 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2764 }
2765 }
2766
2767 return vpc;
2768 #undef FLD
2769 }
2770
2771 /* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2772
2773 static SEM_PC
2774 SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2775 {
2776 #define FLD(f) abuf->fields.sfmt_addicc.f
2777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2778 int UNUSED written = 0;
2779 IADDR UNUSED pc = abuf->addr;
2780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2781
2782 {
2783 SI tmp_shift;
2784 SI tmp_tmp;
2785 QI tmp_cc;
2786 tmp_shift = ANDSI (FLD (f_s10), 31);
2787 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2788 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2789 {
2790 SI opval = tmp_tmp;
2791 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2792 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2793 }
2794 if (EQSI (tmp_tmp, 0)) {
2795 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2796 } else {
2797 if (LTSI (tmp_tmp, 0)) {
2798 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2799 } else {
2800 tmp_cc = ANDQI (tmp_cc, 3);
2801 }
2802 }
2803 {
2804 UQI opval = tmp_cc;
2805 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2806 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2807 }
2808 }
2809
2810 return vpc;
2811 #undef FLD
2812 }
2813
2814 /* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2815
2816 static SEM_PC
2817 SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2818 {
2819 #define FLD(f) abuf->fields.sfmt_addicc.f
2820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2821 int UNUSED written = 0;
2822 IADDR UNUSED pc = abuf->addr;
2823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2824
2825 {
2826 SI tmp_shift;
2827 SI tmp_tmp;
2828 QI tmp_cc;
2829 tmp_shift = ANDSI (FLD (f_s10), 31);
2830 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2831 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2832 {
2833 SI opval = tmp_tmp;
2834 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2835 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2836 }
2837 if (EQSI (tmp_tmp, 0)) {
2838 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2839 } else {
2840 if (LTSI (tmp_tmp, 0)) {
2841 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2842 } else {
2843 tmp_cc = ANDQI (tmp_cc, 3);
2844 }
2845 }
2846 {
2847 UQI opval = tmp_cc;
2848 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2849 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2850 }
2851 }
2852
2853 return vpc;
2854 #undef FLD
2855 }
2856
2857 /* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2858
2859 static SEM_PC
2860 SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2861 {
2862 #define FLD(f) abuf->fields.sfmt_addicc.f
2863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2864 int UNUSED written = 0;
2865 IADDR UNUSED pc = abuf->addr;
2866 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2867
2868 {
2869 SI tmp_shift;
2870 SI tmp_tmp;
2871 QI tmp_cc;
2872 tmp_shift = ANDSI (FLD (f_s10), 31);
2873 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2874 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2875 {
2876 SI opval = tmp_tmp;
2877 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2878 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2879 }
2880 if (EQSI (tmp_tmp, 0)) {
2881 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2882 } else {
2883 if (LTSI (tmp_tmp, 0)) {
2884 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2885 } else {
2886 tmp_cc = ANDQI (tmp_cc, 3);
2887 }
2888 }
2889 {
2890 UQI opval = tmp_cc;
2891 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2892 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2893 }
2894 }
2895
2896 return vpc;
2897 #undef FLD
2898 }
2899
2900 /* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2901
2902 static SEM_PC
2903 SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2904 {
2905 #define FLD(f) abuf->fields.sfmt_addicc.f
2906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2907 int UNUSED written = 0;
2908 IADDR UNUSED pc = abuf->addr;
2909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2910
2911 {
2912 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2913 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2914 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2915 }
2916
2917 return vpc;
2918 #undef FLD
2919 }
2920
2921 /* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2922
2923 static SEM_PC
2924 SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2925 {
2926 #define FLD(f) abuf->fields.sfmt_addicc.f
2927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2928 int UNUSED written = 0;
2929 IADDR UNUSED pc = abuf->addr;
2930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2931
2932 {
2933 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2934 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2935 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2936 }
2937
2938 return vpc;
2939 #undef FLD
2940 }
2941
2942 /* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2943
2944 static SEM_PC
2945 SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2946 {
2947 #define FLD(f) abuf->fields.sfmt_addicc.f
2948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2949 int UNUSED written = 0;
2950 IADDR UNUSED pc = abuf->addr;
2951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2952
2953 {
2954 SI tmp_tmp;
2955 QI tmp_cc;
2956 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2957 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2958 if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2959 tmp_cc = ANDQI (tmp_cc, 13);
2960 } else {
2961 tmp_cc = ORQI (tmp_cc, 2);
2962 }
2963 if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2964 tmp_cc = ANDQI (tmp_cc, 14);
2965 } else {
2966 tmp_cc = ORQI (tmp_cc, 1);
2967 }
2968 if (EQSI (tmp_tmp, 0)) {
2969 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2970 } else {
2971 if (LTSI (tmp_tmp, 0)) {
2972 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2973 } else {
2974 tmp_cc = ANDQI (tmp_cc, 3);
2975 }
2976 }
2977 {
2978 SI opval = tmp_tmp;
2979 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2980 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2981 }
2982 {
2983 UQI opval = tmp_cc;
2984 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2985 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2986 }
2987 }
2988
2989 return vpc;
2990 #undef FLD
2991 }
2992
2993 /* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2994
2995 static SEM_PC
2996 SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2997 {
2998 #define FLD(f) abuf->fields.sfmt_addicc.f
2999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3000 int UNUSED written = 0;
3001 IADDR UNUSED pc = abuf->addr;
3002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3003
3004 {
3005 SI tmp_tmp;
3006 QI tmp_cc;
3007 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3008 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
3009 if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3010 tmp_cc = ANDQI (tmp_cc, 13);
3011 } else {
3012 tmp_cc = ORQI (tmp_cc, 2);
3013 }
3014 if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3015 tmp_cc = ANDQI (tmp_cc, 14);
3016 } else {
3017 tmp_cc = ORQI (tmp_cc, 1);
3018 }
3019 if (EQSI (tmp_tmp, 0)) {
3020 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3021 } else {
3022 if (LTSI (tmp_tmp, 0)) {
3023 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3024 } else {
3025 tmp_cc = ANDQI (tmp_cc, 3);
3026 }
3027 }
3028 {
3029 SI opval = tmp_tmp;
3030 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3031 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3032 }
3033 {
3034 UQI opval = tmp_cc;
3035 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3036 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3037 }
3038 }
3039
3040 return vpc;
3041 #undef FLD
3042 }
3043
3044 /* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3045
3046 static SEM_PC
3047 SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3048 {
3049 #define FLD(f) abuf->fields.sfmt_smulcc.f
3050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3051 int UNUSED written = 0;
3052 IADDR UNUSED pc = abuf->addr;
3053 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3054
3055 {
3056 QI tmp_cc;
3057 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3058 tmp_cc = ANDQI (tmp_cc, 7);
3059 } else {
3060 tmp_cc = ORQI (tmp_cc, 8);
3061 }
3062 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3063 tmp_cc = ANDQI (tmp_cc, 11);
3064 } else {
3065 tmp_cc = ORQI (tmp_cc, 4);
3066 }
3067 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3068 tmp_cc = ANDQI (tmp_cc, 13);
3069 } else {
3070 tmp_cc = ORQI (tmp_cc, 2);
3071 }
3072 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3073 tmp_cc = ANDQI (tmp_cc, 14);
3074 } else {
3075 tmp_cc = ORQI (tmp_cc, 1);
3076 }
3077 {
3078 UQI opval = tmp_cc;
3079 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3080 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3081 }
3082 }
3083
3084 return vpc;
3085 #undef FLD
3086 }
3087
3088 /* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3089
3090 static SEM_PC
3091 SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3092 {
3093 #define FLD(f) abuf->fields.sfmt_smulcc.f
3094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3095 int UNUSED written = 0;
3096 IADDR UNUSED pc = abuf->addr;
3097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3098
3099 {
3100 QI tmp_cc;
3101 tmp_cc = 0;
3102 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)) {
3103 tmp_cc = ANDQI (tmp_cc, 14);
3104 } else {
3105 tmp_cc = ORQI (tmp_cc, 1);
3106 }
3107 {
3108 UQI opval = tmp_cc;
3109 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3110 TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3111 }
3112 }
3113
3114 return vpc;
3115 #undef FLD
3116 }
3117
3118 /* setlo: setlo$pack $ulo16,$GRklo */
3119
3120 static SEM_PC
3121 SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3122 {
3123 #define FLD(f) abuf->fields.sfmt_setlo.f
3124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3125 int UNUSED written = 0;
3126 IADDR UNUSED pc = abuf->addr;
3127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3128
3129 {
3130 UHI opval = FLD (f_u16);
3131 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3132 TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3133 }
3134
3135 return vpc;
3136 #undef FLD
3137 }
3138
3139 /* sethi: sethi$pack $uhi16,$GRkhi */
3140
3141 static SEM_PC
3142 SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3143 {
3144 #define FLD(f) abuf->fields.sfmt_sethi.f
3145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3146 int UNUSED written = 0;
3147 IADDR UNUSED pc = abuf->addr;
3148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3149
3150 {
3151 UHI opval = FLD (f_u16);
3152 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3153 TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3154 }
3155
3156 return vpc;
3157 #undef FLD
3158 }
3159
3160 /* setlos: setlos$pack $slo16,$GRk */
3161
3162 static SEM_PC
3163 SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3164 {
3165 #define FLD(f) abuf->fields.sfmt_setlos.f
3166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3167 int UNUSED written = 0;
3168 IADDR UNUSED pc = abuf->addr;
3169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3170
3171 {
3172 SI opval = FLD (f_s16);
3173 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3174 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3175 }
3176
3177 return vpc;
3178 #undef FLD
3179 }
3180
3181 /* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3182
3183 static SEM_PC
3184 SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3185 {
3186 #define FLD(f) abuf->fields.sfmt_addcc.f
3187 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3188 int UNUSED written = 0;
3189 IADDR UNUSED pc = abuf->addr;
3190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3191
3192 {
3193 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3194 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3195 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3196 }
3197
3198 return vpc;
3199 #undef FLD
3200 }
3201
3202 /* ldub: ldub$pack @($GRi,$GRj),$GRk */
3203
3204 static SEM_PC
3205 SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3206 {
3207 #define FLD(f) abuf->fields.sfmt_addcc.f
3208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3209 int UNUSED written = 0;
3210 IADDR UNUSED pc = abuf->addr;
3211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3212
3213 {
3214 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3215 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3216 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3217 }
3218
3219 return vpc;
3220 #undef FLD
3221 }
3222
3223 /* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3224
3225 static SEM_PC
3226 SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3227 {
3228 #define FLD(f) abuf->fields.sfmt_addcc.f
3229 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3230 int UNUSED written = 0;
3231 IADDR UNUSED pc = abuf->addr;
3232 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3233
3234 {
3235 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3236 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3237 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3238 }
3239
3240 return vpc;
3241 #undef FLD
3242 }
3243
3244 /* lduh: lduh$pack @($GRi,$GRj),$GRk */
3245
3246 static SEM_PC
3247 SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3248 {
3249 #define FLD(f) abuf->fields.sfmt_addcc.f
3250 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3251 int UNUSED written = 0;
3252 IADDR UNUSED pc = abuf->addr;
3253 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3254
3255 {
3256 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3257 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3258 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3259 }
3260
3261 return vpc;
3262 #undef FLD
3263 }
3264
3265 /* ld: ld$pack $ldann($GRi,$GRj),$GRk */
3266
3267 static SEM_PC
3268 SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3269 {
3270 #define FLD(f) abuf->fields.sfmt_addcc.f
3271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3272 int UNUSED written = 0;
3273 IADDR UNUSED pc = abuf->addr;
3274 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3275
3276 {
3277 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3278 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3279 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3280 }
3281
3282 return vpc;
3283 #undef FLD
3284 }
3285
3286 /* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3287
3288 static SEM_PC
3289 SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3290 {
3291 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3292 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3293 int UNUSED written = 0;
3294 IADDR UNUSED pc = abuf->addr;
3295 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3296
3297 {
3298 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3299 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3300 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3301 }
3302
3303 return vpc;
3304 #undef FLD
3305 }
3306
3307 /* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3308
3309 static SEM_PC
3310 SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3311 {
3312 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3313 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3314 int UNUSED written = 0;
3315 IADDR UNUSED pc = abuf->addr;
3316 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3317
3318 {
3319 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3320 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3321 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3322 }
3323
3324 return vpc;
3325 #undef FLD
3326 }
3327
3328 /* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3329
3330 static SEM_PC
3331 SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3332 {
3333 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3335 int UNUSED written = 0;
3336 IADDR UNUSED pc = abuf->addr;
3337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3338
3339 {
3340 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3341 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3342 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3343 }
3344
3345 return vpc;
3346 #undef FLD
3347 }
3348
3349 /* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3350
3351 static SEM_PC
3352 SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3353 {
3354 #define FLD(f) abuf->fields.sfmt_ldcu.f
3355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3356 int UNUSED written = 0;
3357 IADDR UNUSED pc = abuf->addr;
3358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3359
3360 {
3361 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3362 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3363 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3364 }
3365
3366 return vpc;
3367 #undef FLD
3368 }
3369
3370 /* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3371
3372 static SEM_PC
3373 SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3374 {
3375 #define FLD(f) abuf->fields.sfmt_addcc.f
3376 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3377 int UNUSED written = 0;
3378 IADDR UNUSED pc = abuf->addr;
3379 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3380
3381 {
3382 BI tmp_do_op;
3383 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3384 if (tmp_do_op) {
3385 {
3386 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3387 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3388 written |= (1 << 6);
3389 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3390 }
3391 }
3392 }
3393
3394 abuf->written = written;
3395 return vpc;
3396 #undef FLD
3397 }
3398
3399 /* nldub: nldub$pack @($GRi,$GRj),$GRk */
3400
3401 static SEM_PC
3402 SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3403 {
3404 #define FLD(f) abuf->fields.sfmt_addcc.f
3405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3406 int UNUSED written = 0;
3407 IADDR UNUSED pc = abuf->addr;
3408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3409
3410 {
3411 BI tmp_do_op;
3412 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3413 if (tmp_do_op) {
3414 {
3415 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3416 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3417 written |= (1 << 6);
3418 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3419 }
3420 }
3421 }
3422
3423 abuf->written = written;
3424 return vpc;
3425 #undef FLD
3426 }
3427
3428 /* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3429
3430 static SEM_PC
3431 SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3432 {
3433 #define FLD(f) abuf->fields.sfmt_addcc.f
3434 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3435 int UNUSED written = 0;
3436 IADDR UNUSED pc = abuf->addr;
3437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3438
3439 {
3440 BI tmp_do_op;
3441 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3442 if (tmp_do_op) {
3443 {
3444 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3445 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3446 written |= (1 << 6);
3447 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3448 }
3449 }
3450 }
3451
3452 abuf->written = written;
3453 return vpc;
3454 #undef FLD
3455 }
3456
3457 /* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3458
3459 static SEM_PC
3460 SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3461 {
3462 #define FLD(f) abuf->fields.sfmt_addcc.f
3463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3464 int UNUSED written = 0;
3465 IADDR UNUSED pc = abuf->addr;
3466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3467
3468 {
3469 BI tmp_do_op;
3470 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3471 if (tmp_do_op) {
3472 {
3473 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3474 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3475 written |= (1 << 6);
3476 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3477 }
3478 }
3479 }
3480
3481 abuf->written = written;
3482 return vpc;
3483 #undef FLD
3484 }
3485
3486 /* nld: nld$pack @($GRi,$GRj),$GRk */
3487
3488 static SEM_PC
3489 SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3490 {
3491 #define FLD(f) abuf->fields.sfmt_addcc.f
3492 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3493 int UNUSED written = 0;
3494 IADDR UNUSED pc = abuf->addr;
3495 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3496
3497 {
3498 BI tmp_do_op;
3499 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3500 if (tmp_do_op) {
3501 {
3502 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3503 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3504 written |= (1 << 6);
3505 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3506 }
3507 }
3508 }
3509
3510 abuf->written = written;
3511 return vpc;
3512 #undef FLD
3513 }
3514
3515 /* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3516
3517 static SEM_PC
3518 SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3519 {
3520 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3522 int UNUSED written = 0;
3523 IADDR UNUSED pc = abuf->addr;
3524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3525
3526 {
3527 BI tmp_do_op;
3528 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3529 if (tmp_do_op) {
3530 {
3531 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3532 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3533 written |= (1 << 6);
3534 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3535 }
3536 }
3537 }
3538
3539 abuf->written = written;
3540 return vpc;
3541 #undef FLD
3542 }
3543
3544 /* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3545
3546 static SEM_PC
3547 SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3548 {
3549 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3551 int UNUSED written = 0;
3552 IADDR UNUSED pc = abuf->addr;
3553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3554
3555 {
3556 BI tmp_do_op;
3557 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3558 if (tmp_do_op) {
3559 {
3560 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3561 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3562 written |= (1 << 6);
3563 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3564 }
3565 }
3566 }
3567
3568 abuf->written = written;
3569 return vpc;
3570 #undef FLD
3571 }
3572
3573 /* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3574
3575 static SEM_PC
3576 SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3577 {
3578 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3579 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3580 int UNUSED written = 0;
3581 IADDR UNUSED pc = abuf->addr;
3582 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3583
3584 {
3585 BI tmp_do_op;
3586 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3587 if (tmp_do_op) {
3588 {
3589 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3590 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3591 written |= (1 << 6);
3592 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3593 }
3594 }
3595 }
3596
3597 abuf->written = written;
3598 return vpc;
3599 #undef FLD
3600 }
3601
3602 /* ldd: ldd$pack $lddann($GRi,$GRj),$GRdoublek */
3603
3604 static SEM_PC
3605 SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3606 {
3607 #define FLD(f) abuf->fields.sfmt_smulcc.f
3608 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3609 int UNUSED written = 0;
3610 IADDR UNUSED pc = abuf->addr;
3611 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3612
3613 {
3614 SI tmp_address;
3615 if (NESI (FLD (f_GRk), 0)) {
3616 {
3617 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3618 {
3619 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3620 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3621 written |= (1 << 4);
3622 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3623 }
3624 }
3625 }
3626 }
3627
3628 abuf->written = written;
3629 return vpc;
3630 #undef FLD
3631 }
3632
3633 /* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3634
3635 static SEM_PC
3636 SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3637 {
3638 #define FLD(f) abuf->fields.sfmt_clddfu.f
3639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3640 int UNUSED written = 0;
3641 IADDR UNUSED pc = abuf->addr;
3642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3643
3644 {
3645 SI tmp_address;
3646 {
3647 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3648 {
3649 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3650 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3651 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3652 }
3653 }
3654 }
3655
3656 return vpc;
3657 #undef FLD
3658 }
3659
3660 /* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3661
3662 static SEM_PC
3663 SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3664 {
3665 #define FLD(f) abuf->fields.sfmt_lddcu.f
3666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3667 int UNUSED written = 0;
3668 IADDR UNUSED pc = abuf->addr;
3669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3670
3671 {
3672 SI tmp_address;
3673 {
3674 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3675 {
3676 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3677 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3678 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3679 }
3680 }
3681 }
3682
3683 return vpc;
3684 #undef FLD
3685 }
3686
3687 /* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3688
3689 static SEM_PC
3690 SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3691 {
3692 #define FLD(f) abuf->fields.sfmt_smulcc.f
3693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3694 int UNUSED written = 0;
3695 IADDR UNUSED pc = abuf->addr;
3696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3697
3698 {
3699 SI tmp_address;
3700 {
3701 BI tmp_do_op;
3702 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3703 if (tmp_do_op) {
3704 if (NESI (FLD (f_GRk), 0)) {
3705 {
3706 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3707 {
3708 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3709 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3710 written |= (1 << 6);
3711 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3712 }
3713 }
3714 }
3715 }
3716 }
3717 }
3718
3719 abuf->written = written;
3720 return vpc;
3721 #undef FLD
3722 }
3723
3724 /* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3725
3726 static SEM_PC
3727 SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3728 {
3729 #define FLD(f) abuf->fields.sfmt_clddfu.f
3730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3731 int UNUSED written = 0;
3732 IADDR UNUSED pc = abuf->addr;
3733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3734
3735 {
3736 SI tmp_address;
3737 {
3738 BI tmp_do_op;
3739 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3740 if (tmp_do_op) {
3741 {
3742 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3743 {
3744 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3745 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3746 written |= (1 << 6);
3747 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3748 }
3749 }
3750 }
3751 }
3752 }
3753
3754 abuf->written = written;
3755 return vpc;
3756 #undef FLD
3757 }
3758
3759 /* ldq: ldq$pack @($GRi,$GRj),$GRk */
3760
3761 static SEM_PC
3762 SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3763 {
3764 #define FLD(f) abuf->fields.sfmt_smulcc.f
3765 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3766 int UNUSED written = 0;
3767 IADDR UNUSED pc = abuf->addr;
3768 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3769
3770 {
3771 SI tmp_address;
3772 {
3773 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3774 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3775 }
3776 }
3777
3778 return vpc;
3779 #undef FLD
3780 }
3781
3782 /* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3783
3784 static SEM_PC
3785 SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3786 {
3787 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3789 int UNUSED written = 0;
3790 IADDR UNUSED pc = abuf->addr;
3791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3792
3793 {
3794 SI tmp_address;
3795 {
3796 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3797 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3798 }
3799 }
3800
3801 return vpc;
3802 #undef FLD
3803 }
3804
3805 /* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3806
3807 static SEM_PC
3808 SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3809 {
3810 #define FLD(f) abuf->fields.sfmt_stdcu.f
3811 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3812 int UNUSED written = 0;
3813 IADDR UNUSED pc = abuf->addr;
3814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3815
3816 {
3817 SI tmp_address;
3818 {
3819 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3820 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3821 }
3822 }
3823
3824 return vpc;
3825 #undef FLD
3826 }
3827
3828 /* nldq: nldq$pack @($GRi,$GRj),$GRk */
3829
3830 static SEM_PC
3831 SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3832 {
3833 #define FLD(f) abuf->fields.sfmt_smulcc.f
3834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3835 int UNUSED written = 0;
3836 IADDR UNUSED pc = abuf->addr;
3837 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3838
3839 {
3840 SI tmp_address;
3841 {
3842 BI tmp_do_op;
3843 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3844 if (tmp_do_op) {
3845 {
3846 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3847 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3848 }
3849 }
3850 }
3851 }
3852
3853 return vpc;
3854 #undef FLD
3855 }
3856
3857 /* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3858
3859 static SEM_PC
3860 SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3861 {
3862 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3864 int UNUSED written = 0;
3865 IADDR UNUSED pc = abuf->addr;
3866 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3867
3868 {
3869 SI tmp_address;
3870 {
3871 BI tmp_do_op;
3872 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3873 if (tmp_do_op) {
3874 {
3875 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3876 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3877 }
3878 }
3879 }
3880 }
3881
3882 return vpc;
3883 #undef FLD
3884 }
3885
3886 /* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3887
3888 static SEM_PC
3889 SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3890 {
3891 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3892 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3893 int UNUSED written = 0;
3894 IADDR UNUSED pc = abuf->addr;
3895 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3896
3897 {
3898 USI tmp_address;
3899 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3900 {
3901 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3902 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3903 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3904 }
3905 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3906 {
3907 {
3908 SI opval = tmp_address;
3909 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3910 written |= (1 << 5);
3911 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3912 }
3913 frvbf_force_update (current_cpu);
3914 }
3915 }
3916 }
3917
3918 abuf->written = written;
3919 return vpc;
3920 #undef FLD
3921 }
3922
3923 /* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3924
3925 static SEM_PC
3926 SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3927 {
3928 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3930 int UNUSED written = 0;
3931 IADDR UNUSED pc = abuf->addr;
3932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3933
3934 {
3935 USI tmp_address;
3936 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3937 {
3938 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3940 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3941 }
3942 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3943 {
3944 {
3945 SI opval = tmp_address;
3946 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3947 written |= (1 << 5);
3948 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3949 }
3950 frvbf_force_update (current_cpu);
3951 }
3952 }
3953 }
3954
3955 abuf->written = written;
3956 return vpc;
3957 #undef FLD
3958 }
3959
3960 /* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3961
3962 static SEM_PC
3963 SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3964 {
3965 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3966 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3967 int UNUSED written = 0;
3968 IADDR UNUSED pc = abuf->addr;
3969 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3970
3971 {
3972 USI tmp_address;
3973 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3974 {
3975 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3976 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3977 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3978 }
3979 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3980 {
3981 {
3982 SI opval = tmp_address;
3983 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3984 written |= (1 << 5);
3985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3986 }
3987 frvbf_force_update (current_cpu);
3988 }
3989 }
3990 }
3991
3992 abuf->written = written;
3993 return vpc;
3994 #undef FLD
3995 }
3996
3997 /* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
3998
3999 static SEM_PC
4000 SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4001 {
4002 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4004 int UNUSED written = 0;
4005 IADDR UNUSED pc = abuf->addr;
4006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4007
4008 {
4009 USI tmp_address;
4010 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4011 {
4012 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4013 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4014 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4015 }
4016 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4017 {
4018 {
4019 SI opval = tmp_address;
4020 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4021 written |= (1 << 5);
4022 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4023 }
4024 frvbf_force_update (current_cpu);
4025 }
4026 }
4027 }
4028
4029 abuf->written = written;
4030 return vpc;
4031 #undef FLD
4032 }
4033
4034 /* ldu: ldu$pack @($GRi,$GRj),$GRk */
4035
4036 static SEM_PC
4037 SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4038 {
4039 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4041 int UNUSED written = 0;
4042 IADDR UNUSED pc = abuf->addr;
4043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4044
4045 {
4046 USI tmp_address;
4047 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4048 {
4049 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4050 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4051 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4052 }
4053 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4054 {
4055 {
4056 SI opval = tmp_address;
4057 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4058 written |= (1 << 5);
4059 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4060 }
4061 frvbf_force_update (current_cpu);
4062 }
4063 }
4064 }
4065
4066 abuf->written = written;
4067 return vpc;
4068 #undef FLD
4069 }
4070
4071 /* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4072
4073 static SEM_PC
4074 SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4075 {
4076 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4077 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4078 int UNUSED written = 0;
4079 IADDR UNUSED pc = abuf->addr;
4080 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4081
4082 {
4083 BI tmp_do_op;
4084 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4085 if (tmp_do_op) {
4086 {
4087 USI tmp_address;
4088 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4089 {
4090 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4091 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4092 written |= (1 << 7);
4093 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4094 }
4095 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4096 {
4097 {
4098 SI opval = tmp_address;
4099 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4100 written |= (1 << 6);
4101 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4102 }
4103 frvbf_force_update (current_cpu);
4104 }
4105 }
4106 }
4107 }
4108 }
4109
4110 abuf->written = written;
4111 return vpc;
4112 #undef FLD
4113 }
4114
4115 /* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4116
4117 static SEM_PC
4118 SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4119 {
4120 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4122 int UNUSED written = 0;
4123 IADDR UNUSED pc = abuf->addr;
4124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4125
4126 {
4127 BI tmp_do_op;
4128 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4129 if (tmp_do_op) {
4130 {
4131 USI tmp_address;
4132 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4133 {
4134 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4135 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4136 written |= (1 << 7);
4137 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4138 }
4139 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4140 {
4141 {
4142 SI opval = tmp_address;
4143 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4144 written |= (1 << 6);
4145 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4146 }
4147 frvbf_force_update (current_cpu);
4148 }
4149 }
4150 }
4151 }
4152 }
4153
4154 abuf->written = written;
4155 return vpc;
4156 #undef FLD
4157 }
4158
4159 /* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4160
4161 static SEM_PC
4162 SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4163 {
4164 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4166 int UNUSED written = 0;
4167 IADDR UNUSED pc = abuf->addr;
4168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4169
4170 {
4171 BI tmp_do_op;
4172 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4173 if (tmp_do_op) {
4174 {
4175 USI tmp_address;
4176 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4177 {
4178 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4179 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4180 written |= (1 << 7);
4181 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4182 }
4183 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4184 {
4185 {
4186 SI opval = tmp_address;
4187 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4188 written |= (1 << 6);
4189 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4190 }
4191 frvbf_force_update (current_cpu);
4192 }
4193 }
4194 }
4195 }
4196 }
4197
4198 abuf->written = written;
4199 return vpc;
4200 #undef FLD
4201 }
4202
4203 /* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4204
4205 static SEM_PC
4206 SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4207 {
4208 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4210 int UNUSED written = 0;
4211 IADDR UNUSED pc = abuf->addr;
4212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4213
4214 {
4215 BI tmp_do_op;
4216 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4217 if (tmp_do_op) {
4218 {
4219 USI tmp_address;
4220 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4221 {
4222 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4223 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4224 written |= (1 << 7);
4225 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4226 }
4227 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4228 {
4229 {
4230 SI opval = tmp_address;
4231 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4232 written |= (1 << 6);
4233 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4234 }
4235 frvbf_force_update (current_cpu);
4236 }
4237 }
4238 }
4239 }
4240 }
4241
4242 abuf->written = written;
4243 return vpc;
4244 #undef FLD
4245 }
4246
4247 /* nldu: nldu$pack @($GRi,$GRj),$GRk */
4248
4249 static SEM_PC
4250 SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4251 {
4252 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4253 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4254 int UNUSED written = 0;
4255 IADDR UNUSED pc = abuf->addr;
4256 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4257
4258 {
4259 BI tmp_do_op;
4260 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4261 if (tmp_do_op) {
4262 {
4263 USI tmp_address;
4264 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4265 {
4266 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4267 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4268 written |= (1 << 7);
4269 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4270 }
4271 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4272 {
4273 {
4274 SI opval = tmp_address;
4275 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4276 written |= (1 << 6);
4277 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4278 }
4279 frvbf_force_update (current_cpu);
4280 }
4281 }
4282 }
4283 }
4284 }
4285
4286 abuf->written = written;
4287 return vpc;
4288 #undef FLD
4289 }
4290
4291 /* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4292
4293 static SEM_PC
4294 SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4295 {
4296 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4298 int UNUSED written = 0;
4299 IADDR UNUSED pc = abuf->addr;
4300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4301
4302 {
4303 USI tmp_address;
4304 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4305 {
4306 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4307 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4308 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4309 }
4310 {
4311 SI opval = tmp_address;
4312 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4313 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4314 }
4315 frvbf_force_update (current_cpu);
4316 }
4317
4318 return vpc;
4319 #undef FLD
4320 }
4321
4322 /* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4323
4324 static SEM_PC
4325 SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4326 {
4327 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4329 int UNUSED written = 0;
4330 IADDR UNUSED pc = abuf->addr;
4331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4332
4333 {
4334 USI tmp_address;
4335 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4336 {
4337 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4338 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4339 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4340 }
4341 {
4342 SI opval = tmp_address;
4343 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4344 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4345 }
4346 frvbf_force_update (current_cpu);
4347 }
4348
4349 return vpc;
4350 #undef FLD
4351 }
4352
4353 /* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4354
4355 static SEM_PC
4356 SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4357 {
4358 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4360 int UNUSED written = 0;
4361 IADDR UNUSED pc = abuf->addr;
4362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4363
4364 {
4365 USI tmp_address;
4366 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4367 {
4368 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4369 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4370 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4371 }
4372 {
4373 SI opval = tmp_address;
4374 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4375 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4376 }
4377 frvbf_force_update (current_cpu);
4378 }
4379
4380 return vpc;
4381 #undef FLD
4382 }
4383
4384 /* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4385
4386 static SEM_PC
4387 SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4388 {
4389 #define FLD(f) abuf->fields.sfmt_ldcu.f
4390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4391 int UNUSED written = 0;
4392 IADDR UNUSED pc = abuf->addr;
4393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4394
4395 {
4396 USI tmp_address;
4397 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4398 {
4399 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4400 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4401 TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4402 }
4403 {
4404 SI opval = tmp_address;
4405 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4406 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4407 }
4408 frvbf_force_update (current_cpu);
4409 }
4410
4411 return vpc;
4412 #undef FLD
4413 }
4414
4415 /* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4416
4417 static SEM_PC
4418 SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4419 {
4420 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4422 int UNUSED written = 0;
4423 IADDR UNUSED pc = abuf->addr;
4424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4425
4426 {
4427 BI tmp_do_op;
4428 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4429 if (tmp_do_op) {
4430 {
4431 USI tmp_address;
4432 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4433 {
4434 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4435 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4436 written |= (1 << 6);
4437 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4438 }
4439 {
4440 SI opval = tmp_address;
4441 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4442 written |= (1 << 7);
4443 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4444 }
4445 frvbf_force_update (current_cpu);
4446 }
4447 }
4448 }
4449
4450 abuf->written = written;
4451 return vpc;
4452 #undef FLD
4453 }
4454
4455 /* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4456
4457 static SEM_PC
4458 SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4459 {
4460 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4462 int UNUSED written = 0;
4463 IADDR UNUSED pc = abuf->addr;
4464 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4465
4466 {
4467 BI tmp_do_op;
4468 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4469 if (tmp_do_op) {
4470 {
4471 USI tmp_address;
4472 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4473 {
4474 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4475 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4476 written |= (1 << 6);
4477 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4478 }
4479 {
4480 SI opval = tmp_address;
4481 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4482 written |= (1 << 7);
4483 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4484 }
4485 frvbf_force_update (current_cpu);
4486 }
4487 }
4488 }
4489
4490 abuf->written = written;
4491 return vpc;
4492 #undef FLD
4493 }
4494
4495 /* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4496
4497 static SEM_PC
4498 SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4499 {
4500 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4501 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4502 int UNUSED written = 0;
4503 IADDR UNUSED pc = abuf->addr;
4504 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4505
4506 {
4507 BI tmp_do_op;
4508 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4509 if (tmp_do_op) {
4510 {
4511 USI tmp_address;
4512 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4513 {
4514 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4515 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4516 written |= (1 << 6);
4517 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4518 }
4519 {
4520 SI opval = tmp_address;
4521 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4522 written |= (1 << 7);
4523 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4524 }
4525 frvbf_force_update (current_cpu);
4526 }
4527 }
4528 }
4529
4530 abuf->written = written;
4531 return vpc;
4532 #undef FLD
4533 }
4534
4535 /* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4536
4537 static SEM_PC
4538 SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4539 {
4540 #define FLD(f) abuf->fields.sfmt_clddu.f
4541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4542 int UNUSED written = 0;
4543 IADDR UNUSED pc = abuf->addr;
4544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4545
4546 {
4547 SI tmp_address;
4548 if (NESI (FLD (f_GRk), 0)) {
4549 {
4550 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4551 {
4552 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4553 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4554 written |= (1 << 5);
4555 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4556 }
4557 }
4558 }
4559 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4560 {
4561 {
4562 SI opval = tmp_address;
4563 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4564 written |= (1 << 6);
4565 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4566 }
4567 frvbf_force_update (current_cpu);
4568 }
4569 }
4570 }
4571
4572 abuf->written = written;
4573 return vpc;
4574 #undef FLD
4575 }
4576
4577 /* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4578
4579 static SEM_PC
4580 SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4581 {
4582 #define FLD(f) abuf->fields.sfmt_clddu.f
4583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4584 int UNUSED written = 0;
4585 IADDR UNUSED pc = abuf->addr;
4586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4587
4588 {
4589 BI tmp_do_op;
4590 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4591 if (tmp_do_op) {
4592 {
4593 SI tmp_address;
4594 if (NESI (FLD (f_GRk), 0)) {
4595 {
4596 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4597 {
4598 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4599 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4600 written |= (1 << 6);
4601 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4602 }
4603 }
4604 }
4605 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4606 {
4607 {
4608 SI opval = tmp_address;
4609 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4610 written |= (1 << 7);
4611 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4612 }
4613 frvbf_force_update (current_cpu);
4614 }
4615 }
4616 }
4617 }
4618 }
4619
4620 abuf->written = written;
4621 return vpc;
4622 #undef FLD
4623 }
4624
4625 /* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4626
4627 static SEM_PC
4628 SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4629 {
4630 #define FLD(f) abuf->fields.sfmt_clddfu.f
4631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4632 int UNUSED written = 0;
4633 IADDR UNUSED pc = abuf->addr;
4634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4635
4636 {
4637 SI tmp_address;
4638 {
4639 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4640 {
4641 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4642 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4643 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4644 }
4645 }
4646 {
4647 SI opval = tmp_address;
4648 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4649 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4650 }
4651 frvbf_force_update (current_cpu);
4652 }
4653
4654 return vpc;
4655 #undef FLD
4656 }
4657
4658 /* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4659
4660 static SEM_PC
4661 SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4662 {
4663 #define FLD(f) abuf->fields.sfmt_lddcu.f
4664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4665 int UNUSED written = 0;
4666 IADDR UNUSED pc = abuf->addr;
4667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4668
4669 {
4670 SI tmp_address;
4671 {
4672 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4673 {
4674 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4675 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4676 TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4677 }
4678 }
4679 {
4680 SI opval = tmp_address;
4681 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4682 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4683 }
4684 frvbf_force_update (current_cpu);
4685 }
4686
4687 return vpc;
4688 #undef FLD
4689 }
4690
4691 /* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4692
4693 static SEM_PC
4694 SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4695 {
4696 #define FLD(f) abuf->fields.sfmt_clddfu.f
4697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4698 int UNUSED written = 0;
4699 IADDR UNUSED pc = abuf->addr;
4700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4701
4702 {
4703 BI tmp_do_op;
4704 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4705 if (tmp_do_op) {
4706 {
4707 SI tmp_address;
4708 {
4709 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4710 {
4711 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4712 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4713 written |= (1 << 6);
4714 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4715 }
4716 }
4717 {
4718 SI opval = tmp_address;
4719 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4720 written |= (1 << 7);
4721 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4722 }
4723 frvbf_force_update (current_cpu);
4724 }
4725 }
4726 }
4727
4728 abuf->written = written;
4729 return vpc;
4730 #undef FLD
4731 }
4732
4733 /* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4734
4735 static SEM_PC
4736 SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4737 {
4738 #define FLD(f) abuf->fields.sfmt_cstdu.f
4739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4740 int UNUSED written = 0;
4741 IADDR UNUSED pc = abuf->addr;
4742 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4743
4744 {
4745 SI tmp_address;
4746 {
4747 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4748 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4749 }
4750 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4751 {
4752 {
4753 SI opval = tmp_address;
4754 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4755 written |= (1 << 5);
4756 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4757 }
4758 frvbf_force_update (current_cpu);
4759 }
4760 }
4761 }
4762
4763 abuf->written = written;
4764 return vpc;
4765 #undef FLD
4766 }
4767
4768 /* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4769
4770 static SEM_PC
4771 SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4772 {
4773 #define FLD(f) abuf->fields.sfmt_cstdu.f
4774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4775 int UNUSED written = 0;
4776 IADDR UNUSED pc = abuf->addr;
4777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4778
4779 {
4780 BI tmp_do_op;
4781 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4782 if (tmp_do_op) {
4783 {
4784 SI tmp_address;
4785 {
4786 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4787 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4788 }
4789 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4790 {
4791 {
4792 SI opval = tmp_address;
4793 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4794 written |= (1 << 6);
4795 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4796 }
4797 frvbf_force_update (current_cpu);
4798 }
4799 }
4800 }
4801 }
4802 }
4803
4804 abuf->written = written;
4805 return vpc;
4806 #undef FLD
4807 }
4808
4809 /* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4810
4811 static SEM_PC
4812 SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4813 {
4814 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4815 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4816 int UNUSED written = 0;
4817 IADDR UNUSED pc = abuf->addr;
4818 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4819
4820 {
4821 SI tmp_address;
4822 {
4823 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4824 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4825 }
4826 {
4827 SI opval = tmp_address;
4828 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4829 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4830 }
4831 frvbf_force_update (current_cpu);
4832 }
4833
4834 return vpc;
4835 #undef FLD
4836 }
4837
4838 /* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4839
4840 static SEM_PC
4841 SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4842 {
4843 #define FLD(f) abuf->fields.sfmt_stdcu.f
4844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4845 int UNUSED written = 0;
4846 IADDR UNUSED pc = abuf->addr;
4847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4848
4849 {
4850 SI tmp_address;
4851 {
4852 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4853 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4854 }
4855 {
4856 SI opval = tmp_address;
4857 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4858 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4859 }
4860 frvbf_force_update (current_cpu);
4861 }
4862
4863 return vpc;
4864 #undef FLD
4865 }
4866
4867 /* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4868
4869 static SEM_PC
4870 SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4871 {
4872 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4873 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4874 int UNUSED written = 0;
4875 IADDR UNUSED pc = abuf->addr;
4876 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4877
4878 {
4879 BI tmp_do_op;
4880 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4881 if (tmp_do_op) {
4882 {
4883 SI tmp_address;
4884 {
4885 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4886 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4887 }
4888 {
4889 SI opval = tmp_address;
4890 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4891 written |= (1 << 6);
4892 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4893 }
4894 frvbf_force_update (current_cpu);
4895 }
4896 }
4897 }
4898
4899 abuf->written = written;
4900 return vpc;
4901 #undef FLD
4902 }
4903
4904 /* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4905
4906 static SEM_PC
4907 SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4908 {
4909 #define FLD(f) abuf->fields.sfmt_swapi.f
4910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4911 int UNUSED written = 0;
4912 IADDR UNUSED pc = abuf->addr;
4913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4914
4915 {
4916 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4917 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4918 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4919 }
4920
4921 return vpc;
4922 #undef FLD
4923 }
4924
4925 /* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4926
4927 static SEM_PC
4928 SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4929 {
4930 #define FLD(f) abuf->fields.sfmt_swapi.f
4931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4932 int UNUSED written = 0;
4933 IADDR UNUSED pc = abuf->addr;
4934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4935
4936 {
4937 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4938 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4939 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4940 }
4941
4942 return vpc;
4943 #undef FLD
4944 }
4945
4946 /* ldi: ldi$pack @($GRi,$d12),$GRk */
4947
4948 static SEM_PC
4949 SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4950 {
4951 #define FLD(f) abuf->fields.sfmt_swapi.f
4952 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4953 int UNUSED written = 0;
4954 IADDR UNUSED pc = abuf->addr;
4955 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4956
4957 {
4958 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4959 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4960 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4961 }
4962
4963 return vpc;
4964 #undef FLD
4965 }
4966
4967 /* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4968
4969 static SEM_PC
4970 SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4971 {
4972 #define FLD(f) abuf->fields.sfmt_swapi.f
4973 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4974 int UNUSED written = 0;
4975 IADDR UNUSED pc = abuf->addr;
4976 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4977
4978 {
4979 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4981 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4982 }
4983
4984 return vpc;
4985 #undef FLD
4986 }
4987
4988 /* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4989
4990 static SEM_PC
4991 SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4992 {
4993 #define FLD(f) abuf->fields.sfmt_swapi.f
4994 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4995 int UNUSED written = 0;
4996 IADDR UNUSED pc = abuf->addr;
4997 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4998
4999 {
5000 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5001 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5002 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5003 }
5004
5005 return vpc;
5006 #undef FLD
5007 }
5008
5009 /* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5010
5011 static SEM_PC
5012 SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5013 {
5014 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5016 int UNUSED written = 0;
5017 IADDR UNUSED pc = abuf->addr;
5018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5019
5020 {
5021 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5022 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5023 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5024 }
5025
5026 return vpc;
5027 #undef FLD
5028 }
5029
5030 /* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5031
5032 static SEM_PC
5033 SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5034 {
5035 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5037 int UNUSED written = 0;
5038 IADDR UNUSED pc = abuf->addr;
5039 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5040
5041 {
5042 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5043 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5044 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5045 }
5046
5047 return vpc;
5048 #undef FLD
5049 }
5050
5051 /* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5052
5053 static SEM_PC
5054 SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5055 {
5056 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5058 int UNUSED written = 0;
5059 IADDR UNUSED pc = abuf->addr;
5060 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5061
5062 {
5063 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5064 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5065 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5066 }
5067
5068 return vpc;
5069 #undef FLD
5070 }
5071
5072 /* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5073
5074 static SEM_PC
5075 SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5076 {
5077 #define FLD(f) abuf->fields.sfmt_swapi.f
5078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5079 int UNUSED written = 0;
5080 IADDR UNUSED pc = abuf->addr;
5081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5082
5083 {
5084 BI tmp_do_op;
5085 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5086 if (tmp_do_op) {
5087 {
5088 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5089 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5090 written |= (1 << 5);
5091 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5092 }
5093 }
5094 }
5095
5096 abuf->written = written;
5097 return vpc;
5098 #undef FLD
5099 }
5100
5101 /* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5102
5103 static SEM_PC
5104 SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5105 {
5106 #define FLD(f) abuf->fields.sfmt_swapi.f
5107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5108 int UNUSED written = 0;
5109 IADDR UNUSED pc = abuf->addr;
5110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5111
5112 {
5113 BI tmp_do_op;
5114 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5115 if (tmp_do_op) {
5116 {
5117 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5118 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5119 written |= (1 << 5);
5120 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5121 }
5122 }
5123 }
5124
5125 abuf->written = written;
5126 return vpc;
5127 #undef FLD
5128 }
5129
5130 /* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5131
5132 static SEM_PC
5133 SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5134 {
5135 #define FLD(f) abuf->fields.sfmt_swapi.f
5136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5137 int UNUSED written = 0;
5138 IADDR UNUSED pc = abuf->addr;
5139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5140
5141 {
5142 BI tmp_do_op;
5143 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5144 if (tmp_do_op) {
5145 {
5146 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5148 written |= (1 << 5);
5149 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5150 }
5151 }
5152 }
5153
5154 abuf->written = written;
5155 return vpc;
5156 #undef FLD
5157 }
5158
5159 /* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5160
5161 static SEM_PC
5162 SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5163 {
5164 #define FLD(f) abuf->fields.sfmt_swapi.f
5165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5166 int UNUSED written = 0;
5167 IADDR UNUSED pc = abuf->addr;
5168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5169
5170 {
5171 BI tmp_do_op;
5172 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5173 if (tmp_do_op) {
5174 {
5175 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5176 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5177 written |= (1 << 5);
5178 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5179 }
5180 }
5181 }
5182
5183 abuf->written = written;
5184 return vpc;
5185 #undef FLD
5186 }
5187
5188 /* nldi: nldi$pack @($GRi,$d12),$GRk */
5189
5190 static SEM_PC
5191 SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5192 {
5193 #define FLD(f) abuf->fields.sfmt_swapi.f
5194 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5195 int UNUSED written = 0;
5196 IADDR UNUSED pc = abuf->addr;
5197 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5198
5199 {
5200 BI tmp_do_op;
5201 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5202 if (tmp_do_op) {
5203 {
5204 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5205 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5206 written |= (1 << 5);
5207 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5208 }
5209 }
5210 }
5211
5212 abuf->written = written;
5213 return vpc;
5214 #undef FLD
5215 }
5216
5217 /* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5218
5219 static SEM_PC
5220 SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5221 {
5222 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5224 int UNUSED written = 0;
5225 IADDR UNUSED pc = abuf->addr;
5226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5227
5228 {
5229 BI tmp_do_op;
5230 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5231 if (tmp_do_op) {
5232 {
5233 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5234 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5235 written |= (1 << 5);
5236 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5237 }
5238 }
5239 }
5240
5241 abuf->written = written;
5242 return vpc;
5243 #undef FLD
5244 }
5245
5246 /* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5247
5248 static SEM_PC
5249 SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5250 {
5251 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5253 int UNUSED written = 0;
5254 IADDR UNUSED pc = abuf->addr;
5255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5256
5257 {
5258 BI tmp_do_op;
5259 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5260 if (tmp_do_op) {
5261 {
5262 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5263 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5264 written |= (1 << 5);
5265 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5266 }
5267 }
5268 }
5269
5270 abuf->written = written;
5271 return vpc;
5272 #undef FLD
5273 }
5274
5275 /* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5276
5277 static SEM_PC
5278 SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5279 {
5280 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5282 int UNUSED written = 0;
5283 IADDR UNUSED pc = abuf->addr;
5284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5285
5286 {
5287 BI tmp_do_op;
5288 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5289 if (tmp_do_op) {
5290 {
5291 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5292 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5293 written |= (1 << 5);
5294 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5295 }
5296 }
5297 }
5298
5299 abuf->written = written;
5300 return vpc;
5301 #undef FLD
5302 }
5303
5304 /* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5305
5306 static SEM_PC
5307 SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5308 {
5309 #define FLD(f) abuf->fields.sfmt_smuli.f
5310 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5311 int UNUSED written = 0;
5312 IADDR UNUSED pc = abuf->addr;
5313 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5314
5315 {
5316 SI tmp_address;
5317 if (NESI (FLD (f_GRk), 0)) {
5318 {
5319 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5320 {
5321 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5322 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5323 written |= (1 << 4);
5324 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5325 }
5326 }
5327 }
5328 }
5329
5330 abuf->written = written;
5331 return vpc;
5332 #undef FLD
5333 }
5334
5335 /* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5336
5337 static SEM_PC
5338 SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5339 {
5340 #define FLD(f) abuf->fields.sfmt_lddfi.f
5341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5342 int UNUSED written = 0;
5343 IADDR UNUSED pc = abuf->addr;
5344 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5345
5346 {
5347 SI tmp_address;
5348 {
5349 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5350 {
5351 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5352 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5353 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5354 }
5355 }
5356 }
5357
5358 return vpc;
5359 #undef FLD
5360 }
5361
5362 /* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5363
5364 static SEM_PC
5365 SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5366 {
5367 #define FLD(f) abuf->fields.sfmt_smuli.f
5368 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5369 int UNUSED written = 0;
5370 IADDR UNUSED pc = abuf->addr;
5371 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5372
5373 {
5374 SI tmp_address;
5375 {
5376 BI tmp_do_op;
5377 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5378 if (tmp_do_op) {
5379 if (NESI (FLD (f_GRk), 0)) {
5380 {
5381 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5382 {
5383 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5384 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5385 written |= (1 << 5);
5386 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5387 }
5388 }
5389 }
5390 }
5391 }
5392 }
5393
5394 abuf->written = written;
5395 return vpc;
5396 #undef FLD
5397 }
5398
5399 /* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5400
5401 static SEM_PC
5402 SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5403 {
5404 #define FLD(f) abuf->fields.sfmt_lddfi.f
5405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5406 int UNUSED written = 0;
5407 IADDR UNUSED pc = abuf->addr;
5408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5409
5410 {
5411 SI tmp_address;
5412 {
5413 BI tmp_do_op;
5414 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5415 if (tmp_do_op) {
5416 {
5417 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5418 {
5419 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5420 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5421 written |= (1 << 5);
5422 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5423 }
5424 }
5425 }
5426 }
5427 }
5428
5429 abuf->written = written;
5430 return vpc;
5431 #undef FLD
5432 }
5433
5434 /* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5435
5436 static SEM_PC
5437 SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5438 {
5439 #define FLD(f) abuf->fields.sfmt_stdi.f
5440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5441 int UNUSED written = 0;
5442 IADDR UNUSED pc = abuf->addr;
5443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5444
5445 {
5446 SI tmp_address;
5447 {
5448 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5449 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5450 }
5451 }
5452
5453 return vpc;
5454 #undef FLD
5455 }
5456
5457 /* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5458
5459 static SEM_PC
5460 SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5461 {
5462 #define FLD(f) abuf->fields.sfmt_stdfi.f
5463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5464 int UNUSED written = 0;
5465 IADDR UNUSED pc = abuf->addr;
5466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5467
5468 {
5469 SI tmp_address;
5470 {
5471 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5472 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5473 }
5474 }
5475
5476 return vpc;
5477 #undef FLD
5478 }
5479
5480 /* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5481
5482 static SEM_PC
5483 SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5484 {
5485 #define FLD(f) abuf->fields.sfmt_stdfi.f
5486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5487 int UNUSED written = 0;
5488 IADDR UNUSED pc = abuf->addr;
5489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5490
5491 {
5492 SI tmp_address;
5493 {
5494 BI tmp_do_op;
5495 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5496 if (tmp_do_op) {
5497 {
5498 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5499 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5500 }
5501 }
5502 }
5503 }
5504
5505 return vpc;
5506 #undef FLD
5507 }
5508
5509 /* stb: stb$pack $GRk,@($GRi,$GRj) */
5510
5511 static SEM_PC
5512 SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5513 {
5514 #define FLD(f) abuf->fields.sfmt_cswap.f
5515 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5516 int UNUSED written = 0;
5517 IADDR UNUSED pc = abuf->addr;
5518 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5519
5520 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)));
5521
5522 return vpc;
5523 #undef FLD
5524 }
5525
5526 /* sth: sth$pack $GRk,@($GRi,$GRj) */
5527
5528 static SEM_PC
5529 SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5530 {
5531 #define FLD(f) abuf->fields.sfmt_cswap.f
5532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5533 int UNUSED written = 0;
5534 IADDR UNUSED pc = abuf->addr;
5535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5536
5537 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)));
5538
5539 return vpc;
5540 #undef FLD
5541 }
5542
5543 /* st: st$pack $GRk,@($GRi,$GRj) */
5544
5545 static SEM_PC
5546 SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5547 {
5548 #define FLD(f) abuf->fields.sfmt_cswap.f
5549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5550 int UNUSED written = 0;
5551 IADDR UNUSED pc = abuf->addr;
5552 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5553
5554 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)));
5555
5556 return vpc;
5557 #undef FLD
5558 }
5559
5560 /* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5561
5562 static SEM_PC
5563 SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5564 {
5565 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5566 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5567 int UNUSED written = 0;
5568 IADDR UNUSED pc = abuf->addr;
5569 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5570
5571 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)));
5572
5573 return vpc;
5574 #undef FLD
5575 }
5576
5577 /* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5578
5579 static SEM_PC
5580 SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5581 {
5582 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5584 int UNUSED written = 0;
5585 IADDR UNUSED pc = abuf->addr;
5586 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5587
5588 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)));
5589
5590 return vpc;
5591 #undef FLD
5592 }
5593
5594 /* stf: stf$pack $FRintk,@($GRi,$GRj) */
5595
5596 static SEM_PC
5597 SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5598 {
5599 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5601 int UNUSED written = 0;
5602 IADDR UNUSED pc = abuf->addr;
5603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5604
5605 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)));
5606
5607 return vpc;
5608 #undef FLD
5609 }
5610
5611 /* stc: stc$pack $CPRk,@($GRi,$GRj) */
5612
5613 static SEM_PC
5614 SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5615 {
5616 #define FLD(f) abuf->fields.sfmt_stcu.f
5617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5618 int UNUSED written = 0;
5619 IADDR UNUSED pc = abuf->addr;
5620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5621
5622 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)]));
5623
5624 return vpc;
5625 #undef FLD
5626 }
5627
5628 /* std: std$pack $GRdoublek,@($GRi,$GRj) */
5629
5630 static SEM_PC
5631 SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5632 {
5633 #define FLD(f) abuf->fields.sfmt_cstdu.f
5634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5635 int UNUSED written = 0;
5636 IADDR UNUSED pc = abuf->addr;
5637 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5638
5639 {
5640 SI tmp_address;
5641 {
5642 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5643 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5644 }
5645 }
5646
5647 return vpc;
5648 #undef FLD
5649 }
5650
5651 /* stdf: stdf$pack $FRdoublek,@($GRi,$GRj) */
5652
5653 static SEM_PC
5654 SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5655 {
5656 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5657 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5658 int UNUSED written = 0;
5659 IADDR UNUSED pc = abuf->addr;
5660 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5661
5662 {
5663 SI tmp_address;
5664 {
5665 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5666 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5667 }
5668 }
5669
5670 return vpc;
5671 #undef FLD
5672 }
5673
5674 /* stdc: stdc$pack $CPRdoublek,@($GRi,$GRj) */
5675
5676 static SEM_PC
5677 SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5678 {
5679 #define FLD(f) abuf->fields.sfmt_stdcu.f
5680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5681 int UNUSED written = 0;
5682 IADDR UNUSED pc = abuf->addr;
5683 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5684
5685 {
5686 SI tmp_address;
5687 {
5688 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5689 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5690 }
5691 }
5692
5693 return vpc;
5694 #undef FLD
5695 }
5696
5697 /* stq: stq$pack $GRk,@($GRi,$GRj) */
5698
5699 static SEM_PC
5700 SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5701 {
5702 #define FLD(f) abuf->fields.sfmt_smulcc.f
5703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5704 int UNUSED written = 0;
5705 IADDR UNUSED pc = abuf->addr;
5706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5707
5708 {
5709 SI tmp_address;
5710 {
5711 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5712 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5713 }
5714 }
5715
5716 return vpc;
5717 #undef FLD
5718 }
5719
5720 /* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5721
5722 static SEM_PC
5723 SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5724 {
5725 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5727 int UNUSED written = 0;
5728 IADDR UNUSED pc = abuf->addr;
5729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5730
5731 {
5732 SI tmp_address;
5733 {
5734 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5735 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5736 }
5737 }
5738
5739 return vpc;
5740 #undef FLD
5741 }
5742
5743 /* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5744
5745 static SEM_PC
5746 SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5747 {
5748 #define FLD(f) abuf->fields.sfmt_stdcu.f
5749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5750 int UNUSED written = 0;
5751 IADDR UNUSED pc = abuf->addr;
5752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5753
5754 {
5755 SI tmp_address;
5756 {
5757 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5758 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5759 }
5760 }
5761
5762 return vpc;
5763 #undef FLD
5764 }
5765
5766 /* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5767
5768 static SEM_PC
5769 SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5770 {
5771 #define FLD(f) abuf->fields.sfmt_cstbu.f
5772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5773 int UNUSED written = 0;
5774 IADDR UNUSED pc = abuf->addr;
5775 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5776
5777 {
5778 USI tmp_address;
5779 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5780 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5781 {
5782 SI opval = tmp_address;
5783 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5784 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5785 }
5786 }
5787
5788 return vpc;
5789 #undef FLD
5790 }
5791
5792 /* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5793
5794 static SEM_PC
5795 SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5796 {
5797 #define FLD(f) abuf->fields.sfmt_cstbu.f
5798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5799 int UNUSED written = 0;
5800 IADDR UNUSED pc = abuf->addr;
5801 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5802
5803 {
5804 USI tmp_address;
5805 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5806 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5807 {
5808 SI opval = tmp_address;
5809 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5810 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5811 }
5812 }
5813
5814 return vpc;
5815 #undef FLD
5816 }
5817
5818 /* stu: stu$pack $GRk,@($GRi,$GRj) */
5819
5820 static SEM_PC
5821 SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5822 {
5823 #define FLD(f) abuf->fields.sfmt_cstbu.f
5824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5825 int UNUSED written = 0;
5826 IADDR UNUSED pc = abuf->addr;
5827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5828
5829 {
5830 USI tmp_address;
5831 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5832 frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5833 {
5834 SI opval = tmp_address;
5835 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5836 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5837 }
5838 }
5839
5840 return vpc;
5841 #undef FLD
5842 }
5843
5844 /* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5845
5846 static SEM_PC
5847 SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5848 {
5849 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5851 int UNUSED written = 0;
5852 IADDR UNUSED pc = abuf->addr;
5853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5854
5855 {
5856 USI tmp_address;
5857 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5858 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5859 {
5860 SI opval = tmp_address;
5861 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5862 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5863 }
5864 }
5865
5866 return vpc;
5867 #undef FLD
5868 }
5869
5870 /* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5871
5872 static SEM_PC
5873 SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5874 {
5875 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5876 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5877 int UNUSED written = 0;
5878 IADDR UNUSED pc = abuf->addr;
5879 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5880
5881 {
5882 USI tmp_address;
5883 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5884 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5885 {
5886 SI opval = tmp_address;
5887 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5888 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5889 }
5890 }
5891
5892 return vpc;
5893 #undef FLD
5894 }
5895
5896 /* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5897
5898 static SEM_PC
5899 SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5900 {
5901 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5902 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5903 int UNUSED written = 0;
5904 IADDR UNUSED pc = abuf->addr;
5905 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5906
5907 {
5908 USI tmp_address;
5909 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5910 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5911 {
5912 SI opval = tmp_address;
5913 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5914 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5915 }
5916 }
5917
5918 return vpc;
5919 #undef FLD
5920 }
5921
5922 /* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
5923
5924 static SEM_PC
5925 SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5926 {
5927 #define FLD(f) abuf->fields.sfmt_stcu.f
5928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5929 int UNUSED written = 0;
5930 IADDR UNUSED pc = abuf->addr;
5931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5932
5933 {
5934 USI tmp_address;
5935 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5936 frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
5937 {
5938 SI opval = tmp_address;
5939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5940 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5941 }
5942 }
5943
5944 return vpc;
5945 #undef FLD
5946 }
5947
5948 /* stdu: stdu$pack $GRdoublek,@($GRi,$GRj) */
5949
5950 static SEM_PC
5951 SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5952 {
5953 #define FLD(f) abuf->fields.sfmt_cstdu.f
5954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5955 int UNUSED written = 0;
5956 IADDR UNUSED pc = abuf->addr;
5957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5958
5959 {
5960 SI tmp_address;
5961 {
5962 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5963 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5964 }
5965 {
5966 SI opval = tmp_address;
5967 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5968 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5969 }
5970 }
5971
5972 return vpc;
5973 #undef FLD
5974 }
5975
5976 /* stdfu: stdfu$pack $FRdoublek,@($GRi,$GRj) */
5977
5978 static SEM_PC
5979 SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5980 {
5981 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5982 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5983 int UNUSED written = 0;
5984 IADDR UNUSED pc = abuf->addr;
5985 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5986
5987 {
5988 SI tmp_address;
5989 {
5990 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5991 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5992 }
5993 {
5994 SI opval = tmp_address;
5995 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5996 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5997 }
5998 }
5999
6000 return vpc;
6001 #undef FLD
6002 }
6003
6004 /* stdcu: stdcu$pack $CPRdoublek,@($GRi,$GRj) */
6005
6006 static SEM_PC
6007 SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6008 {
6009 #define FLD(f) abuf->fields.sfmt_stdcu.f
6010 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6011 int UNUSED written = 0;
6012 IADDR UNUSED pc = abuf->addr;
6013 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6014
6015 {
6016 SI tmp_address;
6017 {
6018 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6019 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6020 }
6021 {
6022 SI opval = tmp_address;
6023 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6024 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6025 }
6026 }
6027
6028 return vpc;
6029 #undef FLD
6030 }
6031
6032 /* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6033
6034 static SEM_PC
6035 SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6036 {
6037 #define FLD(f) abuf->fields.sfmt_cstdu.f
6038 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6039 int UNUSED written = 0;
6040 IADDR UNUSED pc = abuf->addr;
6041 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6042
6043 {
6044 SI tmp_address;
6045 {
6046 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6047 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6048 }
6049 {
6050 SI opval = tmp_address;
6051 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6052 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6053 }
6054 }
6055
6056 return vpc;
6057 #undef FLD
6058 }
6059
6060 /* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6061
6062 static SEM_PC
6063 SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6064 {
6065 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6067 int UNUSED written = 0;
6068 IADDR UNUSED pc = abuf->addr;
6069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6070
6071 {
6072 SI tmp_address;
6073 {
6074 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6075 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6076 }
6077 {
6078 SI opval = tmp_address;
6079 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6080 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6081 }
6082 }
6083
6084 return vpc;
6085 #undef FLD
6086 }
6087
6088 /* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6089
6090 static SEM_PC
6091 SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6092 {
6093 #define FLD(f) abuf->fields.sfmt_stdcu.f
6094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6095 int UNUSED written = 0;
6096 IADDR UNUSED pc = abuf->addr;
6097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6098
6099 {
6100 SI tmp_address;
6101 {
6102 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6103 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6104 }
6105 {
6106 SI opval = tmp_address;
6107 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6108 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6109 }
6110 }
6111
6112 return vpc;
6113 #undef FLD
6114 }
6115
6116 /* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6117
6118 static SEM_PC
6119 SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6120 {
6121 #define FLD(f) abuf->fields.sfmt_cswap.f
6122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6123 int UNUSED written = 0;
6124 IADDR UNUSED pc = abuf->addr;
6125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6126
6127 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6128 {
6129 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6130 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6131 written |= (1 << 5);
6132 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6133 }
6134 }
6135
6136 abuf->written = written;
6137 return vpc;
6138 #undef FLD
6139 }
6140
6141 /* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6142
6143 static SEM_PC
6144 SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6145 {
6146 #define FLD(f) abuf->fields.sfmt_cswap.f
6147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6148 int UNUSED written = 0;
6149 IADDR UNUSED pc = abuf->addr;
6150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6151
6152 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6153 {
6154 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6155 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6156 written |= (1 << 5);
6157 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6158 }
6159 }
6160
6161 abuf->written = written;
6162 return vpc;
6163 #undef FLD
6164 }
6165
6166 /* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6167
6168 static SEM_PC
6169 SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6170 {
6171 #define FLD(f) abuf->fields.sfmt_cswap.f
6172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6173 int UNUSED written = 0;
6174 IADDR UNUSED pc = abuf->addr;
6175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6176
6177 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6178 {
6179 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6180 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6181 written |= (1 << 5);
6182 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6183 }
6184 }
6185
6186 abuf->written = written;
6187 return vpc;
6188 #undef FLD
6189 }
6190
6191 /* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6192
6193 static SEM_PC
6194 SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6195 {
6196 #define FLD(f) abuf->fields.sfmt_cswap.f
6197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6198 int UNUSED written = 0;
6199 IADDR UNUSED pc = abuf->addr;
6200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6201
6202 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6203 {
6204 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6205 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6206 written |= (1 << 5);
6207 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6208 }
6209 }
6210
6211 abuf->written = written;
6212 return vpc;
6213 #undef FLD
6214 }
6215
6216 /* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6217
6218 static SEM_PC
6219 SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6220 {
6221 #define FLD(f) abuf->fields.sfmt_cswap.f
6222 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6223 int UNUSED written = 0;
6224 IADDR UNUSED pc = abuf->addr;
6225 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6226
6227 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6228 {
6229 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6230 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6231 written |= (1 << 5);
6232 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6233 }
6234 }
6235
6236 abuf->written = written;
6237 return vpc;
6238 #undef FLD
6239 }
6240
6241 /* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6242
6243 static SEM_PC
6244 SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6245 {
6246 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6248 int UNUSED written = 0;
6249 IADDR UNUSED pc = abuf->addr;
6250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6251
6252 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6253 {
6254 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6255 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6256 written |= (1 << 5);
6257 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6258 }
6259 }
6260
6261 abuf->written = written;
6262 return vpc;
6263 #undef FLD
6264 }
6265
6266 /* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6267
6268 static SEM_PC
6269 SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6270 {
6271 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6273 int UNUSED written = 0;
6274 IADDR UNUSED pc = abuf->addr;
6275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6276
6277 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6278 {
6279 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6280 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6281 written |= (1 << 5);
6282 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6283 }
6284 }
6285
6286 abuf->written = written;
6287 return vpc;
6288 #undef FLD
6289 }
6290
6291 /* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6292
6293 static SEM_PC
6294 SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6295 {
6296 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6298 int UNUSED written = 0;
6299 IADDR UNUSED pc = abuf->addr;
6300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6301
6302 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6303 {
6304 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6305 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6306 written |= (1 << 5);
6307 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6308 }
6309 }
6310
6311 abuf->written = written;
6312 return vpc;
6313 #undef FLD
6314 }
6315
6316 /* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6317
6318 static SEM_PC
6319 SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6320 {
6321 #define FLD(f) abuf->fields.sfmt_clddu.f
6322 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6323 int UNUSED written = 0;
6324 IADDR UNUSED pc = abuf->addr;
6325 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6326
6327 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6328 {
6329 SI tmp_address;
6330 if (NESI (FLD (f_GRk), 0)) {
6331 {
6332 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6333 {
6334 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6335 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6336 written |= (1 << 6);
6337 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6338 }
6339 }
6340 }
6341 }
6342 }
6343
6344 abuf->written = written;
6345 return vpc;
6346 #undef FLD
6347 }
6348
6349 /* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6350
6351 static SEM_PC
6352 SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6353 {
6354 #define FLD(f) abuf->fields.sfmt_clddfu.f
6355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6356 int UNUSED written = 0;
6357 IADDR UNUSED pc = abuf->addr;
6358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6359
6360 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6361 {
6362 SI tmp_address;
6363 {
6364 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6365 {
6366 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6367 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6368 written |= (1 << 5);
6369 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6370 }
6371 }
6372 }
6373 }
6374
6375 abuf->written = written;
6376 return vpc;
6377 #undef FLD
6378 }
6379
6380 /* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6381
6382 static SEM_PC
6383 SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6384 {
6385 #define FLD(f) abuf->fields.sfmt_cswap.f
6386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6387 int UNUSED written = 0;
6388 IADDR UNUSED pc = abuf->addr;
6389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6390
6391 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6392 {
6393 SI tmp_address;
6394 {
6395 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6396 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6397 }
6398 }
6399 }
6400
6401 return vpc;
6402 #undef FLD
6403 }
6404
6405 /* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6406
6407 static SEM_PC
6408 SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6409 {
6410 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6412 int UNUSED written = 0;
6413 IADDR UNUSED pc = abuf->addr;
6414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6415
6416 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6417 {
6418 SI tmp_address;
6419 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6420 {
6421 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6422 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6423 written |= (1 << 8);
6424 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6425 }
6426 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6427 {
6428 SI opval = tmp_address;
6429 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6430 written |= (1 << 7);
6431 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6432 }
6433 }
6434 }
6435 }
6436
6437 abuf->written = written;
6438 return vpc;
6439 #undef FLD
6440 }
6441
6442 /* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6443
6444 static SEM_PC
6445 SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6446 {
6447 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6448 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6449 int UNUSED written = 0;
6450 IADDR UNUSED pc = abuf->addr;
6451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6452
6453 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6454 {
6455 SI tmp_address;
6456 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6457 {
6458 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6459 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6460 written |= (1 << 8);
6461 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6462 }
6463 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6464 {
6465 SI opval = tmp_address;
6466 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6467 written |= (1 << 7);
6468 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6469 }
6470 }
6471 }
6472 }
6473
6474 abuf->written = written;
6475 return vpc;
6476 #undef FLD
6477 }
6478
6479 /* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6480
6481 static SEM_PC
6482 SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6483 {
6484 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6486 int UNUSED written = 0;
6487 IADDR UNUSED pc = abuf->addr;
6488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6489
6490 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6491 {
6492 SI tmp_address;
6493 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6494 {
6495 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6496 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6497 written |= (1 << 8);
6498 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6499 }
6500 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6501 {
6502 SI opval = tmp_address;
6503 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6504 written |= (1 << 7);
6505 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6506 }
6507 }
6508 }
6509 }
6510
6511 abuf->written = written;
6512 return vpc;
6513 #undef FLD
6514 }
6515
6516 /* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6517
6518 static SEM_PC
6519 SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6520 {
6521 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6523 int UNUSED written = 0;
6524 IADDR UNUSED pc = abuf->addr;
6525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6526
6527 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6528 {
6529 SI tmp_address;
6530 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6531 {
6532 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6533 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6534 written |= (1 << 8);
6535 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6536 }
6537 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6538 {
6539 SI opval = tmp_address;
6540 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6541 written |= (1 << 7);
6542 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6543 }
6544 }
6545 }
6546 }
6547
6548 abuf->written = written;
6549 return vpc;
6550 #undef FLD
6551 }
6552
6553 /* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6554
6555 static SEM_PC
6556 SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6557 {
6558 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6560 int UNUSED written = 0;
6561 IADDR UNUSED pc = abuf->addr;
6562 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6563
6564 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6565 {
6566 SI tmp_address;
6567 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6568 {
6569 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6570 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6571 written |= (1 << 8);
6572 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6573 }
6574 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6575 {
6576 SI opval = tmp_address;
6577 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6578 written |= (1 << 7);
6579 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6580 }
6581 }
6582 }
6583 }
6584
6585 abuf->written = written;
6586 return vpc;
6587 #undef FLD
6588 }
6589
6590 /* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6591
6592 static SEM_PC
6593 SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6594 {
6595 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6596 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6597 int UNUSED written = 0;
6598 IADDR UNUSED pc = abuf->addr;
6599 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6600
6601 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6602 {
6603 SI tmp_address;
6604 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6605 {
6606 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6607 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6608 written |= (1 << 5);
6609 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6610 }
6611 {
6612 SI opval = tmp_address;
6613 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6614 written |= (1 << 6);
6615 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6616 }
6617 }
6618 }
6619
6620 abuf->written = written;
6621 return vpc;
6622 #undef FLD
6623 }
6624
6625 /* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6626
6627 static SEM_PC
6628 SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6629 {
6630 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6632 int UNUSED written = 0;
6633 IADDR UNUSED pc = abuf->addr;
6634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6635
6636 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6637 {
6638 SI tmp_address;
6639 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6640 {
6641 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6642 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6643 written |= (1 << 5);
6644 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6645 }
6646 {
6647 SI opval = tmp_address;
6648 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6649 written |= (1 << 6);
6650 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6651 }
6652 }
6653 }
6654
6655 abuf->written = written;
6656 return vpc;
6657 #undef FLD
6658 }
6659
6660 /* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6661
6662 static SEM_PC
6663 SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6664 {
6665 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6667 int UNUSED written = 0;
6668 IADDR UNUSED pc = abuf->addr;
6669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6670
6671 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6672 {
6673 SI tmp_address;
6674 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6675 {
6676 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6677 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6678 written |= (1 << 5);
6679 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6680 }
6681 {
6682 SI opval = tmp_address;
6683 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6684 written |= (1 << 6);
6685 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6686 }
6687 }
6688 }
6689
6690 abuf->written = written;
6691 return vpc;
6692 #undef FLD
6693 }
6694
6695 /* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6696
6697 static SEM_PC
6698 SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6699 {
6700 #define FLD(f) abuf->fields.sfmt_clddu.f
6701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6702 int UNUSED written = 0;
6703 IADDR UNUSED pc = abuf->addr;
6704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6705
6706 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6707 {
6708 SI tmp_address;
6709 if (NESI (FLD (f_GRk), 0)) {
6710 {
6711 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6712 {
6713 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6714 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6715 written |= (1 << 7);
6716 TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6717 }
6718 }
6719 }
6720 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6721 {
6722 SI opval = tmp_address;
6723 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6724 written |= (1 << 8);
6725 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6726 }
6727 }
6728 }
6729 }
6730
6731 abuf->written = written;
6732 return vpc;
6733 #undef FLD
6734 }
6735
6736 /* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6737
6738 static SEM_PC
6739 SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6740 {
6741 #define FLD(f) abuf->fields.sfmt_clddfu.f
6742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6743 int UNUSED written = 0;
6744 IADDR UNUSED pc = abuf->addr;
6745 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6746
6747 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6748 {
6749 SI tmp_address;
6750 {
6751 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6752 {
6753 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6754 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6755 written |= (1 << 5);
6756 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6757 }
6758 }
6759 {
6760 SI opval = tmp_address;
6761 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6762 written |= (1 << 6);
6763 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6764 }
6765 }
6766 }
6767
6768 abuf->written = written;
6769 return vpc;
6770 #undef FLD
6771 }
6772
6773 /* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6774
6775 static SEM_PC
6776 SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6777 {
6778 #define FLD(f) abuf->fields.sfmt_cstdu.f
6779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6780 int UNUSED written = 0;
6781 IADDR UNUSED pc = abuf->addr;
6782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6783
6784 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6785 {
6786 SI tmp_address;
6787 {
6788 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6789 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6790 }
6791 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6792 {
6793 SI opval = tmp_address;
6794 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6795 written |= (1 << 7);
6796 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6797 }
6798 }
6799 }
6800 }
6801
6802 abuf->written = written;
6803 return vpc;
6804 #undef FLD
6805 }
6806
6807 /* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6808
6809 static SEM_PC
6810 SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6811 {
6812 #define FLD(f) abuf->fields.sfmt_cswap.f
6813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6814 int UNUSED written = 0;
6815 IADDR UNUSED pc = abuf->addr;
6816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6817
6818 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6819 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)));
6820 }
6821
6822 return vpc;
6823 #undef FLD
6824 }
6825
6826 /* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6827
6828 static SEM_PC
6829 SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6830 {
6831 #define FLD(f) abuf->fields.sfmt_cswap.f
6832 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6833 int UNUSED written = 0;
6834 IADDR UNUSED pc = abuf->addr;
6835 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6836
6837 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6838 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)));
6839 }
6840
6841 return vpc;
6842 #undef FLD
6843 }
6844
6845 /* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6846
6847 static SEM_PC
6848 SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6849 {
6850 #define FLD(f) abuf->fields.sfmt_cswap.f
6851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6852 int UNUSED written = 0;
6853 IADDR UNUSED pc = abuf->addr;
6854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6855
6856 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6857 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)));
6858 }
6859
6860 return vpc;
6861 #undef FLD
6862 }
6863
6864 /* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6865
6866 static SEM_PC
6867 SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6868 {
6869 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6871 int UNUSED written = 0;
6872 IADDR UNUSED pc = abuf->addr;
6873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6874
6875 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6876 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)));
6877 }
6878
6879 return vpc;
6880 #undef FLD
6881 }
6882
6883 /* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6884
6885 static SEM_PC
6886 SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6887 {
6888 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6890 int UNUSED written = 0;
6891 IADDR UNUSED pc = abuf->addr;
6892 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6893
6894 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6895 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)));
6896 }
6897
6898 return vpc;
6899 #undef FLD
6900 }
6901
6902 /* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6903
6904 static SEM_PC
6905 SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6906 {
6907 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6908 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6909 int UNUSED written = 0;
6910 IADDR UNUSED pc = abuf->addr;
6911 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6912
6913 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6914 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)));
6915 }
6916
6917 return vpc;
6918 #undef FLD
6919 }
6920
6921 /* cstd: cstd$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
6922
6923 static SEM_PC
6924 SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6925 {
6926 #define FLD(f) abuf->fields.sfmt_cstdu.f
6927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6928 int UNUSED written = 0;
6929 IADDR UNUSED pc = abuf->addr;
6930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6931
6932 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6933 {
6934 SI tmp_address;
6935 {
6936 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6937 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6938 }
6939 }
6940 }
6941
6942 return vpc;
6943 #undef FLD
6944 }
6945
6946 /* cstdf: cstdf$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
6947
6948 static SEM_PC
6949 SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6950 {
6951 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6952 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6953 int UNUSED written = 0;
6954 IADDR UNUSED pc = abuf->addr;
6955 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6956
6957 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6958 {
6959 SI tmp_address;
6960 {
6961 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6962 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6963 }
6964 }
6965 }
6966
6967 return vpc;
6968 #undef FLD
6969 }
6970
6971 /* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6972
6973 static SEM_PC
6974 SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6975 {
6976 #define FLD(f) abuf->fields.sfmt_cswap.f
6977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6978 int UNUSED written = 0;
6979 IADDR UNUSED pc = abuf->addr;
6980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6981
6982 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6983 {
6984 SI tmp_address;
6985 {
6986 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6987 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6988 }
6989 }
6990 }
6991
6992 return vpc;
6993 #undef FLD
6994 }
6995
6996 /* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6997
6998 static SEM_PC
6999 SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7000 {
7001 #define FLD(f) abuf->fields.sfmt_cstbu.f
7002 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7003 int UNUSED written = 0;
7004 IADDR UNUSED pc = abuf->addr;
7005 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7006
7007 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7008 {
7009 SI tmp_address;
7010 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7011 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7012 {
7013 SI opval = tmp_address;
7014 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7015 written |= (1 << 6);
7016 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7017 }
7018 }
7019 }
7020
7021 abuf->written = written;
7022 return vpc;
7023 #undef FLD
7024 }
7025
7026 /* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7027
7028 static SEM_PC
7029 SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7030 {
7031 #define FLD(f) abuf->fields.sfmt_cstbu.f
7032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7033 int UNUSED written = 0;
7034 IADDR UNUSED pc = abuf->addr;
7035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7036
7037 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7038 {
7039 SI tmp_address;
7040 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7041 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7042 {
7043 SI opval = tmp_address;
7044 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7045 written |= (1 << 6);
7046 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7047 }
7048 }
7049 }
7050
7051 abuf->written = written;
7052 return vpc;
7053 #undef FLD
7054 }
7055
7056 /* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7057
7058 static SEM_PC
7059 SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7060 {
7061 #define FLD(f) abuf->fields.sfmt_cstbu.f
7062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7063 int UNUSED written = 0;
7064 IADDR UNUSED pc = abuf->addr;
7065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7066
7067 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7068 {
7069 SI tmp_address;
7070 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7071 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7072 {
7073 SI opval = tmp_address;
7074 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7075 written |= (1 << 6);
7076 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7077 }
7078 }
7079 }
7080
7081 abuf->written = written;
7082 return vpc;
7083 #undef FLD
7084 }
7085
7086 /* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7087
7088 static SEM_PC
7089 SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7090 {
7091 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7093 int UNUSED written = 0;
7094 IADDR UNUSED pc = abuf->addr;
7095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7096
7097 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7098 {
7099 SI tmp_address;
7100 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7101 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7102 {
7103 SI opval = tmp_address;
7104 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7105 written |= (1 << 6);
7106 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7107 }
7108 }
7109 }
7110
7111 abuf->written = written;
7112 return vpc;
7113 #undef FLD
7114 }
7115
7116 /* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7117
7118 static SEM_PC
7119 SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7120 {
7121 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7123 int UNUSED written = 0;
7124 IADDR UNUSED pc = abuf->addr;
7125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7126
7127 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7128 {
7129 SI tmp_address;
7130 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7131 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7132 {
7133 SI opval = tmp_address;
7134 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7135 written |= (1 << 6);
7136 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7137 }
7138 }
7139 }
7140
7141 abuf->written = written;
7142 return vpc;
7143 #undef FLD
7144 }
7145
7146 /* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7147
7148 static SEM_PC
7149 SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7150 {
7151 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7152 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7153 int UNUSED written = 0;
7154 IADDR UNUSED pc = abuf->addr;
7155 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7156
7157 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7158 {
7159 SI tmp_address;
7160 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7161 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7162 {
7163 SI opval = tmp_address;
7164 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7165 written |= (1 << 6);
7166 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7167 }
7168 }
7169 }
7170
7171 abuf->written = written;
7172 return vpc;
7173 #undef FLD
7174 }
7175
7176 /* cstdu: cstdu$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
7177
7178 static SEM_PC
7179 SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7180 {
7181 #define FLD(f) abuf->fields.sfmt_cstdu.f
7182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7183 int UNUSED written = 0;
7184 IADDR UNUSED pc = abuf->addr;
7185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7186
7187 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7188 {
7189 SI tmp_address;
7190 {
7191 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7192 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7193 }
7194 {
7195 SI opval = tmp_address;
7196 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7197 written |= (1 << 6);
7198 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7199 }
7200 }
7201 }
7202
7203 abuf->written = written;
7204 return vpc;
7205 #undef FLD
7206 }
7207
7208 /* cstdfu: cstdfu$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
7209
7210 static SEM_PC
7211 SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7212 {
7213 #define FLD(f) abuf->fields.sfmt_cstdfu.f
7214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7215 int UNUSED written = 0;
7216 IADDR UNUSED pc = abuf->addr;
7217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7218
7219 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7220 {
7221 SI tmp_address;
7222 {
7223 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7224 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7225 }
7226 {
7227 SI opval = tmp_address;
7228 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7229 written |= (1 << 6);
7230 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7231 }
7232 }
7233 }
7234
7235 abuf->written = written;
7236 return vpc;
7237 #undef FLD
7238 }
7239
7240 /* stbi: stbi$pack $GRk,@($GRi,$d12) */
7241
7242 static SEM_PC
7243 SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7244 {
7245 #define FLD(f) abuf->fields.sfmt_swapi.f
7246 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7247 int UNUSED written = 0;
7248 IADDR UNUSED pc = abuf->addr;
7249 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7250
7251 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7252
7253 return vpc;
7254 #undef FLD
7255 }
7256
7257 /* sthi: sthi$pack $GRk,@($GRi,$d12) */
7258
7259 static SEM_PC
7260 SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7261 {
7262 #define FLD(f) abuf->fields.sfmt_swapi.f
7263 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7264 int UNUSED written = 0;
7265 IADDR UNUSED pc = abuf->addr;
7266 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7267
7268 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7269
7270 return vpc;
7271 #undef FLD
7272 }
7273
7274 /* sti: sti$pack $GRk,@($GRi,$d12) */
7275
7276 static SEM_PC
7277 SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7278 {
7279 #define FLD(f) abuf->fields.sfmt_swapi.f
7280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7281 int UNUSED written = 0;
7282 IADDR UNUSED pc = abuf->addr;
7283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7284
7285 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7286
7287 return vpc;
7288 #undef FLD
7289 }
7290
7291 /* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7292
7293 static SEM_PC
7294 SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7295 {
7296 #define FLD(f) abuf->fields.sfmt_stbfi.f
7297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7298 int UNUSED written = 0;
7299 IADDR UNUSED pc = abuf->addr;
7300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7301
7302 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7303
7304 return vpc;
7305 #undef FLD
7306 }
7307
7308 /* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7309
7310 static SEM_PC
7311 SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7312 {
7313 #define FLD(f) abuf->fields.sfmt_stbfi.f
7314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7315 int UNUSED written = 0;
7316 IADDR UNUSED pc = abuf->addr;
7317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7318
7319 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7320
7321 return vpc;
7322 #undef FLD
7323 }
7324
7325 /* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7326
7327 static SEM_PC
7328 SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7329 {
7330 #define FLD(f) abuf->fields.sfmt_stbfi.f
7331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7332 int UNUSED written = 0;
7333 IADDR UNUSED pc = abuf->addr;
7334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7335
7336 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7337
7338 return vpc;
7339 #undef FLD
7340 }
7341
7342 /* stdi: stdi$pack $GRdoublek,@($GRi,$d12) */
7343
7344 static SEM_PC
7345 SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7346 {
7347 #define FLD(f) abuf->fields.sfmt_stdi.f
7348 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7349 int UNUSED written = 0;
7350 IADDR UNUSED pc = abuf->addr;
7351 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7352
7353 {
7354 SI tmp_address;
7355 {
7356 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7357 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7358 }
7359 }
7360
7361 return vpc;
7362 #undef FLD
7363 }
7364
7365 /* stdfi: stdfi$pack $FRdoublek,@($GRi,$d12) */
7366
7367 static SEM_PC
7368 SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7369 {
7370 #define FLD(f) abuf->fields.sfmt_stdfi.f
7371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7372 int UNUSED written = 0;
7373 IADDR UNUSED pc = abuf->addr;
7374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7375
7376 {
7377 SI tmp_address;
7378 {
7379 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7380 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7381 }
7382 }
7383
7384 return vpc;
7385 #undef FLD
7386 }
7387
7388 /* stqi: stqi$pack $GRk,@($GRi,$d12) */
7389
7390 static SEM_PC
7391 SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7392 {
7393 #define FLD(f) abuf->fields.sfmt_stdi.f
7394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7395 int UNUSED written = 0;
7396 IADDR UNUSED pc = abuf->addr;
7397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7398
7399 {
7400 SI tmp_address;
7401 {
7402 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7403 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7404 }
7405 }
7406
7407 return vpc;
7408 #undef FLD
7409 }
7410
7411 /* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7412
7413 static SEM_PC
7414 SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7415 {
7416 #define FLD(f) abuf->fields.sfmt_stdfi.f
7417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7418 int UNUSED written = 0;
7419 IADDR UNUSED pc = abuf->addr;
7420 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7421
7422 {
7423 SI tmp_address;
7424 {
7425 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7426 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7427 }
7428 }
7429
7430 return vpc;
7431 #undef FLD
7432 }
7433
7434 /* swap: swap$pack @($GRi,$GRj),$GRk */
7435
7436 static SEM_PC
7437 SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7438 {
7439 #define FLD(f) abuf->fields.sfmt_cswap.f
7440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7441 int UNUSED written = 0;
7442 IADDR UNUSED pc = abuf->addr;
7443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7444
7445 {
7446 SI tmp_tmp;
7447 SI tmp_address;
7448 tmp_tmp = GET_H_GR (FLD (f_GRk));
7449 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7450 frvbf_check_swap_address (current_cpu, tmp_address);
7451 {
7452 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7453 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7454 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7455 }
7456 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7457 }
7458
7459 return vpc;
7460 #undef FLD
7461 }
7462
7463 /* swapi: swapi$pack @($GRi,$d12),$GRk */
7464
7465 static SEM_PC
7466 SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7467 {
7468 #define FLD(f) abuf->fields.sfmt_swapi.f
7469 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7470 int UNUSED written = 0;
7471 IADDR UNUSED pc = abuf->addr;
7472 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7473
7474 {
7475 SI tmp_tmp;
7476 SI tmp_address;
7477 tmp_tmp = GET_H_GR (FLD (f_GRk));
7478 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7479 frvbf_check_swap_address (current_cpu, tmp_address);
7480 {
7481 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7482 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7483 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7484 }
7485 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7486 }
7487
7488 return vpc;
7489 #undef FLD
7490 }
7491
7492 /* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7493
7494 static SEM_PC
7495 SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7496 {
7497 #define FLD(f) abuf->fields.sfmt_cswap.f
7498 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7499 int UNUSED written = 0;
7500 IADDR UNUSED pc = abuf->addr;
7501 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7502
7503 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7504 {
7505 SI tmp_tmp;
7506 SI tmp_address;
7507 tmp_tmp = GET_H_GR (FLD (f_GRk));
7508 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7509 frvbf_check_swap_address (current_cpu, tmp_address);
7510 {
7511 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7512 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7513 written |= (1 << 6);
7514 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7515 }
7516 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7517 }
7518 }
7519
7520 abuf->written = written;
7521 return vpc;
7522 #undef FLD
7523 }
7524
7525 /* movgf: movgf$pack $GRj,$FRintk */
7526
7527 static SEM_PC
7528 SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7529 {
7530 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7531 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7532 int UNUSED written = 0;
7533 IADDR UNUSED pc = abuf->addr;
7534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7535
7536 {
7537 SI opval = GET_H_GR (FLD (f_GRj));
7538 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7539 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7540 }
7541
7542 return vpc;
7543 #undef FLD
7544 }
7545
7546 /* movfg: movfg$pack $FRintk,$GRj */
7547
7548 static SEM_PC
7549 SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7550 {
7551 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7553 int UNUSED written = 0;
7554 IADDR UNUSED pc = abuf->addr;
7555 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7556
7557 {
7558 SI opval = GET_H_FR_INT (FLD (f_FRk));
7559 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7560 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7561 }
7562
7563 return vpc;
7564 #undef FLD
7565 }
7566
7567 /* movgfd: movgfd$pack $GRj,$FRintk */
7568
7569 static SEM_PC
7570 SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7571 {
7572 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7574 int UNUSED written = 0;
7575 IADDR UNUSED pc = abuf->addr;
7576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7577
7578 if (EQSI (FLD (f_GRj), 0)) {
7579 {
7580 {
7581 SI opval = 0;
7582 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7583 written |= (1 << 4);
7584 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7585 }
7586 {
7587 USI opval = 0;
7588 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7589 written |= (1 << 5);
7590 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7591 }
7592 }
7593 } else {
7594 {
7595 {
7596 SI opval = GET_H_GR (FLD (f_GRj));
7597 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7598 written |= (1 << 4);
7599 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7600 }
7601 {
7602 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7603 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7604 written |= (1 << 5);
7605 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7606 }
7607 }
7608 }
7609
7610 abuf->written = written;
7611 return vpc;
7612 #undef FLD
7613 }
7614
7615 /* movfgd: movfgd$pack $FRintk,$GRj */
7616
7617 static SEM_PC
7618 SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7619 {
7620 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7622 int UNUSED written = 0;
7623 IADDR UNUSED pc = abuf->addr;
7624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7625
7626 if (NESI (FLD (f_GRj), 0)) {
7627 {
7628 {
7629 SI opval = GET_H_FR_INT (FLD (f_FRk));
7630 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7631 written |= (1 << 4);
7632 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7633 }
7634 {
7635 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7636 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7637 written |= (1 << 5);
7638 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7639 }
7640 }
7641 }
7642
7643 abuf->written = written;
7644 return vpc;
7645 #undef FLD
7646 }
7647
7648 /* movgfq: movgfq$pack $GRj,$FRintk */
7649
7650 static SEM_PC
7651 SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7652 {
7653 #define FLD(f) abuf->fields.sfmt_movgfq.f
7654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7655 int UNUSED written = 0;
7656 IADDR UNUSED pc = abuf->addr;
7657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7658
7659 if (EQSI (FLD (f_GRj), 0)) {
7660 {
7661 {
7662 SI opval = 0;
7663 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7664 written |= (1 << 6);
7665 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7666 }
7667 {
7668 USI opval = 0;
7669 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7670 written |= (1 << 7);
7671 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7672 }
7673 {
7674 USI opval = 0;
7675 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
7676 written |= (1 << 8);
7677 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7678 }
7679 {
7680 USI opval = 0;
7681 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
7682 written |= (1 << 9);
7683 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7684 }
7685 }
7686 } else {
7687 {
7688 {
7689 SI opval = GET_H_GR (FLD (f_GRj));
7690 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7691 written |= (1 << 6);
7692 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7693 }
7694 {
7695 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7696 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7697 written |= (1 << 7);
7698 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7699 }
7700 {
7701 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 2));
7702 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
7703 written |= (1 << 8);
7704 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7705 }
7706 {
7707 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 3));
7708 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
7709 written |= (1 << 9);
7710 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7711 }
7712 }
7713 }
7714
7715 abuf->written = written;
7716 return vpc;
7717 #undef FLD
7718 }
7719
7720 /* movfgq: movfgq$pack $FRintk,$GRj */
7721
7722 static SEM_PC
7723 SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7724 {
7725 #define FLD(f) abuf->fields.sfmt_movfgq.f
7726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7727 int UNUSED written = 0;
7728 IADDR UNUSED pc = abuf->addr;
7729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7730
7731 if (NESI (FLD (f_GRj), 0)) {
7732 {
7733 {
7734 SI opval = GET_H_FR_INT (FLD (f_FRk));
7735 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7736 written |= (1 << 6);
7737 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7738 }
7739 {
7740 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7741 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7742 written |= (1 << 7);
7743 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7744 }
7745 {
7746 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 2));
7747 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 2), opval);
7748 written |= (1 << 8);
7749 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7750 }
7751 {
7752 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 3));
7753 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 3), opval);
7754 written |= (1 << 9);
7755 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7756 }
7757 }
7758 }
7759
7760 abuf->written = written;
7761 return vpc;
7762 #undef FLD
7763 }
7764
7765 /* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7766
7767 static SEM_PC
7768 SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7769 {
7770 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7771 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7772 int UNUSED written = 0;
7773 IADDR UNUSED pc = abuf->addr;
7774 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7775
7776 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7777 {
7778 SI opval = GET_H_GR (FLD (f_GRj));
7779 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7780 written |= (1 << 3);
7781 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7782 }
7783 }
7784
7785 abuf->written = written;
7786 return vpc;
7787 #undef FLD
7788 }
7789
7790 /* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7791
7792 static SEM_PC
7793 SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7794 {
7795 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7796 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7797 int UNUSED written = 0;
7798 IADDR UNUSED pc = abuf->addr;
7799 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7800
7801 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7802 {
7803 SI opval = GET_H_FR_INT (FLD (f_FRk));
7804 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7805 written |= (1 << 3);
7806 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7807 }
7808 }
7809
7810 abuf->written = written;
7811 return vpc;
7812 #undef FLD
7813 }
7814
7815 /* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7816
7817 static SEM_PC
7818 SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7819 {
7820 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7822 int UNUSED written = 0;
7823 IADDR UNUSED pc = abuf->addr;
7824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7825
7826 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7827 if (EQSI (FLD (f_GRj), 0)) {
7828 {
7829 {
7830 SI opval = 0;
7831 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7832 written |= (1 << 6);
7833 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7834 }
7835 {
7836 USI opval = 0;
7837 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7838 written |= (1 << 7);
7839 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7840 }
7841 }
7842 } else {
7843 {
7844 {
7845 SI opval = GET_H_GR (FLD (f_GRj));
7846 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7847 written |= (1 << 6);
7848 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7849 }
7850 {
7851 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7852 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7853 written |= (1 << 7);
7854 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7855 }
7856 }
7857 }
7858 }
7859
7860 abuf->written = written;
7861 return vpc;
7862 #undef FLD
7863 }
7864
7865 /* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7866
7867 static SEM_PC
7868 SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7869 {
7870 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7872 int UNUSED written = 0;
7873 IADDR UNUSED pc = abuf->addr;
7874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7875
7876 if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7877 {
7878 {
7879 SI opval = GET_H_FR_INT (FLD (f_FRk));
7880 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7881 written |= (1 << 6);
7882 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7883 }
7884 {
7885 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7886 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7887 written |= (1 << 7);
7888 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7889 }
7890 }
7891 }
7892
7893 abuf->written = written;
7894 return vpc;
7895 #undef FLD
7896 }
7897
7898 /* movgs: movgs$pack $GRj,$spr */
7899
7900 static SEM_PC
7901 SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7902 {
7903 #define FLD(f) abuf->fields.sfmt_movgs.f
7904 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7905 int UNUSED written = 0;
7906 IADDR UNUSED pc = abuf->addr;
7907 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7908
7909 {
7910 USI opval = GET_H_GR (FLD (f_GRj));
7911 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
7912 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
7913 }
7914
7915 return vpc;
7916 #undef FLD
7917 }
7918
7919 /* movsg: movsg$pack $spr,$GRj */
7920
7921 static SEM_PC
7922 SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7923 {
7924 #define FLD(f) abuf->fields.sfmt_movsg.f
7925 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7926 int UNUSED written = 0;
7927 IADDR UNUSED pc = abuf->addr;
7928 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7929
7930 {
7931 SI opval = GET_H_SPR (FLD (f_spr));
7932 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7933 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7934 }
7935
7936 return vpc;
7937 #undef FLD
7938 }
7939
7940 /* bra: bra$pack $hint_taken$label16 */
7941
7942 static SEM_PC
7943 SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7944 {
7945 #define FLD(f) abuf->fields.sfmt_fbne.f
7946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7947 int UNUSED written = 0;
7948 IADDR UNUSED pc = abuf->addr;
7949 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7950
7951 {
7952 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7953 {
7954 USI opval = FLD (i_label16);
7955 sim_queue_pc_write (current_cpu, opval);
7956 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7957 }
7958 }
7959
7960 return vpc;
7961 #undef FLD
7962 }
7963
7964 /* bno: bno$pack$hint_not_taken */
7965
7966 static SEM_PC
7967 SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7968 {
7969 #define FLD(f) abuf->fields.sfmt_fbne.f
7970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7971 int UNUSED written = 0;
7972 IADDR UNUSED pc = abuf->addr;
7973 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7974
7975 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7976
7977 return vpc;
7978 #undef FLD
7979 }
7980
7981 /* beq: beq$pack $ICCi_2,$hint,$label16 */
7982
7983 static SEM_PC
7984 SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7985 {
7986 #define FLD(f) abuf->fields.sfmt_beq.f
7987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7988 int UNUSED written = 0;
7989 IADDR UNUSED pc = abuf->addr;
7990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7991
7992 {
7993 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7994 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
7995 {
7996 USI opval = FLD (i_label16);
7997 sim_queue_pc_write (current_cpu, opval);
7998 written |= (1 << 3);
7999 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8000 }
8001 }
8002 }
8003
8004 abuf->written = written;
8005 return vpc;
8006 #undef FLD
8007 }
8008
8009 /* bne: bne$pack $ICCi_2,$hint,$label16 */
8010
8011 static SEM_PC
8012 SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8013 {
8014 #define FLD(f) abuf->fields.sfmt_beq.f
8015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8016 int UNUSED written = 0;
8017 IADDR UNUSED pc = abuf->addr;
8018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8019
8020 {
8021 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8022 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8023 {
8024 USI opval = FLD (i_label16);
8025 sim_queue_pc_write (current_cpu, opval);
8026 written |= (1 << 3);
8027 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8028 }
8029 }
8030 }
8031
8032 abuf->written = written;
8033 return vpc;
8034 #undef FLD
8035 }
8036
8037 /* ble: ble$pack $ICCi_2,$hint,$label16 */
8038
8039 static SEM_PC
8040 SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8041 {
8042 #define FLD(f) abuf->fields.sfmt_beq.f
8043 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8044 int UNUSED written = 0;
8045 IADDR UNUSED pc = abuf->addr;
8046 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8047
8048 {
8049 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8050 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))))) {
8051 {
8052 USI opval = FLD (i_label16);
8053 sim_queue_pc_write (current_cpu, opval);
8054 written |= (1 << 3);
8055 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8056 }
8057 }
8058 }
8059
8060 abuf->written = written;
8061 return vpc;
8062 #undef FLD
8063 }
8064
8065 /* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8066
8067 static SEM_PC
8068 SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8069 {
8070 #define FLD(f) abuf->fields.sfmt_beq.f
8071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8072 int UNUSED written = 0;
8073 IADDR UNUSED pc = abuf->addr;
8074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8075
8076 {
8077 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8078 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)))))) {
8079 {
8080 USI opval = FLD (i_label16);
8081 sim_queue_pc_write (current_cpu, opval);
8082 written |= (1 << 3);
8083 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8084 }
8085 }
8086 }
8087
8088 abuf->written = written;
8089 return vpc;
8090 #undef FLD
8091 }
8092
8093 /* blt: blt$pack $ICCi_2,$hint,$label16 */
8094
8095 static SEM_PC
8096 SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8097 {
8098 #define FLD(f) abuf->fields.sfmt_beq.f
8099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8100 int UNUSED written = 0;
8101 IADDR UNUSED pc = abuf->addr;
8102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8103
8104 {
8105 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8106 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)))) {
8107 {
8108 USI opval = FLD (i_label16);
8109 sim_queue_pc_write (current_cpu, opval);
8110 written |= (1 << 3);
8111 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8112 }
8113 }
8114 }
8115
8116 abuf->written = written;
8117 return vpc;
8118 #undef FLD
8119 }
8120
8121 /* bge: bge$pack $ICCi_2,$hint,$label16 */
8122
8123 static SEM_PC
8124 SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8125 {
8126 #define FLD(f) abuf->fields.sfmt_beq.f
8127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8128 int UNUSED written = 0;
8129 IADDR UNUSED pc = abuf->addr;
8130 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8131
8132 {
8133 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8134 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))))) {
8135 {
8136 USI opval = FLD (i_label16);
8137 sim_queue_pc_write (current_cpu, opval);
8138 written |= (1 << 3);
8139 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8140 }
8141 }
8142 }
8143
8144 abuf->written = written;
8145 return vpc;
8146 #undef FLD
8147 }
8148
8149 /* bls: bls$pack $ICCi_2,$hint,$label16 */
8150
8151 static SEM_PC
8152 SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8153 {
8154 #define FLD(f) abuf->fields.sfmt_beq.f
8155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8156 int UNUSED written = 0;
8157 IADDR UNUSED pc = abuf->addr;
8158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8159
8160 {
8161 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8162 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8163 {
8164 USI opval = FLD (i_label16);
8165 sim_queue_pc_write (current_cpu, opval);
8166 written |= (1 << 3);
8167 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8168 }
8169 }
8170 }
8171
8172 abuf->written = written;
8173 return vpc;
8174 #undef FLD
8175 }
8176
8177 /* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8178
8179 static SEM_PC
8180 SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8181 {
8182 #define FLD(f) abuf->fields.sfmt_beq.f
8183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8184 int UNUSED written = 0;
8185 IADDR UNUSED pc = abuf->addr;
8186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8187
8188 {
8189 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8190 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))))) {
8191 {
8192 USI opval = FLD (i_label16);
8193 sim_queue_pc_write (current_cpu, opval);
8194 written |= (1 << 3);
8195 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8196 }
8197 }
8198 }
8199
8200 abuf->written = written;
8201 return vpc;
8202 #undef FLD
8203 }
8204
8205 /* bc: bc$pack $ICCi_2,$hint,$label16 */
8206
8207 static SEM_PC
8208 SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8209 {
8210 #define FLD(f) abuf->fields.sfmt_beq.f
8211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8212 int UNUSED written = 0;
8213 IADDR UNUSED pc = abuf->addr;
8214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8215
8216 {
8217 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8218 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8219 {
8220 USI opval = FLD (i_label16);
8221 sim_queue_pc_write (current_cpu, opval);
8222 written |= (1 << 3);
8223 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8224 }
8225 }
8226 }
8227
8228 abuf->written = written;
8229 return vpc;
8230 #undef FLD
8231 }
8232
8233 /* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8234
8235 static SEM_PC
8236 SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8237 {
8238 #define FLD(f) abuf->fields.sfmt_beq.f
8239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8240 int UNUSED written = 0;
8241 IADDR UNUSED pc = abuf->addr;
8242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8243
8244 {
8245 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8246 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8247 {
8248 USI opval = FLD (i_label16);
8249 sim_queue_pc_write (current_cpu, opval);
8250 written |= (1 << 3);
8251 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8252 }
8253 }
8254 }
8255
8256 abuf->written = written;
8257 return vpc;
8258 #undef FLD
8259 }
8260
8261 /* bn: bn$pack $ICCi_2,$hint,$label16 */
8262
8263 static SEM_PC
8264 SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8265 {
8266 #define FLD(f) abuf->fields.sfmt_beq.f
8267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8268 int UNUSED written = 0;
8269 IADDR UNUSED pc = abuf->addr;
8270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8271
8272 {
8273 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8274 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8275 {
8276 USI opval = FLD (i_label16);
8277 sim_queue_pc_write (current_cpu, opval);
8278 written |= (1 << 3);
8279 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8280 }
8281 }
8282 }
8283
8284 abuf->written = written;
8285 return vpc;
8286 #undef FLD
8287 }
8288
8289 /* bp: bp$pack $ICCi_2,$hint,$label16 */
8290
8291 static SEM_PC
8292 SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8293 {
8294 #define FLD(f) abuf->fields.sfmt_beq.f
8295 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8296 int UNUSED written = 0;
8297 IADDR UNUSED pc = abuf->addr;
8298 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8299
8300 {
8301 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8302 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8303 {
8304 USI opval = FLD (i_label16);
8305 sim_queue_pc_write (current_cpu, opval);
8306 written |= (1 << 3);
8307 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8308 }
8309 }
8310 }
8311
8312 abuf->written = written;
8313 return vpc;
8314 #undef FLD
8315 }
8316
8317 /* bv: bv$pack $ICCi_2,$hint,$label16 */
8318
8319 static SEM_PC
8320 SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8321 {
8322 #define FLD(f) abuf->fields.sfmt_beq.f
8323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8324 int UNUSED written = 0;
8325 IADDR UNUSED pc = abuf->addr;
8326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8327
8328 {
8329 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8330 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8331 {
8332 USI opval = FLD (i_label16);
8333 sim_queue_pc_write (current_cpu, opval);
8334 written |= (1 << 3);
8335 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8336 }
8337 }
8338 }
8339
8340 abuf->written = written;
8341 return vpc;
8342 #undef FLD
8343 }
8344
8345 /* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8346
8347 static SEM_PC
8348 SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8349 {
8350 #define FLD(f) abuf->fields.sfmt_beq.f
8351 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8352 int UNUSED written = 0;
8353 IADDR UNUSED pc = abuf->addr;
8354 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8355
8356 {
8357 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8358 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8359 {
8360 USI opval = FLD (i_label16);
8361 sim_queue_pc_write (current_cpu, opval);
8362 written |= (1 << 3);
8363 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8364 }
8365 }
8366 }
8367
8368 abuf->written = written;
8369 return vpc;
8370 #undef FLD
8371 }
8372
8373 /* fbra: fbra$pack $hint_taken$label16 */
8374
8375 static SEM_PC
8376 SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8377 {
8378 #define FLD(f) abuf->fields.sfmt_fbne.f
8379 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8380 int UNUSED written = 0;
8381 IADDR UNUSED pc = abuf->addr;
8382 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8383
8384 {
8385 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8386 {
8387 USI opval = FLD (i_label16);
8388 sim_queue_pc_write (current_cpu, opval);
8389 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8390 }
8391 }
8392
8393 return vpc;
8394 #undef FLD
8395 }
8396
8397 /* fbno: fbno$pack$hint_not_taken */
8398
8399 static SEM_PC
8400 SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8401 {
8402 #define FLD(f) abuf->fields.sfmt_fbne.f
8403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8404 int UNUSED written = 0;
8405 IADDR UNUSED pc = abuf->addr;
8406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8407
8408 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8409
8410 return vpc;
8411 #undef FLD
8412 }
8413
8414 /* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8415
8416 static SEM_PC
8417 SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8418 {
8419 #define FLD(f) abuf->fields.sfmt_fbne.f
8420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8421 int UNUSED written = 0;
8422 IADDR UNUSED pc = abuf->addr;
8423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8424
8425 {
8426 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8427 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))))) {
8428 {
8429 USI opval = FLD (i_label16);
8430 sim_queue_pc_write (current_cpu, opval);
8431 written |= (1 << 3);
8432 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8433 }
8434 }
8435 }
8436
8437 abuf->written = written;
8438 return vpc;
8439 #undef FLD
8440 }
8441
8442 /* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8443
8444 static SEM_PC
8445 SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8446 {
8447 #define FLD(f) abuf->fields.sfmt_fbne.f
8448 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8449 int UNUSED written = 0;
8450 IADDR UNUSED pc = abuf->addr;
8451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8452
8453 {
8454 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8455 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8456 {
8457 USI opval = FLD (i_label16);
8458 sim_queue_pc_write (current_cpu, opval);
8459 written |= (1 << 3);
8460 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8461 }
8462 }
8463 }
8464
8465 abuf->written = written;
8466 return vpc;
8467 #undef FLD
8468 }
8469
8470 /* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8471
8472 static SEM_PC
8473 SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8474 {
8475 #define FLD(f) abuf->fields.sfmt_fbne.f
8476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8477 int UNUSED written = 0;
8478 IADDR UNUSED pc = abuf->addr;
8479 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8480
8481 {
8482 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8483 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)))) {
8484 {
8485 USI opval = FLD (i_label16);
8486 sim_queue_pc_write (current_cpu, opval);
8487 written |= (1 << 3);
8488 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8489 }
8490 }
8491 }
8492
8493 abuf->written = written;
8494 return vpc;
8495 #undef FLD
8496 }
8497
8498 /* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8499
8500 static SEM_PC
8501 SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8502 {
8503 #define FLD(f) abuf->fields.sfmt_fbne.f
8504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8505 int UNUSED written = 0;
8506 IADDR UNUSED pc = abuf->addr;
8507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8508
8509 {
8510 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8511 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8512 {
8513 USI opval = FLD (i_label16);
8514 sim_queue_pc_write (current_cpu, opval);
8515 written |= (1 << 3);
8516 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8517 }
8518 }
8519 }
8520
8521 abuf->written = written;
8522 return vpc;
8523 #undef FLD
8524 }
8525
8526 /* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8527
8528 static SEM_PC
8529 SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8530 {
8531 #define FLD(f) abuf->fields.sfmt_fbne.f
8532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8533 int UNUSED written = 0;
8534 IADDR UNUSED pc = abuf->addr;
8535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8536
8537 {
8538 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8539 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8540 {
8541 USI opval = FLD (i_label16);
8542 sim_queue_pc_write (current_cpu, opval);
8543 written |= (1 << 3);
8544 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8545 }
8546 }
8547 }
8548
8549 abuf->written = written;
8550 return vpc;
8551 #undef FLD
8552 }
8553
8554 /* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8555
8556 static SEM_PC
8557 SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8558 {
8559 #define FLD(f) abuf->fields.sfmt_fbne.f
8560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8561 int UNUSED written = 0;
8562 IADDR UNUSED pc = abuf->addr;
8563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8564
8565 {
8566 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8567 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)))) {
8568 {
8569 USI opval = FLD (i_label16);
8570 sim_queue_pc_write (current_cpu, opval);
8571 written |= (1 << 3);
8572 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8573 }
8574 }
8575 }
8576
8577 abuf->written = written;
8578 return vpc;
8579 #undef FLD
8580 }
8581
8582 /* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8583
8584 static SEM_PC
8585 SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8586 {
8587 #define FLD(f) abuf->fields.sfmt_fbne.f
8588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8589 int UNUSED written = 0;
8590 IADDR UNUSED pc = abuf->addr;
8591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8592
8593 {
8594 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8595 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8596 {
8597 USI opval = FLD (i_label16);
8598 sim_queue_pc_write (current_cpu, opval);
8599 written |= (1 << 3);
8600 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8601 }
8602 }
8603 }
8604
8605 abuf->written = written;
8606 return vpc;
8607 #undef FLD
8608 }
8609
8610 /* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8611
8612 static SEM_PC
8613 SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8614 {
8615 #define FLD(f) abuf->fields.sfmt_fbne.f
8616 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8617 int UNUSED written = 0;
8618 IADDR UNUSED pc = abuf->addr;
8619 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8620
8621 {
8622 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8623 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))))) {
8624 {
8625 USI opval = FLD (i_label16);
8626 sim_queue_pc_write (current_cpu, opval);
8627 written |= (1 << 3);
8628 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8629 }
8630 }
8631 }
8632
8633 abuf->written = written;
8634 return vpc;
8635 #undef FLD
8636 }
8637
8638 /* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8639
8640 static SEM_PC
8641 SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8642 {
8643 #define FLD(f) abuf->fields.sfmt_fbne.f
8644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8645 int UNUSED written = 0;
8646 IADDR UNUSED pc = abuf->addr;
8647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8648
8649 {
8650 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8651 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8652 {
8653 USI opval = FLD (i_label16);
8654 sim_queue_pc_write (current_cpu, opval);
8655 written |= (1 << 3);
8656 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8657 }
8658 }
8659 }
8660
8661 abuf->written = written;
8662 return vpc;
8663 #undef FLD
8664 }
8665
8666 /* fble: fble$pack $FCCi_2,$hint,$label16 */
8667
8668 static SEM_PC
8669 SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8670 {
8671 #define FLD(f) abuf->fields.sfmt_fbne.f
8672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8673 int UNUSED written = 0;
8674 IADDR UNUSED pc = abuf->addr;
8675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8676
8677 {
8678 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8679 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)))) {
8680 {
8681 USI opval = FLD (i_label16);
8682 sim_queue_pc_write (current_cpu, opval);
8683 written |= (1 << 3);
8684 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8685 }
8686 }
8687 }
8688
8689 abuf->written = written;
8690 return vpc;
8691 #undef FLD
8692 }
8693
8694 /* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8695
8696 static SEM_PC
8697 SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8698 {
8699 #define FLD(f) abuf->fields.sfmt_fbne.f
8700 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8701 int UNUSED written = 0;
8702 IADDR UNUSED pc = abuf->addr;
8703 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8704
8705 {
8706 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8707 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8708 {
8709 USI opval = FLD (i_label16);
8710 sim_queue_pc_write (current_cpu, opval);
8711 written |= (1 << 3);
8712 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8713 }
8714 }
8715 }
8716
8717 abuf->written = written;
8718 return vpc;
8719 #undef FLD
8720 }
8721
8722 /* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8723
8724 static SEM_PC
8725 SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8726 {
8727 #define FLD(f) abuf->fields.sfmt_fbne.f
8728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8729 int UNUSED written = 0;
8730 IADDR UNUSED pc = abuf->addr;
8731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8732
8733 {
8734 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8735 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))))) {
8736 {
8737 USI opval = FLD (i_label16);
8738 sim_queue_pc_write (current_cpu, opval);
8739 written |= (1 << 3);
8740 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8741 }
8742 }
8743 }
8744
8745 abuf->written = written;
8746 return vpc;
8747 #undef FLD
8748 }
8749
8750 /* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8751
8752 static SEM_PC
8753 SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8754 {
8755 #define FLD(f) abuf->fields.sfmt_fbne.f
8756 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8757 int UNUSED written = 0;
8758 IADDR UNUSED pc = abuf->addr;
8759 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8760
8761 {
8762 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8763 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8764 {
8765 USI opval = FLD (i_label16);
8766 sim_queue_pc_write (current_cpu, opval);
8767 written |= (1 << 3);
8768 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8769 }
8770 }
8771 }
8772
8773 abuf->written = written;
8774 return vpc;
8775 #undef FLD
8776 }
8777
8778 /* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8779
8780 static SEM_PC
8781 SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8782 {
8783 #define FLD(f) abuf->fields.sfmt_fbne.f
8784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8785 int UNUSED written = 0;
8786 IADDR UNUSED pc = abuf->addr;
8787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8788
8789 {
8790 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8791 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))))) {
8792 {
8793 USI opval = FLD (i_label16);
8794 sim_queue_pc_write (current_cpu, opval);
8795 written |= (1 << 3);
8796 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8797 }
8798 }
8799 }
8800
8801 abuf->written = written;
8802 return vpc;
8803 #undef FLD
8804 }
8805
8806 /* bctrlr: bctrlr$pack $ccond,$hint */
8807
8808 static SEM_PC
8809 SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8810 {
8811 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8813 int UNUSED written = 0;
8814 IADDR UNUSED pc = abuf->addr;
8815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8816
8817 {
8818 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8819 {
8820 SI tmp_tmp;
8821 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8822 {
8823 USI opval = tmp_tmp;
8824 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8825 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8826 }
8827 if (EQSI (FLD (f_ccond), 0)) {
8828 if (NESI (tmp_tmp, 0)) {
8829 {
8830 USI opval = GET_H_SPR (((UINT) 272));
8831 sim_queue_pc_write (current_cpu, opval);
8832 written |= (1 << 5);
8833 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8834 }
8835 }
8836 } else {
8837 if (EQSI (tmp_tmp, 0)) {
8838 {
8839 USI opval = GET_H_SPR (((UINT) 272));
8840 sim_queue_pc_write (current_cpu, opval);
8841 written |= (1 << 5);
8842 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8843 }
8844 }
8845 }
8846 }
8847 }
8848
8849 abuf->written = written;
8850 return vpc;
8851 #undef FLD
8852 }
8853
8854 /* bralr: bralr$pack$hint_taken */
8855
8856 static SEM_PC
8857 SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8858 {
8859 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8861 int UNUSED written = 0;
8862 IADDR UNUSED pc = abuf->addr;
8863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8864
8865 {
8866 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8867 {
8868 USI opval = GET_H_SPR (((UINT) 272));
8869 sim_queue_pc_write (current_cpu, opval);
8870 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8871 }
8872 }
8873
8874 return vpc;
8875 #undef FLD
8876 }
8877
8878 /* bnolr: bnolr$pack$hint_not_taken */
8879
8880 static SEM_PC
8881 SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8882 {
8883 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8885 int UNUSED written = 0;
8886 IADDR UNUSED pc = abuf->addr;
8887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8888
8889 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8890
8891 return vpc;
8892 #undef FLD
8893 }
8894
8895 /* beqlr: beqlr$pack $ICCi_2,$hint */
8896
8897 static SEM_PC
8898 SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8899 {
8900 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8901 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8902 int UNUSED written = 0;
8903 IADDR UNUSED pc = abuf->addr;
8904 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8905
8906 {
8907 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8908 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8909 {
8910 USI opval = GET_H_SPR (((UINT) 272));
8911 sim_queue_pc_write (current_cpu, opval);
8912 written |= (1 << 3);
8913 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8914 }
8915 }
8916 }
8917
8918 abuf->written = written;
8919 return vpc;
8920 #undef FLD
8921 }
8922
8923 /* bnelr: bnelr$pack $ICCi_2,$hint */
8924
8925 static SEM_PC
8926 SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8927 {
8928 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8930 int UNUSED written = 0;
8931 IADDR UNUSED pc = abuf->addr;
8932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8933
8934 {
8935 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8936 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8937 {
8938 USI opval = GET_H_SPR (((UINT) 272));
8939 sim_queue_pc_write (current_cpu, opval);
8940 written |= (1 << 3);
8941 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8942 }
8943 }
8944 }
8945
8946 abuf->written = written;
8947 return vpc;
8948 #undef FLD
8949 }
8950
8951 /* blelr: blelr$pack $ICCi_2,$hint */
8952
8953 static SEM_PC
8954 SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8955 {
8956 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8958 int UNUSED written = 0;
8959 IADDR UNUSED pc = abuf->addr;
8960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8961
8962 {
8963 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8964 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))))) {
8965 {
8966 USI opval = GET_H_SPR (((UINT) 272));
8967 sim_queue_pc_write (current_cpu, opval);
8968 written |= (1 << 3);
8969 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8970 }
8971 }
8972 }
8973
8974 abuf->written = written;
8975 return vpc;
8976 #undef FLD
8977 }
8978
8979 /* bgtlr: bgtlr$pack $ICCi_2,$hint */
8980
8981 static SEM_PC
8982 SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8983 {
8984 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8986 int UNUSED written = 0;
8987 IADDR UNUSED pc = abuf->addr;
8988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8989
8990 {
8991 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8992 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)))))) {
8993 {
8994 USI opval = GET_H_SPR (((UINT) 272));
8995 sim_queue_pc_write (current_cpu, opval);
8996 written |= (1 << 3);
8997 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8998 }
8999 }
9000 }
9001
9002 abuf->written = written;
9003 return vpc;
9004 #undef FLD
9005 }
9006
9007 /* bltlr: bltlr$pack $ICCi_2,$hint */
9008
9009 static SEM_PC
9010 SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9011 {
9012 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9013 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9014 int UNUSED written = 0;
9015 IADDR UNUSED pc = abuf->addr;
9016 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9017
9018 {
9019 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9020 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)))) {
9021 {
9022 USI opval = GET_H_SPR (((UINT) 272));
9023 sim_queue_pc_write (current_cpu, opval);
9024 written |= (1 << 3);
9025 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9026 }
9027 }
9028 }
9029
9030 abuf->written = written;
9031 return vpc;
9032 #undef FLD
9033 }
9034
9035 /* bgelr: bgelr$pack $ICCi_2,$hint */
9036
9037 static SEM_PC
9038 SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9039 {
9040 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9042 int UNUSED written = 0;
9043 IADDR UNUSED pc = abuf->addr;
9044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9045
9046 {
9047 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9048 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))))) {
9049 {
9050 USI opval = GET_H_SPR (((UINT) 272));
9051 sim_queue_pc_write (current_cpu, opval);
9052 written |= (1 << 3);
9053 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9054 }
9055 }
9056 }
9057
9058 abuf->written = written;
9059 return vpc;
9060 #undef FLD
9061 }
9062
9063 /* blslr: blslr$pack $ICCi_2,$hint */
9064
9065 static SEM_PC
9066 SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9067 {
9068 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9069 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9070 int UNUSED written = 0;
9071 IADDR UNUSED pc = abuf->addr;
9072 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9073
9074 {
9075 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9076 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9077 {
9078 USI opval = GET_H_SPR (((UINT) 272));
9079 sim_queue_pc_write (current_cpu, opval);
9080 written |= (1 << 3);
9081 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9082 }
9083 }
9084 }
9085
9086 abuf->written = written;
9087 return vpc;
9088 #undef FLD
9089 }
9090
9091 /* bhilr: bhilr$pack $ICCi_2,$hint */
9092
9093 static SEM_PC
9094 SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9095 {
9096 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9098 int UNUSED written = 0;
9099 IADDR UNUSED pc = abuf->addr;
9100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9101
9102 {
9103 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9104 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))))) {
9105 {
9106 USI opval = GET_H_SPR (((UINT) 272));
9107 sim_queue_pc_write (current_cpu, opval);
9108 written |= (1 << 3);
9109 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9110 }
9111 }
9112 }
9113
9114 abuf->written = written;
9115 return vpc;
9116 #undef FLD
9117 }
9118
9119 /* bclr: bclr$pack $ICCi_2,$hint */
9120
9121 static SEM_PC
9122 SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9123 {
9124 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9126 int UNUSED written = 0;
9127 IADDR UNUSED pc = abuf->addr;
9128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9129
9130 {
9131 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9132 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9133 {
9134 USI opval = GET_H_SPR (((UINT) 272));
9135 sim_queue_pc_write (current_cpu, opval);
9136 written |= (1 << 3);
9137 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9138 }
9139 }
9140 }
9141
9142 abuf->written = written;
9143 return vpc;
9144 #undef FLD
9145 }
9146
9147 /* bnclr: bnclr$pack $ICCi_2,$hint */
9148
9149 static SEM_PC
9150 SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9151 {
9152 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9154 int UNUSED written = 0;
9155 IADDR UNUSED pc = abuf->addr;
9156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9157
9158 {
9159 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9160 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9161 {
9162 USI opval = GET_H_SPR (((UINT) 272));
9163 sim_queue_pc_write (current_cpu, opval);
9164 written |= (1 << 3);
9165 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9166 }
9167 }
9168 }
9169
9170 abuf->written = written;
9171 return vpc;
9172 #undef FLD
9173 }
9174
9175 /* bnlr: bnlr$pack $ICCi_2,$hint */
9176
9177 static SEM_PC
9178 SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9179 {
9180 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9182 int UNUSED written = 0;
9183 IADDR UNUSED pc = abuf->addr;
9184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9185
9186 {
9187 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9188 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9189 {
9190 USI opval = GET_H_SPR (((UINT) 272));
9191 sim_queue_pc_write (current_cpu, opval);
9192 written |= (1 << 3);
9193 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9194 }
9195 }
9196 }
9197
9198 abuf->written = written;
9199 return vpc;
9200 #undef FLD
9201 }
9202
9203 /* bplr: bplr$pack $ICCi_2,$hint */
9204
9205 static SEM_PC
9206 SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9207 {
9208 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9210 int UNUSED written = 0;
9211 IADDR UNUSED pc = abuf->addr;
9212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9213
9214 {
9215 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9216 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9217 {
9218 USI opval = GET_H_SPR (((UINT) 272));
9219 sim_queue_pc_write (current_cpu, opval);
9220 written |= (1 << 3);
9221 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9222 }
9223 }
9224 }
9225
9226 abuf->written = written;
9227 return vpc;
9228 #undef FLD
9229 }
9230
9231 /* bvlr: bvlr$pack $ICCi_2,$hint */
9232
9233 static SEM_PC
9234 SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9235 {
9236 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9238 int UNUSED written = 0;
9239 IADDR UNUSED pc = abuf->addr;
9240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9241
9242 {
9243 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9244 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9245 {
9246 USI opval = GET_H_SPR (((UINT) 272));
9247 sim_queue_pc_write (current_cpu, opval);
9248 written |= (1 << 3);
9249 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9250 }
9251 }
9252 }
9253
9254 abuf->written = written;
9255 return vpc;
9256 #undef FLD
9257 }
9258
9259 /* bnvlr: bnvlr$pack $ICCi_2,$hint */
9260
9261 static SEM_PC
9262 SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9263 {
9264 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9266 int UNUSED written = 0;
9267 IADDR UNUSED pc = abuf->addr;
9268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9269
9270 {
9271 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9272 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9273 {
9274 USI opval = GET_H_SPR (((UINT) 272));
9275 sim_queue_pc_write (current_cpu, opval);
9276 written |= (1 << 3);
9277 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9278 }
9279 }
9280 }
9281
9282 abuf->written = written;
9283 return vpc;
9284 #undef FLD
9285 }
9286
9287 /* fbralr: fbralr$pack$hint_taken */
9288
9289 static SEM_PC
9290 SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9291 {
9292 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9294 int UNUSED written = 0;
9295 IADDR UNUSED pc = abuf->addr;
9296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9297
9298 {
9299 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9300 {
9301 USI opval = GET_H_SPR (((UINT) 272));
9302 sim_queue_pc_write (current_cpu, opval);
9303 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9304 }
9305 }
9306
9307 return vpc;
9308 #undef FLD
9309 }
9310
9311 /* fbnolr: fbnolr$pack$hint_not_taken */
9312
9313 static SEM_PC
9314 SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9315 {
9316 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9318 int UNUSED written = 0;
9319 IADDR UNUSED pc = abuf->addr;
9320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9321
9322 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9323
9324 return vpc;
9325 #undef FLD
9326 }
9327
9328 /* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9329
9330 static SEM_PC
9331 SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9332 {
9333 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9335 int UNUSED written = 0;
9336 IADDR UNUSED pc = abuf->addr;
9337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9338
9339 {
9340 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9341 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9342 {
9343 USI opval = GET_H_SPR (((UINT) 272));
9344 sim_queue_pc_write (current_cpu, opval);
9345 written |= (1 << 3);
9346 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9347 }
9348 }
9349 }
9350
9351 abuf->written = written;
9352 return vpc;
9353 #undef FLD
9354 }
9355
9356 /* fbnelr: fbnelr$pack $FCCi_2,$hint */
9357
9358 static SEM_PC
9359 SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9360 {
9361 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9362 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9363 int UNUSED written = 0;
9364 IADDR UNUSED pc = abuf->addr;
9365 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9366
9367 {
9368 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9369 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))))) {
9370 {
9371 USI opval = GET_H_SPR (((UINT) 272));
9372 sim_queue_pc_write (current_cpu, opval);
9373 written |= (1 << 3);
9374 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9375 }
9376 }
9377 }
9378
9379 abuf->written = written;
9380 return vpc;
9381 #undef FLD
9382 }
9383
9384 /* fblglr: fblglr$pack $FCCi_2,$hint */
9385
9386 static SEM_PC
9387 SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9388 {
9389 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9391 int UNUSED written = 0;
9392 IADDR UNUSED pc = abuf->addr;
9393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9394
9395 {
9396 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9397 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)))) {
9398 {
9399 USI opval = GET_H_SPR (((UINT) 272));
9400 sim_queue_pc_write (current_cpu, opval);
9401 written |= (1 << 3);
9402 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9403 }
9404 }
9405 }
9406
9407 abuf->written = written;
9408 return vpc;
9409 #undef FLD
9410 }
9411
9412 /* fbuelr: fbuelr$pack $FCCi_2,$hint */
9413
9414 static SEM_PC
9415 SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9416 {
9417 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9419 int UNUSED written = 0;
9420 IADDR UNUSED pc = abuf->addr;
9421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9422
9423 {
9424 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9425 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9426 {
9427 USI opval = GET_H_SPR (((UINT) 272));
9428 sim_queue_pc_write (current_cpu, opval);
9429 written |= (1 << 3);
9430 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9431 }
9432 }
9433 }
9434
9435 abuf->written = written;
9436 return vpc;
9437 #undef FLD
9438 }
9439
9440 /* fbullr: fbullr$pack $FCCi_2,$hint */
9441
9442 static SEM_PC
9443 SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9444 {
9445 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9447 int UNUSED written = 0;
9448 IADDR UNUSED pc = abuf->addr;
9449 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9450
9451 {
9452 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9453 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9454 {
9455 USI opval = GET_H_SPR (((UINT) 272));
9456 sim_queue_pc_write (current_cpu, opval);
9457 written |= (1 << 3);
9458 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9459 }
9460 }
9461 }
9462
9463 abuf->written = written;
9464 return vpc;
9465 #undef FLD
9466 }
9467
9468 /* fbgelr: fbgelr$pack $FCCi_2,$hint */
9469
9470 static SEM_PC
9471 SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9472 {
9473 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9475 int UNUSED written = 0;
9476 IADDR UNUSED pc = abuf->addr;
9477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9478
9479 {
9480 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9481 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)))) {
9482 {
9483 USI opval = GET_H_SPR (((UINT) 272));
9484 sim_queue_pc_write (current_cpu, opval);
9485 written |= (1 << 3);
9486 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9487 }
9488 }
9489 }
9490
9491 abuf->written = written;
9492 return vpc;
9493 #undef FLD
9494 }
9495
9496 /* fbltlr: fbltlr$pack $FCCi_2,$hint */
9497
9498 static SEM_PC
9499 SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9500 {
9501 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9503 int UNUSED written = 0;
9504 IADDR UNUSED pc = abuf->addr;
9505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9506
9507 {
9508 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9509 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9510 {
9511 USI opval = GET_H_SPR (((UINT) 272));
9512 sim_queue_pc_write (current_cpu, opval);
9513 written |= (1 << 3);
9514 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9515 }
9516 }
9517 }
9518
9519 abuf->written = written;
9520 return vpc;
9521 #undef FLD
9522 }
9523
9524 /* fbugelr: fbugelr$pack $FCCi_2,$hint */
9525
9526 static SEM_PC
9527 SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9528 {
9529 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9531 int UNUSED written = 0;
9532 IADDR UNUSED pc = abuf->addr;
9533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9534
9535 {
9536 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9537 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))))) {
9538 {
9539 USI opval = GET_H_SPR (((UINT) 272));
9540 sim_queue_pc_write (current_cpu, opval);
9541 written |= (1 << 3);
9542 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9543 }
9544 }
9545 }
9546
9547 abuf->written = written;
9548 return vpc;
9549 #undef FLD
9550 }
9551
9552 /* fbuglr: fbuglr$pack $FCCi_2,$hint */
9553
9554 static SEM_PC
9555 SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9556 {
9557 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9559 int UNUSED written = 0;
9560 IADDR UNUSED pc = abuf->addr;
9561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9562
9563 {
9564 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9565 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9566 {
9567 USI opval = GET_H_SPR (((UINT) 272));
9568 sim_queue_pc_write (current_cpu, opval);
9569 written |= (1 << 3);
9570 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9571 }
9572 }
9573 }
9574
9575 abuf->written = written;
9576 return vpc;
9577 #undef FLD
9578 }
9579
9580 /* fblelr: fblelr$pack $FCCi_2,$hint */
9581
9582 static SEM_PC
9583 SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9584 {
9585 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9586 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9587 int UNUSED written = 0;
9588 IADDR UNUSED pc = abuf->addr;
9589 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9590
9591 {
9592 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9593 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)))) {
9594 {
9595 USI opval = GET_H_SPR (((UINT) 272));
9596 sim_queue_pc_write (current_cpu, opval);
9597 written |= (1 << 3);
9598 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9599 }
9600 }
9601 }
9602
9603 abuf->written = written;
9604 return vpc;
9605 #undef FLD
9606 }
9607
9608 /* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9609
9610 static SEM_PC
9611 SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9612 {
9613 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9614 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9615 int UNUSED written = 0;
9616 IADDR UNUSED pc = abuf->addr;
9617 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9618
9619 {
9620 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9621 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9622 {
9623 USI opval = GET_H_SPR (((UINT) 272));
9624 sim_queue_pc_write (current_cpu, opval);
9625 written |= (1 << 3);
9626 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9627 }
9628 }
9629 }
9630
9631 abuf->written = written;
9632 return vpc;
9633 #undef FLD
9634 }
9635
9636 /* fbulelr: fbulelr$pack $FCCi_2,$hint */
9637
9638 static SEM_PC
9639 SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9640 {
9641 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9642 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9643 int UNUSED written = 0;
9644 IADDR UNUSED pc = abuf->addr;
9645 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9646
9647 {
9648 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9649 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))))) {
9650 {
9651 USI opval = GET_H_SPR (((UINT) 272));
9652 sim_queue_pc_write (current_cpu, opval);
9653 written |= (1 << 3);
9654 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9655 }
9656 }
9657 }
9658
9659 abuf->written = written;
9660 return vpc;
9661 #undef FLD
9662 }
9663
9664 /* fbulr: fbulr$pack $FCCi_2,$hint */
9665
9666 static SEM_PC
9667 SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9668 {
9669 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9671 int UNUSED written = 0;
9672 IADDR UNUSED pc = abuf->addr;
9673 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9674
9675 {
9676 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9677 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9678 {
9679 USI opval = GET_H_SPR (((UINT) 272));
9680 sim_queue_pc_write (current_cpu, opval);
9681 written |= (1 << 3);
9682 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9683 }
9684 }
9685 }
9686
9687 abuf->written = written;
9688 return vpc;
9689 #undef FLD
9690 }
9691
9692 /* fbolr: fbolr$pack $FCCi_2,$hint */
9693
9694 static SEM_PC
9695 SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9696 {
9697 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9699 int UNUSED written = 0;
9700 IADDR UNUSED pc = abuf->addr;
9701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9702
9703 {
9704 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9705 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))))) {
9706 {
9707 USI opval = GET_H_SPR (((UINT) 272));
9708 sim_queue_pc_write (current_cpu, opval);
9709 written |= (1 << 3);
9710 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9711 }
9712 }
9713 }
9714
9715 abuf->written = written;
9716 return vpc;
9717 #undef FLD
9718 }
9719
9720 /* bcralr: bcralr$pack $ccond$hint_taken */
9721
9722 static SEM_PC
9723 SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9724 {
9725 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9727 int UNUSED written = 0;
9728 IADDR UNUSED pc = abuf->addr;
9729 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9730
9731 {
9732 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9733 {
9734 SI tmp_tmp;
9735 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9736 {
9737 USI opval = tmp_tmp;
9738 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9739 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9740 }
9741 if (EQSI (FLD (f_ccond), 0)) {
9742 if (NESI (tmp_tmp, 0)) {
9743 {
9744 USI opval = GET_H_SPR (((UINT) 272));
9745 sim_queue_pc_write (current_cpu, opval);
9746 written |= (1 << 5);
9747 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9748 }
9749 }
9750 } else {
9751 if (EQSI (tmp_tmp, 0)) {
9752 {
9753 USI opval = GET_H_SPR (((UINT) 272));
9754 sim_queue_pc_write (current_cpu, opval);
9755 written |= (1 << 5);
9756 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9757 }
9758 }
9759 }
9760 }
9761 }
9762
9763 abuf->written = written;
9764 return vpc;
9765 #undef FLD
9766 }
9767
9768 /* bcnolr: bcnolr$pack$hint_not_taken */
9769
9770 static SEM_PC
9771 SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9772 {
9773 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9775 int UNUSED written = 0;
9776 IADDR UNUSED pc = abuf->addr;
9777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9778
9779 {
9780 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9781 {
9782 SI tmp_tmp;
9783 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9784 {
9785 USI opval = tmp_tmp;
9786 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9787 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9788 }
9789 ((void) 0); /*nop*/
9790 }
9791 }
9792
9793 return vpc;
9794 #undef FLD
9795 }
9796
9797 /* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9798
9799 static SEM_PC
9800 SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9801 {
9802 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9803 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9804 int UNUSED written = 0;
9805 IADDR UNUSED pc = abuf->addr;
9806 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9807
9808 {
9809 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9810 {
9811 SI tmp_tmp;
9812 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9813 {
9814 USI opval = tmp_tmp;
9815 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9816 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9817 }
9818 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9819 if (EQSI (FLD (f_ccond), 0)) {
9820 if (NESI (tmp_tmp, 0)) {
9821 {
9822 USI opval = GET_H_SPR (((UINT) 272));
9823 sim_queue_pc_write (current_cpu, opval);
9824 written |= (1 << 6);
9825 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9826 }
9827 }
9828 } else {
9829 if (EQSI (tmp_tmp, 0)) {
9830 {
9831 USI opval = GET_H_SPR (((UINT) 272));
9832 sim_queue_pc_write (current_cpu, opval);
9833 written |= (1 << 6);
9834 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9835 }
9836 }
9837 }
9838 }
9839 }
9840 }
9841
9842 abuf->written = written;
9843 return vpc;
9844 #undef FLD
9845 }
9846
9847 /* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9848
9849 static SEM_PC
9850 SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9851 {
9852 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9853 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9854 int UNUSED written = 0;
9855 IADDR UNUSED pc = abuf->addr;
9856 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9857
9858 {
9859 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9860 {
9861 SI tmp_tmp;
9862 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9863 {
9864 USI opval = tmp_tmp;
9865 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9866 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9867 }
9868 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9869 if (EQSI (FLD (f_ccond), 0)) {
9870 if (NESI (tmp_tmp, 0)) {
9871 {
9872 USI opval = GET_H_SPR (((UINT) 272));
9873 sim_queue_pc_write (current_cpu, opval);
9874 written |= (1 << 6);
9875 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9876 }
9877 }
9878 } else {
9879 if (EQSI (tmp_tmp, 0)) {
9880 {
9881 USI opval = GET_H_SPR (((UINT) 272));
9882 sim_queue_pc_write (current_cpu, opval);
9883 written |= (1 << 6);
9884 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9885 }
9886 }
9887 }
9888 }
9889 }
9890 }
9891
9892 abuf->written = written;
9893 return vpc;
9894 #undef FLD
9895 }
9896
9897 /* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9898
9899 static SEM_PC
9900 SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9901 {
9902 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9904 int UNUSED written = 0;
9905 IADDR UNUSED pc = abuf->addr;
9906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9907
9908 {
9909 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9910 {
9911 SI tmp_tmp;
9912 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9913 {
9914 USI opval = tmp_tmp;
9915 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9916 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9917 }
9918 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))))) {
9919 if (EQSI (FLD (f_ccond), 0)) {
9920 if (NESI (tmp_tmp, 0)) {
9921 {
9922 USI opval = GET_H_SPR (((UINT) 272));
9923 sim_queue_pc_write (current_cpu, opval);
9924 written |= (1 << 6);
9925 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9926 }
9927 }
9928 } else {
9929 if (EQSI (tmp_tmp, 0)) {
9930 {
9931 USI opval = GET_H_SPR (((UINT) 272));
9932 sim_queue_pc_write (current_cpu, opval);
9933 written |= (1 << 6);
9934 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9935 }
9936 }
9937 }
9938 }
9939 }
9940 }
9941
9942 abuf->written = written;
9943 return vpc;
9944 #undef FLD
9945 }
9946
9947 /* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
9948
9949 static SEM_PC
9950 SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9951 {
9952 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9954 int UNUSED written = 0;
9955 IADDR UNUSED pc = abuf->addr;
9956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9957
9958 {
9959 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9960 {
9961 SI tmp_tmp;
9962 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9963 {
9964 USI opval = tmp_tmp;
9965 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9966 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9967 }
9968 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)))))) {
9969 if (EQSI (FLD (f_ccond), 0)) {
9970 if (NESI (tmp_tmp, 0)) {
9971 {
9972 USI opval = GET_H_SPR (((UINT) 272));
9973 sim_queue_pc_write (current_cpu, opval);
9974 written |= (1 << 6);
9975 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9976 }
9977 }
9978 } else {
9979 if (EQSI (tmp_tmp, 0)) {
9980 {
9981 USI opval = GET_H_SPR (((UINT) 272));
9982 sim_queue_pc_write (current_cpu, opval);
9983 written |= (1 << 6);
9984 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9985 }
9986 }
9987 }
9988 }
9989 }
9990 }
9991
9992 abuf->written = written;
9993 return vpc;
9994 #undef FLD
9995 }
9996
9997 /* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
9998
9999 static SEM_PC
10000 SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10001 {
10002 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10004 int UNUSED written = 0;
10005 IADDR UNUSED pc = abuf->addr;
10006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10007
10008 {
10009 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10010 {
10011 SI tmp_tmp;
10012 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10013 {
10014 USI opval = tmp_tmp;
10015 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10016 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10017 }
10018 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)))) {
10019 if (EQSI (FLD (f_ccond), 0)) {
10020 if (NESI (tmp_tmp, 0)) {
10021 {
10022 USI opval = GET_H_SPR (((UINT) 272));
10023 sim_queue_pc_write (current_cpu, opval);
10024 written |= (1 << 6);
10025 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10026 }
10027 }
10028 } else {
10029 if (EQSI (tmp_tmp, 0)) {
10030 {
10031 USI opval = GET_H_SPR (((UINT) 272));
10032 sim_queue_pc_write (current_cpu, opval);
10033 written |= (1 << 6);
10034 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10035 }
10036 }
10037 }
10038 }
10039 }
10040 }
10041
10042 abuf->written = written;
10043 return vpc;
10044 #undef FLD
10045 }
10046
10047 /* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10048
10049 static SEM_PC
10050 SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10051 {
10052 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10054 int UNUSED written = 0;
10055 IADDR UNUSED pc = abuf->addr;
10056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10057
10058 {
10059 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10060 {
10061 SI tmp_tmp;
10062 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10063 {
10064 USI opval = tmp_tmp;
10065 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10066 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10067 }
10068 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))))) {
10069 if (EQSI (FLD (f_ccond), 0)) {
10070 if (NESI (tmp_tmp, 0)) {
10071 {
10072 USI opval = GET_H_SPR (((UINT) 272));
10073 sim_queue_pc_write (current_cpu, opval);
10074 written |= (1 << 6);
10075 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10076 }
10077 }
10078 } else {
10079 if (EQSI (tmp_tmp, 0)) {
10080 {
10081 USI opval = GET_H_SPR (((UINT) 272));
10082 sim_queue_pc_write (current_cpu, opval);
10083 written |= (1 << 6);
10084 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10085 }
10086 }
10087 }
10088 }
10089 }
10090 }
10091
10092 abuf->written = written;
10093 return vpc;
10094 #undef FLD
10095 }
10096
10097 /* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10098
10099 static SEM_PC
10100 SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10101 {
10102 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10104 int UNUSED written = 0;
10105 IADDR UNUSED pc = abuf->addr;
10106 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10107
10108 {
10109 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10110 {
10111 SI tmp_tmp;
10112 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10113 {
10114 USI opval = tmp_tmp;
10115 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10116 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10117 }
10118 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10119 if (EQSI (FLD (f_ccond), 0)) {
10120 if (NESI (tmp_tmp, 0)) {
10121 {
10122 USI opval = GET_H_SPR (((UINT) 272));
10123 sim_queue_pc_write (current_cpu, opval);
10124 written |= (1 << 6);
10125 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10126 }
10127 }
10128 } else {
10129 if (EQSI (tmp_tmp, 0)) {
10130 {
10131 USI opval = GET_H_SPR (((UINT) 272));
10132 sim_queue_pc_write (current_cpu, opval);
10133 written |= (1 << 6);
10134 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10135 }
10136 }
10137 }
10138 }
10139 }
10140 }
10141
10142 abuf->written = written;
10143 return vpc;
10144 #undef FLD
10145 }
10146
10147 /* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10148
10149 static SEM_PC
10150 SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10151 {
10152 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10154 int UNUSED written = 0;
10155 IADDR UNUSED pc = abuf->addr;
10156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10157
10158 {
10159 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10160 {
10161 SI tmp_tmp;
10162 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10163 {
10164 USI opval = tmp_tmp;
10165 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10166 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10167 }
10168 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))))) {
10169 if (EQSI (FLD (f_ccond), 0)) {
10170 if (NESI (tmp_tmp, 0)) {
10171 {
10172 USI opval = GET_H_SPR (((UINT) 272));
10173 sim_queue_pc_write (current_cpu, opval);
10174 written |= (1 << 6);
10175 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10176 }
10177 }
10178 } else {
10179 if (EQSI (tmp_tmp, 0)) {
10180 {
10181 USI opval = GET_H_SPR (((UINT) 272));
10182 sim_queue_pc_write (current_cpu, opval);
10183 written |= (1 << 6);
10184 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10185 }
10186 }
10187 }
10188 }
10189 }
10190 }
10191
10192 abuf->written = written;
10193 return vpc;
10194 #undef FLD
10195 }
10196
10197 /* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10198
10199 static SEM_PC
10200 SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10201 {
10202 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10203 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10204 int UNUSED written = 0;
10205 IADDR UNUSED pc = abuf->addr;
10206 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10207
10208 {
10209 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10210 {
10211 SI tmp_tmp;
10212 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10213 {
10214 USI opval = tmp_tmp;
10215 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10216 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10217 }
10218 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10219 if (EQSI (FLD (f_ccond), 0)) {
10220 if (NESI (tmp_tmp, 0)) {
10221 {
10222 USI opval = GET_H_SPR (((UINT) 272));
10223 sim_queue_pc_write (current_cpu, opval);
10224 written |= (1 << 6);
10225 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10226 }
10227 }
10228 } else {
10229 if (EQSI (tmp_tmp, 0)) {
10230 {
10231 USI opval = GET_H_SPR (((UINT) 272));
10232 sim_queue_pc_write (current_cpu, opval);
10233 written |= (1 << 6);
10234 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10235 }
10236 }
10237 }
10238 }
10239 }
10240 }
10241
10242 abuf->written = written;
10243 return vpc;
10244 #undef FLD
10245 }
10246
10247 /* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10248
10249 static SEM_PC
10250 SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10251 {
10252 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10253 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10254 int UNUSED written = 0;
10255 IADDR UNUSED pc = abuf->addr;
10256 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10257
10258 {
10259 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10260 {
10261 SI tmp_tmp;
10262 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10263 {
10264 USI opval = tmp_tmp;
10265 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10266 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10267 }
10268 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10269 if (EQSI (FLD (f_ccond), 0)) {
10270 if (NESI (tmp_tmp, 0)) {
10271 {
10272 USI opval = GET_H_SPR (((UINT) 272));
10273 sim_queue_pc_write (current_cpu, opval);
10274 written |= (1 << 6);
10275 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10276 }
10277 }
10278 } else {
10279 if (EQSI (tmp_tmp, 0)) {
10280 {
10281 USI opval = GET_H_SPR (((UINT) 272));
10282 sim_queue_pc_write (current_cpu, opval);
10283 written |= (1 << 6);
10284 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10285 }
10286 }
10287 }
10288 }
10289 }
10290 }
10291
10292 abuf->written = written;
10293 return vpc;
10294 #undef FLD
10295 }
10296
10297 /* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10298
10299 static SEM_PC
10300 SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10301 {
10302 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10304 int UNUSED written = 0;
10305 IADDR UNUSED pc = abuf->addr;
10306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10307
10308 {
10309 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10310 {
10311 SI tmp_tmp;
10312 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10313 {
10314 USI opval = tmp_tmp;
10315 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10316 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10317 }
10318 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10319 if (EQSI (FLD (f_ccond), 0)) {
10320 if (NESI (tmp_tmp, 0)) {
10321 {
10322 USI opval = GET_H_SPR (((UINT) 272));
10323 sim_queue_pc_write (current_cpu, opval);
10324 written |= (1 << 6);
10325 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10326 }
10327 }
10328 } else {
10329 if (EQSI (tmp_tmp, 0)) {
10330 {
10331 USI opval = GET_H_SPR (((UINT) 272));
10332 sim_queue_pc_write (current_cpu, opval);
10333 written |= (1 << 6);
10334 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10335 }
10336 }
10337 }
10338 }
10339 }
10340 }
10341
10342 abuf->written = written;
10343 return vpc;
10344 #undef FLD
10345 }
10346
10347 /* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10348
10349 static SEM_PC
10350 SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10351 {
10352 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10353 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10354 int UNUSED written = 0;
10355 IADDR UNUSED pc = abuf->addr;
10356 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10357
10358 {
10359 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10360 {
10361 SI tmp_tmp;
10362 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10363 {
10364 USI opval = tmp_tmp;
10365 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10366 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10367 }
10368 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10369 if (EQSI (FLD (f_ccond), 0)) {
10370 if (NESI (tmp_tmp, 0)) {
10371 {
10372 USI opval = GET_H_SPR (((UINT) 272));
10373 sim_queue_pc_write (current_cpu, opval);
10374 written |= (1 << 6);
10375 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10376 }
10377 }
10378 } else {
10379 if (EQSI (tmp_tmp, 0)) {
10380 {
10381 USI opval = GET_H_SPR (((UINT) 272));
10382 sim_queue_pc_write (current_cpu, opval);
10383 written |= (1 << 6);
10384 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10385 }
10386 }
10387 }
10388 }
10389 }
10390 }
10391
10392 abuf->written = written;
10393 return vpc;
10394 #undef FLD
10395 }
10396
10397 /* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10398
10399 static SEM_PC
10400 SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10401 {
10402 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10404 int UNUSED written = 0;
10405 IADDR UNUSED pc = abuf->addr;
10406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10407
10408 {
10409 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10410 {
10411 SI tmp_tmp;
10412 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10413 {
10414 USI opval = tmp_tmp;
10415 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10416 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10417 }
10418 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10419 if (EQSI (FLD (f_ccond), 0)) {
10420 if (NESI (tmp_tmp, 0)) {
10421 {
10422 USI opval = GET_H_SPR (((UINT) 272));
10423 sim_queue_pc_write (current_cpu, opval);
10424 written |= (1 << 6);
10425 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10426 }
10427 }
10428 } else {
10429 if (EQSI (tmp_tmp, 0)) {
10430 {
10431 USI opval = GET_H_SPR (((UINT) 272));
10432 sim_queue_pc_write (current_cpu, opval);
10433 written |= (1 << 6);
10434 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10435 }
10436 }
10437 }
10438 }
10439 }
10440 }
10441
10442 abuf->written = written;
10443 return vpc;
10444 #undef FLD
10445 }
10446
10447 /* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10448
10449 static SEM_PC
10450 SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10451 {
10452 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10454 int UNUSED written = 0;
10455 IADDR UNUSED pc = abuf->addr;
10456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10457
10458 {
10459 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10460 {
10461 SI tmp_tmp;
10462 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10463 {
10464 USI opval = tmp_tmp;
10465 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10466 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10467 }
10468 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10469 if (EQSI (FLD (f_ccond), 0)) {
10470 if (NESI (tmp_tmp, 0)) {
10471 {
10472 USI opval = GET_H_SPR (((UINT) 272));
10473 sim_queue_pc_write (current_cpu, opval);
10474 written |= (1 << 6);
10475 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10476 }
10477 }
10478 } else {
10479 if (EQSI (tmp_tmp, 0)) {
10480 {
10481 USI opval = GET_H_SPR (((UINT) 272));
10482 sim_queue_pc_write (current_cpu, opval);
10483 written |= (1 << 6);
10484 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10485 }
10486 }
10487 }
10488 }
10489 }
10490 }
10491
10492 abuf->written = written;
10493 return vpc;
10494 #undef FLD
10495 }
10496
10497 /* fcbralr: fcbralr$pack $ccond$hint_taken */
10498
10499 static SEM_PC
10500 SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10501 {
10502 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10504 int UNUSED written = 0;
10505 IADDR UNUSED pc = abuf->addr;
10506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10507
10508 {
10509 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10510 {
10511 SI tmp_tmp;
10512 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10513 {
10514 USI opval = tmp_tmp;
10515 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10516 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10517 }
10518 if (EQSI (FLD (f_ccond), 0)) {
10519 if (NESI (tmp_tmp, 0)) {
10520 {
10521 USI opval = GET_H_SPR (((UINT) 272));
10522 sim_queue_pc_write (current_cpu, opval);
10523 written |= (1 << 5);
10524 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10525 }
10526 }
10527 } else {
10528 if (EQSI (tmp_tmp, 0)) {
10529 {
10530 USI opval = GET_H_SPR (((UINT) 272));
10531 sim_queue_pc_write (current_cpu, opval);
10532 written |= (1 << 5);
10533 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10534 }
10535 }
10536 }
10537 }
10538 }
10539
10540 abuf->written = written;
10541 return vpc;
10542 #undef FLD
10543 }
10544
10545 /* fcbnolr: fcbnolr$pack$hint_not_taken */
10546
10547 static SEM_PC
10548 SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10549 {
10550 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10552 int UNUSED written = 0;
10553 IADDR UNUSED pc = abuf->addr;
10554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10555
10556 {
10557 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10558 {
10559 SI tmp_tmp;
10560 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10561 {
10562 USI opval = tmp_tmp;
10563 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10564 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10565 }
10566 ((void) 0); /*nop*/
10567 }
10568 }
10569
10570 return vpc;
10571 #undef FLD
10572 }
10573
10574 /* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10575
10576 static SEM_PC
10577 SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10578 {
10579 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10581 int UNUSED written = 0;
10582 IADDR UNUSED pc = abuf->addr;
10583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10584
10585 {
10586 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10587 {
10588 SI tmp_tmp;
10589 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10590 {
10591 USI opval = tmp_tmp;
10592 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10593 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10594 }
10595 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10596 if (EQSI (FLD (f_ccond), 0)) {
10597 if (NESI (tmp_tmp, 0)) {
10598 {
10599 USI opval = GET_H_SPR (((UINT) 272));
10600 sim_queue_pc_write (current_cpu, opval);
10601 written |= (1 << 6);
10602 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10603 }
10604 }
10605 } else {
10606 if (EQSI (tmp_tmp, 0)) {
10607 {
10608 USI opval = GET_H_SPR (((UINT) 272));
10609 sim_queue_pc_write (current_cpu, opval);
10610 written |= (1 << 6);
10611 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10612 }
10613 }
10614 }
10615 }
10616 }
10617 }
10618
10619 abuf->written = written;
10620 return vpc;
10621 #undef FLD
10622 }
10623
10624 /* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10625
10626 static SEM_PC
10627 SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10628 {
10629 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10630 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10631 int UNUSED written = 0;
10632 IADDR UNUSED pc = abuf->addr;
10633 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10634
10635 {
10636 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10637 {
10638 SI tmp_tmp;
10639 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10640 {
10641 USI opval = tmp_tmp;
10642 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10643 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10644 }
10645 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))))) {
10646 if (EQSI (FLD (f_ccond), 0)) {
10647 if (NESI (tmp_tmp, 0)) {
10648 {
10649 USI opval = GET_H_SPR (((UINT) 272));
10650 sim_queue_pc_write (current_cpu, opval);
10651 written |= (1 << 6);
10652 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10653 }
10654 }
10655 } else {
10656 if (EQSI (tmp_tmp, 0)) {
10657 {
10658 USI opval = GET_H_SPR (((UINT) 272));
10659 sim_queue_pc_write (current_cpu, opval);
10660 written |= (1 << 6);
10661 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10662 }
10663 }
10664 }
10665 }
10666 }
10667 }
10668
10669 abuf->written = written;
10670 return vpc;
10671 #undef FLD
10672 }
10673
10674 /* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10675
10676 static SEM_PC
10677 SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10678 {
10679 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10681 int UNUSED written = 0;
10682 IADDR UNUSED pc = abuf->addr;
10683 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10684
10685 {
10686 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10687 {
10688 SI tmp_tmp;
10689 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10690 {
10691 USI opval = tmp_tmp;
10692 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10693 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10694 }
10695 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)))) {
10696 if (EQSI (FLD (f_ccond), 0)) {
10697 if (NESI (tmp_tmp, 0)) {
10698 {
10699 USI opval = GET_H_SPR (((UINT) 272));
10700 sim_queue_pc_write (current_cpu, opval);
10701 written |= (1 << 6);
10702 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10703 }
10704 }
10705 } else {
10706 if (EQSI (tmp_tmp, 0)) {
10707 {
10708 USI opval = GET_H_SPR (((UINT) 272));
10709 sim_queue_pc_write (current_cpu, opval);
10710 written |= (1 << 6);
10711 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10712 }
10713 }
10714 }
10715 }
10716 }
10717 }
10718
10719 abuf->written = written;
10720 return vpc;
10721 #undef FLD
10722 }
10723
10724 /* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10725
10726 static SEM_PC
10727 SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10728 {
10729 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10731 int UNUSED written = 0;
10732 IADDR UNUSED pc = abuf->addr;
10733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10734
10735 {
10736 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10737 {
10738 SI tmp_tmp;
10739 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10740 {
10741 USI opval = tmp_tmp;
10742 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10743 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10744 }
10745 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10746 if (EQSI (FLD (f_ccond), 0)) {
10747 if (NESI (tmp_tmp, 0)) {
10748 {
10749 USI opval = GET_H_SPR (((UINT) 272));
10750 sim_queue_pc_write (current_cpu, opval);
10751 written |= (1 << 6);
10752 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10753 }
10754 }
10755 } else {
10756 if (EQSI (tmp_tmp, 0)) {
10757 {
10758 USI opval = GET_H_SPR (((UINT) 272));
10759 sim_queue_pc_write (current_cpu, opval);
10760 written |= (1 << 6);
10761 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10762 }
10763 }
10764 }
10765 }
10766 }
10767 }
10768
10769 abuf->written = written;
10770 return vpc;
10771 #undef FLD
10772 }
10773
10774 /* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10775
10776 static SEM_PC
10777 SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10778 {
10779 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10781 int UNUSED written = 0;
10782 IADDR UNUSED pc = abuf->addr;
10783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10784
10785 {
10786 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10787 {
10788 SI tmp_tmp;
10789 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10790 {
10791 USI opval = tmp_tmp;
10792 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10793 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10794 }
10795 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10796 if (EQSI (FLD (f_ccond), 0)) {
10797 if (NESI (tmp_tmp, 0)) {
10798 {
10799 USI opval = GET_H_SPR (((UINT) 272));
10800 sim_queue_pc_write (current_cpu, opval);
10801 written |= (1 << 6);
10802 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10803 }
10804 }
10805 } else {
10806 if (EQSI (tmp_tmp, 0)) {
10807 {
10808 USI opval = GET_H_SPR (((UINT) 272));
10809 sim_queue_pc_write (current_cpu, opval);
10810 written |= (1 << 6);
10811 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10812 }
10813 }
10814 }
10815 }
10816 }
10817 }
10818
10819 abuf->written = written;
10820 return vpc;
10821 #undef FLD
10822 }
10823
10824 /* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10825
10826 static SEM_PC
10827 SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10828 {
10829 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10830 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10831 int UNUSED written = 0;
10832 IADDR UNUSED pc = abuf->addr;
10833 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10834
10835 {
10836 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10837 {
10838 SI tmp_tmp;
10839 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10840 {
10841 USI opval = tmp_tmp;
10842 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10843 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10844 }
10845 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)))) {
10846 if (EQSI (FLD (f_ccond), 0)) {
10847 if (NESI (tmp_tmp, 0)) {
10848 {
10849 USI opval = GET_H_SPR (((UINT) 272));
10850 sim_queue_pc_write (current_cpu, opval);
10851 written |= (1 << 6);
10852 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10853 }
10854 }
10855 } else {
10856 if (EQSI (tmp_tmp, 0)) {
10857 {
10858 USI opval = GET_H_SPR (((UINT) 272));
10859 sim_queue_pc_write (current_cpu, opval);
10860 written |= (1 << 6);
10861 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10862 }
10863 }
10864 }
10865 }
10866 }
10867 }
10868
10869 abuf->written = written;
10870 return vpc;
10871 #undef FLD
10872 }
10873
10874 /* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10875
10876 static SEM_PC
10877 SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10878 {
10879 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10881 int UNUSED written = 0;
10882 IADDR UNUSED pc = abuf->addr;
10883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10884
10885 {
10886 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10887 {
10888 SI tmp_tmp;
10889 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10890 {
10891 USI opval = tmp_tmp;
10892 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10893 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10894 }
10895 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10896 if (EQSI (FLD (f_ccond), 0)) {
10897 if (NESI (tmp_tmp, 0)) {
10898 {
10899 USI opval = GET_H_SPR (((UINT) 272));
10900 sim_queue_pc_write (current_cpu, opval);
10901 written |= (1 << 6);
10902 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10903 }
10904 }
10905 } else {
10906 if (EQSI (tmp_tmp, 0)) {
10907 {
10908 USI opval = GET_H_SPR (((UINT) 272));
10909 sim_queue_pc_write (current_cpu, opval);
10910 written |= (1 << 6);
10911 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10912 }
10913 }
10914 }
10915 }
10916 }
10917 }
10918
10919 abuf->written = written;
10920 return vpc;
10921 #undef FLD
10922 }
10923
10924 /* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
10925
10926 static SEM_PC
10927 SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10928 {
10929 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10931 int UNUSED written = 0;
10932 IADDR UNUSED pc = abuf->addr;
10933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10934
10935 {
10936 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10937 {
10938 SI tmp_tmp;
10939 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10940 {
10941 USI opval = tmp_tmp;
10942 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10943 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10944 }
10945 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))))) {
10946 if (EQSI (FLD (f_ccond), 0)) {
10947 if (NESI (tmp_tmp, 0)) {
10948 {
10949 USI opval = GET_H_SPR (((UINT) 272));
10950 sim_queue_pc_write (current_cpu, opval);
10951 written |= (1 << 6);
10952 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10953 }
10954 }
10955 } else {
10956 if (EQSI (tmp_tmp, 0)) {
10957 {
10958 USI opval = GET_H_SPR (((UINT) 272));
10959 sim_queue_pc_write (current_cpu, opval);
10960 written |= (1 << 6);
10961 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10962 }
10963 }
10964 }
10965 }
10966 }
10967 }
10968
10969 abuf->written = written;
10970 return vpc;
10971 #undef FLD
10972 }
10973
10974 /* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
10975
10976 static SEM_PC
10977 SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10978 {
10979 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10981 int UNUSED written = 0;
10982 IADDR UNUSED pc = abuf->addr;
10983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10984
10985 {
10986 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10987 {
10988 SI tmp_tmp;
10989 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10990 {
10991 USI opval = tmp_tmp;
10992 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10993 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10994 }
10995 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10996 if (EQSI (FLD (f_ccond), 0)) {
10997 if (NESI (tmp_tmp, 0)) {
10998 {
10999 USI opval = GET_H_SPR (((UINT) 272));
11000 sim_queue_pc_write (current_cpu, opval);
11001 written |= (1 << 6);
11002 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11003 }
11004 }
11005 } else {
11006 if (EQSI (tmp_tmp, 0)) {
11007 {
11008 USI opval = GET_H_SPR (((UINT) 272));
11009 sim_queue_pc_write (current_cpu, opval);
11010 written |= (1 << 6);
11011 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11012 }
11013 }
11014 }
11015 }
11016 }
11017 }
11018
11019 abuf->written = written;
11020 return vpc;
11021 #undef FLD
11022 }
11023
11024 /* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11025
11026 static SEM_PC
11027 SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11028 {
11029 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11031 int UNUSED written = 0;
11032 IADDR UNUSED pc = abuf->addr;
11033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11034
11035 {
11036 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11037 {
11038 SI tmp_tmp;
11039 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11040 {
11041 USI opval = tmp_tmp;
11042 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11043 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11044 }
11045 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)))) {
11046 if (EQSI (FLD (f_ccond), 0)) {
11047 if (NESI (tmp_tmp, 0)) {
11048 {
11049 USI opval = GET_H_SPR (((UINT) 272));
11050 sim_queue_pc_write (current_cpu, opval);
11051 written |= (1 << 6);
11052 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11053 }
11054 }
11055 } else {
11056 if (EQSI (tmp_tmp, 0)) {
11057 {
11058 USI opval = GET_H_SPR (((UINT) 272));
11059 sim_queue_pc_write (current_cpu, opval);
11060 written |= (1 << 6);
11061 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11062 }
11063 }
11064 }
11065 }
11066 }
11067 }
11068
11069 abuf->written = written;
11070 return vpc;
11071 #undef FLD
11072 }
11073
11074 /* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11075
11076 static SEM_PC
11077 SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11078 {
11079 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11080 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11081 int UNUSED written = 0;
11082 IADDR UNUSED pc = abuf->addr;
11083 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11084
11085 {
11086 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11087 {
11088 SI tmp_tmp;
11089 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11090 {
11091 USI opval = tmp_tmp;
11092 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11093 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11094 }
11095 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11096 if (EQSI (FLD (f_ccond), 0)) {
11097 if (NESI (tmp_tmp, 0)) {
11098 {
11099 USI opval = GET_H_SPR (((UINT) 272));
11100 sim_queue_pc_write (current_cpu, opval);
11101 written |= (1 << 6);
11102 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11103 }
11104 }
11105 } else {
11106 if (EQSI (tmp_tmp, 0)) {
11107 {
11108 USI opval = GET_H_SPR (((UINT) 272));
11109 sim_queue_pc_write (current_cpu, opval);
11110 written |= (1 << 6);
11111 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11112 }
11113 }
11114 }
11115 }
11116 }
11117 }
11118
11119 abuf->written = written;
11120 return vpc;
11121 #undef FLD
11122 }
11123
11124 /* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11125
11126 static SEM_PC
11127 SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11128 {
11129 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11130 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11131 int UNUSED written = 0;
11132 IADDR UNUSED pc = abuf->addr;
11133 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11134
11135 {
11136 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11137 {
11138 SI tmp_tmp;
11139 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11140 {
11141 USI opval = tmp_tmp;
11142 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11143 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11144 }
11145 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))))) {
11146 if (EQSI (FLD (f_ccond), 0)) {
11147 if (NESI (tmp_tmp, 0)) {
11148 {
11149 USI opval = GET_H_SPR (((UINT) 272));
11150 sim_queue_pc_write (current_cpu, opval);
11151 written |= (1 << 6);
11152 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11153 }
11154 }
11155 } else {
11156 if (EQSI (tmp_tmp, 0)) {
11157 {
11158 USI opval = GET_H_SPR (((UINT) 272));
11159 sim_queue_pc_write (current_cpu, opval);
11160 written |= (1 << 6);
11161 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11162 }
11163 }
11164 }
11165 }
11166 }
11167 }
11168
11169 abuf->written = written;
11170 return vpc;
11171 #undef FLD
11172 }
11173
11174 /* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11175
11176 static SEM_PC
11177 SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11178 {
11179 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11181 int UNUSED written = 0;
11182 IADDR UNUSED pc = abuf->addr;
11183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11184
11185 {
11186 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11187 {
11188 SI tmp_tmp;
11189 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11190 {
11191 USI opval = tmp_tmp;
11192 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11193 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11194 }
11195 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11196 if (EQSI (FLD (f_ccond), 0)) {
11197 if (NESI (tmp_tmp, 0)) {
11198 {
11199 USI opval = GET_H_SPR (((UINT) 272));
11200 sim_queue_pc_write (current_cpu, opval);
11201 written |= (1 << 6);
11202 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11203 }
11204 }
11205 } else {
11206 if (EQSI (tmp_tmp, 0)) {
11207 {
11208 USI opval = GET_H_SPR (((UINT) 272));
11209 sim_queue_pc_write (current_cpu, opval);
11210 written |= (1 << 6);
11211 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11212 }
11213 }
11214 }
11215 }
11216 }
11217 }
11218
11219 abuf->written = written;
11220 return vpc;
11221 #undef FLD
11222 }
11223
11224 /* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11225
11226 static SEM_PC
11227 SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11228 {
11229 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11231 int UNUSED written = 0;
11232 IADDR UNUSED pc = abuf->addr;
11233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11234
11235 {
11236 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11237 {
11238 SI tmp_tmp;
11239 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11240 {
11241 USI opval = tmp_tmp;
11242 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11243 TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11244 }
11245 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))))) {
11246 if (EQSI (FLD (f_ccond), 0)) {
11247 if (NESI (tmp_tmp, 0)) {
11248 {
11249 USI opval = GET_H_SPR (((UINT) 272));
11250 sim_queue_pc_write (current_cpu, opval);
11251 written |= (1 << 6);
11252 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11253 }
11254 }
11255 } else {
11256 if (EQSI (tmp_tmp, 0)) {
11257 {
11258 USI opval = GET_H_SPR (((UINT) 272));
11259 sim_queue_pc_write (current_cpu, opval);
11260 written |= (1 << 6);
11261 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11262 }
11263 }
11264 }
11265 }
11266 }
11267 }
11268
11269 abuf->written = written;
11270 return vpc;
11271 #undef FLD
11272 }
11273
11274 /* jmpl: jmpl$pack @($GRi,$GRj) */
11275
11276 static SEM_PC
11277 SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11278 {
11279 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11281 int UNUSED written = 0;
11282 IADDR UNUSED pc = abuf->addr;
11283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11284
11285 {
11286 if (EQSI (FLD (f_LI), 1)) {
11287 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11288 }
11289 {
11290 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11291 sim_queue_pc_write (current_cpu, opval);
11292 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11293 }
11294 frvbf_model_branch (current_cpu, pc, 2);
11295 }
11296
11297 return vpc;
11298 #undef FLD
11299 }
11300
11301 /* calll: calll$pack $callann($GRi,$GRj) */
11302
11303 static SEM_PC
11304 SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11305 {
11306 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11308 int UNUSED written = 0;
11309 IADDR UNUSED pc = abuf->addr;
11310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11311
11312 {
11313 if (EQSI (FLD (f_LI), 1)) {
11314 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11315 }
11316 {
11317 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11318 sim_queue_pc_write (current_cpu, opval);
11319 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11320 }
11321 frvbf_model_branch (current_cpu, pc, 2);
11322 }
11323
11324 return vpc;
11325 #undef FLD
11326 }
11327
11328 /* jmpil: jmpil$pack @($GRi,$s12) */
11329
11330 static SEM_PC
11331 SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11332 {
11333 #define FLD(f) abuf->fields.sfmt_jmpil.f
11334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11335 int UNUSED written = 0;
11336 IADDR UNUSED pc = abuf->addr;
11337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11338
11339 {
11340 if (EQSI (FLD (f_LI), 1)) {
11341 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11342 }
11343 {
11344 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11345 sim_queue_pc_write (current_cpu, opval);
11346 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11347 }
11348 frvbf_model_branch (current_cpu, pc, 2);
11349 }
11350
11351 return vpc;
11352 #undef FLD
11353 }
11354
11355 /* callil: callil$pack @($GRi,$s12) */
11356
11357 static SEM_PC
11358 SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11359 {
11360 #define FLD(f) abuf->fields.sfmt_jmpil.f
11361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11362 int UNUSED written = 0;
11363 IADDR UNUSED pc = abuf->addr;
11364 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11365
11366 {
11367 if (EQSI (FLD (f_LI), 1)) {
11368 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11369 }
11370 {
11371 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11372 sim_queue_pc_write (current_cpu, opval);
11373 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11374 }
11375 frvbf_model_branch (current_cpu, pc, 2);
11376 }
11377
11378 return vpc;
11379 #undef FLD
11380 }
11381
11382 /* call: call$pack $label24 */
11383
11384 static SEM_PC
11385 SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11386 {
11387 #define FLD(f) abuf->fields.sfmt_call.f
11388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11389 int UNUSED written = 0;
11390 IADDR UNUSED pc = abuf->addr;
11391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11392
11393 {
11394 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11395 {
11396 USI opval = FLD (i_label24);
11397 sim_queue_pc_write (current_cpu, opval);
11398 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11399 }
11400 frvbf_model_branch (current_cpu, pc, 2);
11401 }
11402
11403 return vpc;
11404 #undef FLD
11405 }
11406
11407 /* rett: rett$pack $debug */
11408
11409 static SEM_PC
11410 SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11411 {
11412 #define FLD(f) abuf->fields.sfmt_rett.f
11413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11414 int UNUSED written = 0;
11415 IADDR UNUSED pc = abuf->addr;
11416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11417
11418 {
11419 {
11420 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11421 sim_queue_pc_write (current_cpu, opval);
11422 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11423 }
11424 frvbf_model_branch (current_cpu, pc, 2);
11425 }
11426
11427 return vpc;
11428 #undef FLD
11429 }
11430
11431 /* rei: rei$pack $eir */
11432
11433 static SEM_PC
11434 SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11435 {
11436 #define FLD(f) abuf->fields.sfmt_empty.f
11437 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11438 int UNUSED written = 0;
11439 IADDR UNUSED pc = abuf->addr;
11440 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11441
11442 ((void) 0); /*nop*/
11443
11444 return vpc;
11445 #undef FLD
11446 }
11447
11448 /* tra: tra$pack $GRi,$GRj */
11449
11450 static SEM_PC
11451 SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11452 {
11453 #define FLD(f) abuf->fields.sfmt_ftne.f
11454 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11455 int UNUSED written = 0;
11456 IADDR UNUSED pc = abuf->addr;
11457 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11458
11459 {
11460 ; /*clobber*/
11461 ; /*clobber*/
11462 ; /*clobber*/
11463 ; /*clobber*/
11464 if (NEBI (CPU (h_psr_esr), 0)) {
11465 {
11466 ; /*clobber*/
11467 ; /*clobber*/
11468 ; /*clobber*/
11469 ; /*clobber*/
11470 }
11471 }
11472 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11473 }
11474
11475 abuf->written = written;
11476 return vpc;
11477 #undef FLD
11478 }
11479
11480 /* tno: tno$pack */
11481
11482 static SEM_PC
11483 SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11484 {
11485 #define FLD(f) abuf->fields.sfmt_empty.f
11486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11487 int UNUSED written = 0;
11488 IADDR UNUSED pc = abuf->addr;
11489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11490
11491 ((void) 0); /*nop*/
11492
11493 return vpc;
11494 #undef FLD
11495 }
11496
11497 /* teq: teq$pack $ICCi_2,$GRi,$GRj */
11498
11499 static SEM_PC
11500 SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11501 {
11502 #define FLD(f) abuf->fields.sfmt_teq.f
11503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11504 int UNUSED written = 0;
11505 IADDR UNUSED pc = abuf->addr;
11506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11507
11508 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11509 {
11510 ; /*clobber*/
11511 ; /*clobber*/
11512 ; /*clobber*/
11513 ; /*clobber*/
11514 if (NEBI (CPU (h_psr_esr), 0)) {
11515 {
11516 ; /*clobber*/
11517 ; /*clobber*/
11518 ; /*clobber*/
11519 ; /*clobber*/
11520 }
11521 }
11522 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11523 }
11524 }
11525
11526 abuf->written = written;
11527 return vpc;
11528 #undef FLD
11529 }
11530
11531 /* tne: tne$pack $ICCi_2,$GRi,$GRj */
11532
11533 static SEM_PC
11534 SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11535 {
11536 #define FLD(f) abuf->fields.sfmt_teq.f
11537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11538 int UNUSED written = 0;
11539 IADDR UNUSED pc = abuf->addr;
11540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11541
11542 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11543 {
11544 ; /*clobber*/
11545 ; /*clobber*/
11546 ; /*clobber*/
11547 ; /*clobber*/
11548 if (NEBI (CPU (h_psr_esr), 0)) {
11549 {
11550 ; /*clobber*/
11551 ; /*clobber*/
11552 ; /*clobber*/
11553 ; /*clobber*/
11554 }
11555 }
11556 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11557 }
11558 }
11559
11560 abuf->written = written;
11561 return vpc;
11562 #undef FLD
11563 }
11564
11565 /* tle: tle$pack $ICCi_2,$GRi,$GRj */
11566
11567 static SEM_PC
11568 SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11569 {
11570 #define FLD(f) abuf->fields.sfmt_teq.f
11571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11572 int UNUSED written = 0;
11573 IADDR UNUSED pc = abuf->addr;
11574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11575
11576 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))))) {
11577 {
11578 ; /*clobber*/
11579 ; /*clobber*/
11580 ; /*clobber*/
11581 ; /*clobber*/
11582 if (NEBI (CPU (h_psr_esr), 0)) {
11583 {
11584 ; /*clobber*/
11585 ; /*clobber*/
11586 ; /*clobber*/
11587 ; /*clobber*/
11588 }
11589 }
11590 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11591 }
11592 }
11593
11594 abuf->written = written;
11595 return vpc;
11596 #undef FLD
11597 }
11598
11599 /* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11600
11601 static SEM_PC
11602 SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11603 {
11604 #define FLD(f) abuf->fields.sfmt_teq.f
11605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11606 int UNUSED written = 0;
11607 IADDR UNUSED pc = abuf->addr;
11608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11609
11610 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)))))) {
11611 {
11612 ; /*clobber*/
11613 ; /*clobber*/
11614 ; /*clobber*/
11615 ; /*clobber*/
11616 if (NEBI (CPU (h_psr_esr), 0)) {
11617 {
11618 ; /*clobber*/
11619 ; /*clobber*/
11620 ; /*clobber*/
11621 ; /*clobber*/
11622 }
11623 }
11624 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11625 }
11626 }
11627
11628 abuf->written = written;
11629 return vpc;
11630 #undef FLD
11631 }
11632
11633 /* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11634
11635 static SEM_PC
11636 SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11637 {
11638 #define FLD(f) abuf->fields.sfmt_teq.f
11639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11640 int UNUSED written = 0;
11641 IADDR UNUSED pc = abuf->addr;
11642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11643
11644 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)))) {
11645 {
11646 ; /*clobber*/
11647 ; /*clobber*/
11648 ; /*clobber*/
11649 ; /*clobber*/
11650 if (NEBI (CPU (h_psr_esr), 0)) {
11651 {
11652 ; /*clobber*/
11653 ; /*clobber*/
11654 ; /*clobber*/
11655 ; /*clobber*/
11656 }
11657 }
11658 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11659 }
11660 }
11661
11662 abuf->written = written;
11663 return vpc;
11664 #undef FLD
11665 }
11666
11667 /* tge: tge$pack $ICCi_2,$GRi,$GRj */
11668
11669 static SEM_PC
11670 SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11671 {
11672 #define FLD(f) abuf->fields.sfmt_teq.f
11673 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11674 int UNUSED written = 0;
11675 IADDR UNUSED pc = abuf->addr;
11676 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11677
11678 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))))) {
11679 {
11680 ; /*clobber*/
11681 ; /*clobber*/
11682 ; /*clobber*/
11683 ; /*clobber*/
11684 if (NEBI (CPU (h_psr_esr), 0)) {
11685 {
11686 ; /*clobber*/
11687 ; /*clobber*/
11688 ; /*clobber*/
11689 ; /*clobber*/
11690 }
11691 }
11692 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11693 }
11694 }
11695
11696 abuf->written = written;
11697 return vpc;
11698 #undef FLD
11699 }
11700
11701 /* tls: tls$pack $ICCi_2,$GRi,$GRj */
11702
11703 static SEM_PC
11704 SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11705 {
11706 #define FLD(f) abuf->fields.sfmt_teq.f
11707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11708 int UNUSED written = 0;
11709 IADDR UNUSED pc = abuf->addr;
11710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11711
11712 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11713 {
11714 ; /*clobber*/
11715 ; /*clobber*/
11716 ; /*clobber*/
11717 ; /*clobber*/
11718 if (NEBI (CPU (h_psr_esr), 0)) {
11719 {
11720 ; /*clobber*/
11721 ; /*clobber*/
11722 ; /*clobber*/
11723 ; /*clobber*/
11724 }
11725 }
11726 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11727 }
11728 }
11729
11730 abuf->written = written;
11731 return vpc;
11732 #undef FLD
11733 }
11734
11735 /* thi: thi$pack $ICCi_2,$GRi,$GRj */
11736
11737 static SEM_PC
11738 SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11739 {
11740 #define FLD(f) abuf->fields.sfmt_teq.f
11741 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11742 int UNUSED written = 0;
11743 IADDR UNUSED pc = abuf->addr;
11744 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11745
11746 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))))) {
11747 {
11748 ; /*clobber*/
11749 ; /*clobber*/
11750 ; /*clobber*/
11751 ; /*clobber*/
11752 if (NEBI (CPU (h_psr_esr), 0)) {
11753 {
11754 ; /*clobber*/
11755 ; /*clobber*/
11756 ; /*clobber*/
11757 ; /*clobber*/
11758 }
11759 }
11760 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11761 }
11762 }
11763
11764 abuf->written = written;
11765 return vpc;
11766 #undef FLD
11767 }
11768
11769 /* tc: tc$pack $ICCi_2,$GRi,$GRj */
11770
11771 static SEM_PC
11772 SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11773 {
11774 #define FLD(f) abuf->fields.sfmt_teq.f
11775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11776 int UNUSED written = 0;
11777 IADDR UNUSED pc = abuf->addr;
11778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11779
11780 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11781 {
11782 ; /*clobber*/
11783 ; /*clobber*/
11784 ; /*clobber*/
11785 ; /*clobber*/
11786 if (NEBI (CPU (h_psr_esr), 0)) {
11787 {
11788 ; /*clobber*/
11789 ; /*clobber*/
11790 ; /*clobber*/
11791 ; /*clobber*/
11792 }
11793 }
11794 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11795 }
11796 }
11797
11798 abuf->written = written;
11799 return vpc;
11800 #undef FLD
11801 }
11802
11803 /* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11804
11805 static SEM_PC
11806 SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11807 {
11808 #define FLD(f) abuf->fields.sfmt_teq.f
11809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11810 int UNUSED written = 0;
11811 IADDR UNUSED pc = abuf->addr;
11812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11813
11814 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11815 {
11816 ; /*clobber*/
11817 ; /*clobber*/
11818 ; /*clobber*/
11819 ; /*clobber*/
11820 if (NEBI (CPU (h_psr_esr), 0)) {
11821 {
11822 ; /*clobber*/
11823 ; /*clobber*/
11824 ; /*clobber*/
11825 ; /*clobber*/
11826 }
11827 }
11828 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11829 }
11830 }
11831
11832 abuf->written = written;
11833 return vpc;
11834 #undef FLD
11835 }
11836
11837 /* tn: tn$pack $ICCi_2,$GRi,$GRj */
11838
11839 static SEM_PC
11840 SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11841 {
11842 #define FLD(f) abuf->fields.sfmt_teq.f
11843 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11844 int UNUSED written = 0;
11845 IADDR UNUSED pc = abuf->addr;
11846 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11847
11848 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11849 {
11850 ; /*clobber*/
11851 ; /*clobber*/
11852 ; /*clobber*/
11853 ; /*clobber*/
11854 if (NEBI (CPU (h_psr_esr), 0)) {
11855 {
11856 ; /*clobber*/
11857 ; /*clobber*/
11858 ; /*clobber*/
11859 ; /*clobber*/
11860 }
11861 }
11862 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11863 }
11864 }
11865
11866 abuf->written = written;
11867 return vpc;
11868 #undef FLD
11869 }
11870
11871 /* tp: tp$pack $ICCi_2,$GRi,$GRj */
11872
11873 static SEM_PC
11874 SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11875 {
11876 #define FLD(f) abuf->fields.sfmt_teq.f
11877 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11878 int UNUSED written = 0;
11879 IADDR UNUSED pc = abuf->addr;
11880 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11881
11882 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11883 {
11884 ; /*clobber*/
11885 ; /*clobber*/
11886 ; /*clobber*/
11887 ; /*clobber*/
11888 if (NEBI (CPU (h_psr_esr), 0)) {
11889 {
11890 ; /*clobber*/
11891 ; /*clobber*/
11892 ; /*clobber*/
11893 ; /*clobber*/
11894 }
11895 }
11896 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11897 }
11898 }
11899
11900 abuf->written = written;
11901 return vpc;
11902 #undef FLD
11903 }
11904
11905 /* tv: tv$pack $ICCi_2,$GRi,$GRj */
11906
11907 static SEM_PC
11908 SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11909 {
11910 #define FLD(f) abuf->fields.sfmt_teq.f
11911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11912 int UNUSED written = 0;
11913 IADDR UNUSED pc = abuf->addr;
11914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11915
11916 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
11917 {
11918 ; /*clobber*/
11919 ; /*clobber*/
11920 ; /*clobber*/
11921 ; /*clobber*/
11922 if (NEBI (CPU (h_psr_esr), 0)) {
11923 {
11924 ; /*clobber*/
11925 ; /*clobber*/
11926 ; /*clobber*/
11927 ; /*clobber*/
11928 }
11929 }
11930 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11931 }
11932 }
11933
11934 abuf->written = written;
11935 return vpc;
11936 #undef FLD
11937 }
11938
11939 /* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
11940
11941 static SEM_PC
11942 SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11943 {
11944 #define FLD(f) abuf->fields.sfmt_teq.f
11945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11946 int UNUSED written = 0;
11947 IADDR UNUSED pc = abuf->addr;
11948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11949
11950 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11951 {
11952 ; /*clobber*/
11953 ; /*clobber*/
11954 ; /*clobber*/
11955 ; /*clobber*/
11956 if (NEBI (CPU (h_psr_esr), 0)) {
11957 {
11958 ; /*clobber*/
11959 ; /*clobber*/
11960 ; /*clobber*/
11961 ; /*clobber*/
11962 }
11963 }
11964 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11965 }
11966 }
11967
11968 abuf->written = written;
11969 return vpc;
11970 #undef FLD
11971 }
11972
11973 /* ftra: ftra$pack $GRi,$GRj */
11974
11975 static SEM_PC
11976 SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11977 {
11978 #define FLD(f) abuf->fields.sfmt_ftne.f
11979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11980 int UNUSED written = 0;
11981 IADDR UNUSED pc = abuf->addr;
11982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11983
11984 {
11985 ; /*clobber*/
11986 ; /*clobber*/
11987 ; /*clobber*/
11988 ; /*clobber*/
11989 if (NEBI (CPU (h_psr_esr), 0)) {
11990 {
11991 ; /*clobber*/
11992 ; /*clobber*/
11993 ; /*clobber*/
11994 ; /*clobber*/
11995 }
11996 }
11997 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11998 }
11999
12000 abuf->written = written;
12001 return vpc;
12002 #undef FLD
12003 }
12004
12005 /* ftno: ftno$pack */
12006
12007 static SEM_PC
12008 SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12009 {
12010 #define FLD(f) abuf->fields.sfmt_empty.f
12011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12012 int UNUSED written = 0;
12013 IADDR UNUSED pc = abuf->addr;
12014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12015
12016 ((void) 0); /*nop*/
12017
12018 return vpc;
12019 #undef FLD
12020 }
12021
12022 /* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12023
12024 static SEM_PC
12025 SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12026 {
12027 #define FLD(f) abuf->fields.sfmt_ftne.f
12028 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12029 int UNUSED written = 0;
12030 IADDR UNUSED pc = abuf->addr;
12031 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12032
12033 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))))) {
12034 {
12035 ; /*clobber*/
12036 ; /*clobber*/
12037 ; /*clobber*/
12038 ; /*clobber*/
12039 if (NEBI (CPU (h_psr_esr), 0)) {
12040 {
12041 ; /*clobber*/
12042 ; /*clobber*/
12043 ; /*clobber*/
12044 ; /*clobber*/
12045 }
12046 }
12047 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12048 }
12049 }
12050
12051 abuf->written = written;
12052 return vpc;
12053 #undef FLD
12054 }
12055
12056 /* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12057
12058 static SEM_PC
12059 SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12060 {
12061 #define FLD(f) abuf->fields.sfmt_ftne.f
12062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12063 int UNUSED written = 0;
12064 IADDR UNUSED pc = abuf->addr;
12065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12066
12067 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12068 {
12069 ; /*clobber*/
12070 ; /*clobber*/
12071 ; /*clobber*/
12072 ; /*clobber*/
12073 if (NEBI (CPU (h_psr_esr), 0)) {
12074 {
12075 ; /*clobber*/
12076 ; /*clobber*/
12077 ; /*clobber*/
12078 ; /*clobber*/
12079 }
12080 }
12081 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12082 }
12083 }
12084
12085 abuf->written = written;
12086 return vpc;
12087 #undef FLD
12088 }
12089
12090 /* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12091
12092 static SEM_PC
12093 SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12094 {
12095 #define FLD(f) abuf->fields.sfmt_ftne.f
12096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12097 int UNUSED written = 0;
12098 IADDR UNUSED pc = abuf->addr;
12099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12100
12101 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)))) {
12102 {
12103 ; /*clobber*/
12104 ; /*clobber*/
12105 ; /*clobber*/
12106 ; /*clobber*/
12107 if (NEBI (CPU (h_psr_esr), 0)) {
12108 {
12109 ; /*clobber*/
12110 ; /*clobber*/
12111 ; /*clobber*/
12112 ; /*clobber*/
12113 }
12114 }
12115 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12116 }
12117 }
12118
12119 abuf->written = written;
12120 return vpc;
12121 #undef FLD
12122 }
12123
12124 /* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12125
12126 static SEM_PC
12127 SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12128 {
12129 #define FLD(f) abuf->fields.sfmt_ftne.f
12130 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12131 int UNUSED written = 0;
12132 IADDR UNUSED pc = abuf->addr;
12133 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12134
12135 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12136 {
12137 ; /*clobber*/
12138 ; /*clobber*/
12139 ; /*clobber*/
12140 ; /*clobber*/
12141 if (NEBI (CPU (h_psr_esr), 0)) {
12142 {
12143 ; /*clobber*/
12144 ; /*clobber*/
12145 ; /*clobber*/
12146 ; /*clobber*/
12147 }
12148 }
12149 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12150 }
12151 }
12152
12153 abuf->written = written;
12154 return vpc;
12155 #undef FLD
12156 }
12157
12158 /* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12159
12160 static SEM_PC
12161 SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12162 {
12163 #define FLD(f) abuf->fields.sfmt_ftne.f
12164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12165 int UNUSED written = 0;
12166 IADDR UNUSED pc = abuf->addr;
12167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12168
12169 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12170 {
12171 ; /*clobber*/
12172 ; /*clobber*/
12173 ; /*clobber*/
12174 ; /*clobber*/
12175 if (NEBI (CPU (h_psr_esr), 0)) {
12176 {
12177 ; /*clobber*/
12178 ; /*clobber*/
12179 ; /*clobber*/
12180 ; /*clobber*/
12181 }
12182 }
12183 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12184 }
12185 }
12186
12187 abuf->written = written;
12188 return vpc;
12189 #undef FLD
12190 }
12191
12192 /* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12193
12194 static SEM_PC
12195 SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12196 {
12197 #define FLD(f) abuf->fields.sfmt_ftne.f
12198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12199 int UNUSED written = 0;
12200 IADDR UNUSED pc = abuf->addr;
12201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12202
12203 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)))) {
12204 {
12205 ; /*clobber*/
12206 ; /*clobber*/
12207 ; /*clobber*/
12208 ; /*clobber*/
12209 if (NEBI (CPU (h_psr_esr), 0)) {
12210 {
12211 ; /*clobber*/
12212 ; /*clobber*/
12213 ; /*clobber*/
12214 ; /*clobber*/
12215 }
12216 }
12217 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12218 }
12219 }
12220
12221 abuf->written = written;
12222 return vpc;
12223 #undef FLD
12224 }
12225
12226 /* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12227
12228 static SEM_PC
12229 SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12230 {
12231 #define FLD(f) abuf->fields.sfmt_ftne.f
12232 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12233 int UNUSED written = 0;
12234 IADDR UNUSED pc = abuf->addr;
12235 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12236
12237 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12238 {
12239 ; /*clobber*/
12240 ; /*clobber*/
12241 ; /*clobber*/
12242 ; /*clobber*/
12243 if (NEBI (CPU (h_psr_esr), 0)) {
12244 {
12245 ; /*clobber*/
12246 ; /*clobber*/
12247 ; /*clobber*/
12248 ; /*clobber*/
12249 }
12250 }
12251 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12252 }
12253 }
12254
12255 abuf->written = written;
12256 return vpc;
12257 #undef FLD
12258 }
12259
12260 /* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12261
12262 static SEM_PC
12263 SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12264 {
12265 #define FLD(f) abuf->fields.sfmt_ftne.f
12266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12267 int UNUSED written = 0;
12268 IADDR UNUSED pc = abuf->addr;
12269 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12270
12271 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))))) {
12272 {
12273 ; /*clobber*/
12274 ; /*clobber*/
12275 ; /*clobber*/
12276 ; /*clobber*/
12277 if (NEBI (CPU (h_psr_esr), 0)) {
12278 {
12279 ; /*clobber*/
12280 ; /*clobber*/
12281 ; /*clobber*/
12282 ; /*clobber*/
12283 }
12284 }
12285 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12286 }
12287 }
12288
12289 abuf->written = written;
12290 return vpc;
12291 #undef FLD
12292 }
12293
12294 /* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12295
12296 static SEM_PC
12297 SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12298 {
12299 #define FLD(f) abuf->fields.sfmt_ftne.f
12300 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12301 int UNUSED written = 0;
12302 IADDR UNUSED pc = abuf->addr;
12303 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12304
12305 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12306 {
12307 ; /*clobber*/
12308 ; /*clobber*/
12309 ; /*clobber*/
12310 ; /*clobber*/
12311 if (NEBI (CPU (h_psr_esr), 0)) {
12312 {
12313 ; /*clobber*/
12314 ; /*clobber*/
12315 ; /*clobber*/
12316 ; /*clobber*/
12317 }
12318 }
12319 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12320 }
12321 }
12322
12323 abuf->written = written;
12324 return vpc;
12325 #undef FLD
12326 }
12327
12328 /* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12329
12330 static SEM_PC
12331 SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12332 {
12333 #define FLD(f) abuf->fields.sfmt_ftne.f
12334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12335 int UNUSED written = 0;
12336 IADDR UNUSED pc = abuf->addr;
12337 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12338
12339 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)))) {
12340 {
12341 ; /*clobber*/
12342 ; /*clobber*/
12343 ; /*clobber*/
12344 ; /*clobber*/
12345 if (NEBI (CPU (h_psr_esr), 0)) {
12346 {
12347 ; /*clobber*/
12348 ; /*clobber*/
12349 ; /*clobber*/
12350 ; /*clobber*/
12351 }
12352 }
12353 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12354 }
12355 }
12356
12357 abuf->written = written;
12358 return vpc;
12359 #undef FLD
12360 }
12361
12362 /* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12363
12364 static SEM_PC
12365 SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12366 {
12367 #define FLD(f) abuf->fields.sfmt_ftne.f
12368 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12369 int UNUSED written = 0;
12370 IADDR UNUSED pc = abuf->addr;
12371 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12372
12373 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12374 {
12375 ; /*clobber*/
12376 ; /*clobber*/
12377 ; /*clobber*/
12378 ; /*clobber*/
12379 if (NEBI (CPU (h_psr_esr), 0)) {
12380 {
12381 ; /*clobber*/
12382 ; /*clobber*/
12383 ; /*clobber*/
12384 ; /*clobber*/
12385 }
12386 }
12387 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12388 }
12389 }
12390
12391 abuf->written = written;
12392 return vpc;
12393 #undef FLD
12394 }
12395
12396 /* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12397
12398 static SEM_PC
12399 SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12400 {
12401 #define FLD(f) abuf->fields.sfmt_ftne.f
12402 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12403 int UNUSED written = 0;
12404 IADDR UNUSED pc = abuf->addr;
12405 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12406
12407 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))))) {
12408 {
12409 ; /*clobber*/
12410 ; /*clobber*/
12411 ; /*clobber*/
12412 ; /*clobber*/
12413 if (NEBI (CPU (h_psr_esr), 0)) {
12414 {
12415 ; /*clobber*/
12416 ; /*clobber*/
12417 ; /*clobber*/
12418 ; /*clobber*/
12419 }
12420 }
12421 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12422 }
12423 }
12424
12425 abuf->written = written;
12426 return vpc;
12427 #undef FLD
12428 }
12429
12430 /* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12431
12432 static SEM_PC
12433 SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12434 {
12435 #define FLD(f) abuf->fields.sfmt_ftne.f
12436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12437 int UNUSED written = 0;
12438 IADDR UNUSED pc = abuf->addr;
12439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12440
12441 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12442 {
12443 ; /*clobber*/
12444 ; /*clobber*/
12445 ; /*clobber*/
12446 ; /*clobber*/
12447 if (NEBI (CPU (h_psr_esr), 0)) {
12448 {
12449 ; /*clobber*/
12450 ; /*clobber*/
12451 ; /*clobber*/
12452 ; /*clobber*/
12453 }
12454 }
12455 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12456 }
12457 }
12458
12459 abuf->written = written;
12460 return vpc;
12461 #undef FLD
12462 }
12463
12464 /* fto: fto$pack $FCCi_2,$GRi,$GRj */
12465
12466 static SEM_PC
12467 SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12468 {
12469 #define FLD(f) abuf->fields.sfmt_ftne.f
12470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12471 int UNUSED written = 0;
12472 IADDR UNUSED pc = abuf->addr;
12473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12474
12475 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))))) {
12476 {
12477 ; /*clobber*/
12478 ; /*clobber*/
12479 ; /*clobber*/
12480 ; /*clobber*/
12481 if (NEBI (CPU (h_psr_esr), 0)) {
12482 {
12483 ; /*clobber*/
12484 ; /*clobber*/
12485 ; /*clobber*/
12486 ; /*clobber*/
12487 }
12488 }
12489 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12490 }
12491 }
12492
12493 abuf->written = written;
12494 return vpc;
12495 #undef FLD
12496 }
12497
12498 /* tira: tira$pack $GRi,$s12 */
12499
12500 static SEM_PC
12501 SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12502 {
12503 #define FLD(f) abuf->fields.sfmt_ftine.f
12504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12505 int UNUSED written = 0;
12506 IADDR UNUSED pc = abuf->addr;
12507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12508
12509 {
12510 ; /*clobber*/
12511 ; /*clobber*/
12512 ; /*clobber*/
12513 ; /*clobber*/
12514 if (NEBI (CPU (h_psr_esr), 0)) {
12515 {
12516 ; /*clobber*/
12517 ; /*clobber*/
12518 ; /*clobber*/
12519 ; /*clobber*/
12520 }
12521 }
12522 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12523 }
12524
12525 abuf->written = written;
12526 return vpc;
12527 #undef FLD
12528 }
12529
12530 /* tino: tino$pack */
12531
12532 static SEM_PC
12533 SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12534 {
12535 #define FLD(f) abuf->fields.sfmt_empty.f
12536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12537 int UNUSED written = 0;
12538 IADDR UNUSED pc = abuf->addr;
12539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12540
12541 ((void) 0); /*nop*/
12542
12543 return vpc;
12544 #undef FLD
12545 }
12546
12547 /* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12548
12549 static SEM_PC
12550 SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12551 {
12552 #define FLD(f) abuf->fields.sfmt_tieq.f
12553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12554 int UNUSED written = 0;
12555 IADDR UNUSED pc = abuf->addr;
12556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12557
12558 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12559 {
12560 ; /*clobber*/
12561 ; /*clobber*/
12562 ; /*clobber*/
12563 ; /*clobber*/
12564 if (NEBI (CPU (h_psr_esr), 0)) {
12565 {
12566 ; /*clobber*/
12567 ; /*clobber*/
12568 ; /*clobber*/
12569 ; /*clobber*/
12570 }
12571 }
12572 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12573 }
12574 }
12575
12576 abuf->written = written;
12577 return vpc;
12578 #undef FLD
12579 }
12580
12581 /* tine: tine$pack $ICCi_2,$GRi,$s12 */
12582
12583 static SEM_PC
12584 SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12585 {
12586 #define FLD(f) abuf->fields.sfmt_tieq.f
12587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12588 int UNUSED written = 0;
12589 IADDR UNUSED pc = abuf->addr;
12590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12591
12592 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12593 {
12594 ; /*clobber*/
12595 ; /*clobber*/
12596 ; /*clobber*/
12597 ; /*clobber*/
12598 if (NEBI (CPU (h_psr_esr), 0)) {
12599 {
12600 ; /*clobber*/
12601 ; /*clobber*/
12602 ; /*clobber*/
12603 ; /*clobber*/
12604 }
12605 }
12606 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12607 }
12608 }
12609
12610 abuf->written = written;
12611 return vpc;
12612 #undef FLD
12613 }
12614
12615 /* tile: tile$pack $ICCi_2,$GRi,$s12 */
12616
12617 static SEM_PC
12618 SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12619 {
12620 #define FLD(f) abuf->fields.sfmt_tieq.f
12621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12622 int UNUSED written = 0;
12623 IADDR UNUSED pc = abuf->addr;
12624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12625
12626 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))))) {
12627 {
12628 ; /*clobber*/
12629 ; /*clobber*/
12630 ; /*clobber*/
12631 ; /*clobber*/
12632 if (NEBI (CPU (h_psr_esr), 0)) {
12633 {
12634 ; /*clobber*/
12635 ; /*clobber*/
12636 ; /*clobber*/
12637 ; /*clobber*/
12638 }
12639 }
12640 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12641 }
12642 }
12643
12644 abuf->written = written;
12645 return vpc;
12646 #undef FLD
12647 }
12648
12649 /* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12650
12651 static SEM_PC
12652 SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12653 {
12654 #define FLD(f) abuf->fields.sfmt_tieq.f
12655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12656 int UNUSED written = 0;
12657 IADDR UNUSED pc = abuf->addr;
12658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12659
12660 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)))))) {
12661 {
12662 ; /*clobber*/
12663 ; /*clobber*/
12664 ; /*clobber*/
12665 ; /*clobber*/
12666 if (NEBI (CPU (h_psr_esr), 0)) {
12667 {
12668 ; /*clobber*/
12669 ; /*clobber*/
12670 ; /*clobber*/
12671 ; /*clobber*/
12672 }
12673 }
12674 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12675 }
12676 }
12677
12678 abuf->written = written;
12679 return vpc;
12680 #undef FLD
12681 }
12682
12683 /* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12684
12685 static SEM_PC
12686 SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12687 {
12688 #define FLD(f) abuf->fields.sfmt_tieq.f
12689 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12690 int UNUSED written = 0;
12691 IADDR UNUSED pc = abuf->addr;
12692 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12693
12694 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)))) {
12695 {
12696 ; /*clobber*/
12697 ; /*clobber*/
12698 ; /*clobber*/
12699 ; /*clobber*/
12700 if (NEBI (CPU (h_psr_esr), 0)) {
12701 {
12702 ; /*clobber*/
12703 ; /*clobber*/
12704 ; /*clobber*/
12705 ; /*clobber*/
12706 }
12707 }
12708 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12709 }
12710 }
12711
12712 abuf->written = written;
12713 return vpc;
12714 #undef FLD
12715 }
12716
12717 /* tige: tige$pack $ICCi_2,$GRi,$s12 */
12718
12719 static SEM_PC
12720 SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12721 {
12722 #define FLD(f) abuf->fields.sfmt_tieq.f
12723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12724 int UNUSED written = 0;
12725 IADDR UNUSED pc = abuf->addr;
12726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12727
12728 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))))) {
12729 {
12730 ; /*clobber*/
12731 ; /*clobber*/
12732 ; /*clobber*/
12733 ; /*clobber*/
12734 if (NEBI (CPU (h_psr_esr), 0)) {
12735 {
12736 ; /*clobber*/
12737 ; /*clobber*/
12738 ; /*clobber*/
12739 ; /*clobber*/
12740 }
12741 }
12742 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12743 }
12744 }
12745
12746 abuf->written = written;
12747 return vpc;
12748 #undef FLD
12749 }
12750
12751 /* tils: tils$pack $ICCi_2,$GRi,$s12 */
12752
12753 static SEM_PC
12754 SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12755 {
12756 #define FLD(f) abuf->fields.sfmt_tieq.f
12757 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12758 int UNUSED written = 0;
12759 IADDR UNUSED pc = abuf->addr;
12760 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12761
12762 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12763 {
12764 ; /*clobber*/
12765 ; /*clobber*/
12766 ; /*clobber*/
12767 ; /*clobber*/
12768 if (NEBI (CPU (h_psr_esr), 0)) {
12769 {
12770 ; /*clobber*/
12771 ; /*clobber*/
12772 ; /*clobber*/
12773 ; /*clobber*/
12774 }
12775 }
12776 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12777 }
12778 }
12779
12780 abuf->written = written;
12781 return vpc;
12782 #undef FLD
12783 }
12784
12785 /* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12786
12787 static SEM_PC
12788 SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12789 {
12790 #define FLD(f) abuf->fields.sfmt_tieq.f
12791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12792 int UNUSED written = 0;
12793 IADDR UNUSED pc = abuf->addr;
12794 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12795
12796 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))))) {
12797 {
12798 ; /*clobber*/
12799 ; /*clobber*/
12800 ; /*clobber*/
12801 ; /*clobber*/
12802 if (NEBI (CPU (h_psr_esr), 0)) {
12803 {
12804 ; /*clobber*/
12805 ; /*clobber*/
12806 ; /*clobber*/
12807 ; /*clobber*/
12808 }
12809 }
12810 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12811 }
12812 }
12813
12814 abuf->written = written;
12815 return vpc;
12816 #undef FLD
12817 }
12818
12819 /* tic: tic$pack $ICCi_2,$GRi,$s12 */
12820
12821 static SEM_PC
12822 SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12823 {
12824 #define FLD(f) abuf->fields.sfmt_tieq.f
12825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12826 int UNUSED written = 0;
12827 IADDR UNUSED pc = abuf->addr;
12828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12829
12830 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12831 {
12832 ; /*clobber*/
12833 ; /*clobber*/
12834 ; /*clobber*/
12835 ; /*clobber*/
12836 if (NEBI (CPU (h_psr_esr), 0)) {
12837 {
12838 ; /*clobber*/
12839 ; /*clobber*/
12840 ; /*clobber*/
12841 ; /*clobber*/
12842 }
12843 }
12844 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12845 }
12846 }
12847
12848 abuf->written = written;
12849 return vpc;
12850 #undef FLD
12851 }
12852
12853 /* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12854
12855 static SEM_PC
12856 SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12857 {
12858 #define FLD(f) abuf->fields.sfmt_tieq.f
12859 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12860 int UNUSED written = 0;
12861 IADDR UNUSED pc = abuf->addr;
12862 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12863
12864 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12865 {
12866 ; /*clobber*/
12867 ; /*clobber*/
12868 ; /*clobber*/
12869 ; /*clobber*/
12870 if (NEBI (CPU (h_psr_esr), 0)) {
12871 {
12872 ; /*clobber*/
12873 ; /*clobber*/
12874 ; /*clobber*/
12875 ; /*clobber*/
12876 }
12877 }
12878 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12879 }
12880 }
12881
12882 abuf->written = written;
12883 return vpc;
12884 #undef FLD
12885 }
12886
12887 /* tin: tin$pack $ICCi_2,$GRi,$s12 */
12888
12889 static SEM_PC
12890 SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12891 {
12892 #define FLD(f) abuf->fields.sfmt_tieq.f
12893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12894 int UNUSED written = 0;
12895 IADDR UNUSED pc = abuf->addr;
12896 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12897
12898 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12899 {
12900 ; /*clobber*/
12901 ; /*clobber*/
12902 ; /*clobber*/
12903 ; /*clobber*/
12904 if (NEBI (CPU (h_psr_esr), 0)) {
12905 {
12906 ; /*clobber*/
12907 ; /*clobber*/
12908 ; /*clobber*/
12909 ; /*clobber*/
12910 }
12911 }
12912 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12913 }
12914 }
12915
12916 abuf->written = written;
12917 return vpc;
12918 #undef FLD
12919 }
12920
12921 /* tip: tip$pack $ICCi_2,$GRi,$s12 */
12922
12923 static SEM_PC
12924 SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12925 {
12926 #define FLD(f) abuf->fields.sfmt_tieq.f
12927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12928 int UNUSED written = 0;
12929 IADDR UNUSED pc = abuf->addr;
12930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12931
12932 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12933 {
12934 ; /*clobber*/
12935 ; /*clobber*/
12936 ; /*clobber*/
12937 ; /*clobber*/
12938 if (NEBI (CPU (h_psr_esr), 0)) {
12939 {
12940 ; /*clobber*/
12941 ; /*clobber*/
12942 ; /*clobber*/
12943 ; /*clobber*/
12944 }
12945 }
12946 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12947 }
12948 }
12949
12950 abuf->written = written;
12951 return vpc;
12952 #undef FLD
12953 }
12954
12955 /* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
12956
12957 static SEM_PC
12958 SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12959 {
12960 #define FLD(f) abuf->fields.sfmt_tieq.f
12961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12962 int UNUSED written = 0;
12963 IADDR UNUSED pc = abuf->addr;
12964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12965
12966 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12967 {
12968 ; /*clobber*/
12969 ; /*clobber*/
12970 ; /*clobber*/
12971 ; /*clobber*/
12972 if (NEBI (CPU (h_psr_esr), 0)) {
12973 {
12974 ; /*clobber*/
12975 ; /*clobber*/
12976 ; /*clobber*/
12977 ; /*clobber*/
12978 }
12979 }
12980 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12981 }
12982 }
12983
12984 abuf->written = written;
12985 return vpc;
12986 #undef FLD
12987 }
12988
12989 /* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
12990
12991 static SEM_PC
12992 SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12993 {
12994 #define FLD(f) abuf->fields.sfmt_tieq.f
12995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12996 int UNUSED written = 0;
12997 IADDR UNUSED pc = abuf->addr;
12998 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12999
13000 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13001 {
13002 ; /*clobber*/
13003 ; /*clobber*/
13004 ; /*clobber*/
13005 ; /*clobber*/
13006 if (NEBI (CPU (h_psr_esr), 0)) {
13007 {
13008 ; /*clobber*/
13009 ; /*clobber*/
13010 ; /*clobber*/
13011 ; /*clobber*/
13012 }
13013 }
13014 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13015 }
13016 }
13017
13018 abuf->written = written;
13019 return vpc;
13020 #undef FLD
13021 }
13022
13023 /* ftira: ftira$pack $GRi,$s12 */
13024
13025 static SEM_PC
13026 SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13027 {
13028 #define FLD(f) abuf->fields.sfmt_ftine.f
13029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13030 int UNUSED written = 0;
13031 IADDR UNUSED pc = abuf->addr;
13032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13033
13034 {
13035 ; /*clobber*/
13036 ; /*clobber*/
13037 ; /*clobber*/
13038 ; /*clobber*/
13039 if (NEBI (CPU (h_psr_esr), 0)) {
13040 {
13041 ; /*clobber*/
13042 ; /*clobber*/
13043 ; /*clobber*/
13044 ; /*clobber*/
13045 }
13046 }
13047 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13048 }
13049
13050 abuf->written = written;
13051 return vpc;
13052 #undef FLD
13053 }
13054
13055 /* ftino: ftino$pack */
13056
13057 static SEM_PC
13058 SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13059 {
13060 #define FLD(f) abuf->fields.sfmt_empty.f
13061 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13062 int UNUSED written = 0;
13063 IADDR UNUSED pc = abuf->addr;
13064 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13065
13066 ((void) 0); /*nop*/
13067
13068 return vpc;
13069 #undef FLD
13070 }
13071
13072 /* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13073
13074 static SEM_PC
13075 SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13076 {
13077 #define FLD(f) abuf->fields.sfmt_ftine.f
13078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13079 int UNUSED written = 0;
13080 IADDR UNUSED pc = abuf->addr;
13081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13082
13083 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))))) {
13084 {
13085 ; /*clobber*/
13086 ; /*clobber*/
13087 ; /*clobber*/
13088 ; /*clobber*/
13089 if (NEBI (CPU (h_psr_esr), 0)) {
13090 {
13091 ; /*clobber*/
13092 ; /*clobber*/
13093 ; /*clobber*/
13094 ; /*clobber*/
13095 }
13096 }
13097 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13098 }
13099 }
13100
13101 abuf->written = written;
13102 return vpc;
13103 #undef FLD
13104 }
13105
13106 /* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13107
13108 static SEM_PC
13109 SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13110 {
13111 #define FLD(f) abuf->fields.sfmt_ftine.f
13112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13113 int UNUSED written = 0;
13114 IADDR UNUSED pc = abuf->addr;
13115 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13116
13117 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13118 {
13119 ; /*clobber*/
13120 ; /*clobber*/
13121 ; /*clobber*/
13122 ; /*clobber*/
13123 if (NEBI (CPU (h_psr_esr), 0)) {
13124 {
13125 ; /*clobber*/
13126 ; /*clobber*/
13127 ; /*clobber*/
13128 ; /*clobber*/
13129 }
13130 }
13131 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13132 }
13133 }
13134
13135 abuf->written = written;
13136 return vpc;
13137 #undef FLD
13138 }
13139
13140 /* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13141
13142 static SEM_PC
13143 SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13144 {
13145 #define FLD(f) abuf->fields.sfmt_ftine.f
13146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13147 int UNUSED written = 0;
13148 IADDR UNUSED pc = abuf->addr;
13149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13150
13151 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)))) {
13152 {
13153 ; /*clobber*/
13154 ; /*clobber*/
13155 ; /*clobber*/
13156 ; /*clobber*/
13157 if (NEBI (CPU (h_psr_esr), 0)) {
13158 {
13159 ; /*clobber*/
13160 ; /*clobber*/
13161 ; /*clobber*/
13162 ; /*clobber*/
13163 }
13164 }
13165 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13166 }
13167 }
13168
13169 abuf->written = written;
13170 return vpc;
13171 #undef FLD
13172 }
13173
13174 /* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13175
13176 static SEM_PC
13177 SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13178 {
13179 #define FLD(f) abuf->fields.sfmt_ftine.f
13180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13181 int UNUSED written = 0;
13182 IADDR UNUSED pc = abuf->addr;
13183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13184
13185 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13186 {
13187 ; /*clobber*/
13188 ; /*clobber*/
13189 ; /*clobber*/
13190 ; /*clobber*/
13191 if (NEBI (CPU (h_psr_esr), 0)) {
13192 {
13193 ; /*clobber*/
13194 ; /*clobber*/
13195 ; /*clobber*/
13196 ; /*clobber*/
13197 }
13198 }
13199 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13200 }
13201 }
13202
13203 abuf->written = written;
13204 return vpc;
13205 #undef FLD
13206 }
13207
13208 /* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13209
13210 static SEM_PC
13211 SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13212 {
13213 #define FLD(f) abuf->fields.sfmt_ftine.f
13214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13215 int UNUSED written = 0;
13216 IADDR UNUSED pc = abuf->addr;
13217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13218
13219 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13220 {
13221 ; /*clobber*/
13222 ; /*clobber*/
13223 ; /*clobber*/
13224 ; /*clobber*/
13225 if (NEBI (CPU (h_psr_esr), 0)) {
13226 {
13227 ; /*clobber*/
13228 ; /*clobber*/
13229 ; /*clobber*/
13230 ; /*clobber*/
13231 }
13232 }
13233 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13234 }
13235 }
13236
13237 abuf->written = written;
13238 return vpc;
13239 #undef FLD
13240 }
13241
13242 /* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13243
13244 static SEM_PC
13245 SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13246 {
13247 #define FLD(f) abuf->fields.sfmt_ftine.f
13248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13249 int UNUSED written = 0;
13250 IADDR UNUSED pc = abuf->addr;
13251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13252
13253 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)))) {
13254 {
13255 ; /*clobber*/
13256 ; /*clobber*/
13257 ; /*clobber*/
13258 ; /*clobber*/
13259 if (NEBI (CPU (h_psr_esr), 0)) {
13260 {
13261 ; /*clobber*/
13262 ; /*clobber*/
13263 ; /*clobber*/
13264 ; /*clobber*/
13265 }
13266 }
13267 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13268 }
13269 }
13270
13271 abuf->written = written;
13272 return vpc;
13273 #undef FLD
13274 }
13275
13276 /* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13277
13278 static SEM_PC
13279 SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13280 {
13281 #define FLD(f) abuf->fields.sfmt_ftine.f
13282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13283 int UNUSED written = 0;
13284 IADDR UNUSED pc = abuf->addr;
13285 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13286
13287 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13288 {
13289 ; /*clobber*/
13290 ; /*clobber*/
13291 ; /*clobber*/
13292 ; /*clobber*/
13293 if (NEBI (CPU (h_psr_esr), 0)) {
13294 {
13295 ; /*clobber*/
13296 ; /*clobber*/
13297 ; /*clobber*/
13298 ; /*clobber*/
13299 }
13300 }
13301 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13302 }
13303 }
13304
13305 abuf->written = written;
13306 return vpc;
13307 #undef FLD
13308 }
13309
13310 /* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13311
13312 static SEM_PC
13313 SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13314 {
13315 #define FLD(f) abuf->fields.sfmt_ftine.f
13316 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13317 int UNUSED written = 0;
13318 IADDR UNUSED pc = abuf->addr;
13319 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13320
13321 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))))) {
13322 {
13323 ; /*clobber*/
13324 ; /*clobber*/
13325 ; /*clobber*/
13326 ; /*clobber*/
13327 if (NEBI (CPU (h_psr_esr), 0)) {
13328 {
13329 ; /*clobber*/
13330 ; /*clobber*/
13331 ; /*clobber*/
13332 ; /*clobber*/
13333 }
13334 }
13335 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13336 }
13337 }
13338
13339 abuf->written = written;
13340 return vpc;
13341 #undef FLD
13342 }
13343
13344 /* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13345
13346 static SEM_PC
13347 SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13348 {
13349 #define FLD(f) abuf->fields.sfmt_ftine.f
13350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13351 int UNUSED written = 0;
13352 IADDR UNUSED pc = abuf->addr;
13353 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13354
13355 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13356 {
13357 ; /*clobber*/
13358 ; /*clobber*/
13359 ; /*clobber*/
13360 ; /*clobber*/
13361 if (NEBI (CPU (h_psr_esr), 0)) {
13362 {
13363 ; /*clobber*/
13364 ; /*clobber*/
13365 ; /*clobber*/
13366 ; /*clobber*/
13367 }
13368 }
13369 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13370 }
13371 }
13372
13373 abuf->written = written;
13374 return vpc;
13375 #undef FLD
13376 }
13377
13378 /* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13379
13380 static SEM_PC
13381 SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13382 {
13383 #define FLD(f) abuf->fields.sfmt_ftine.f
13384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13385 int UNUSED written = 0;
13386 IADDR UNUSED pc = abuf->addr;
13387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13388
13389 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)))) {
13390 {
13391 ; /*clobber*/
13392 ; /*clobber*/
13393 ; /*clobber*/
13394 ; /*clobber*/
13395 if (NEBI (CPU (h_psr_esr), 0)) {
13396 {
13397 ; /*clobber*/
13398 ; /*clobber*/
13399 ; /*clobber*/
13400 ; /*clobber*/
13401 }
13402 }
13403 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13404 }
13405 }
13406
13407 abuf->written = written;
13408 return vpc;
13409 #undef FLD
13410 }
13411
13412 /* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13413
13414 static SEM_PC
13415 SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13416 {
13417 #define FLD(f) abuf->fields.sfmt_ftine.f
13418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13419 int UNUSED written = 0;
13420 IADDR UNUSED pc = abuf->addr;
13421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13422
13423 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13424 {
13425 ; /*clobber*/
13426 ; /*clobber*/
13427 ; /*clobber*/
13428 ; /*clobber*/
13429 if (NEBI (CPU (h_psr_esr), 0)) {
13430 {
13431 ; /*clobber*/
13432 ; /*clobber*/
13433 ; /*clobber*/
13434 ; /*clobber*/
13435 }
13436 }
13437 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13438 }
13439 }
13440
13441 abuf->written = written;
13442 return vpc;
13443 #undef FLD
13444 }
13445
13446 /* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13447
13448 static SEM_PC
13449 SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13450 {
13451 #define FLD(f) abuf->fields.sfmt_ftine.f
13452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13453 int UNUSED written = 0;
13454 IADDR UNUSED pc = abuf->addr;
13455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13456
13457 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))))) {
13458 {
13459 ; /*clobber*/
13460 ; /*clobber*/
13461 ; /*clobber*/
13462 ; /*clobber*/
13463 if (NEBI (CPU (h_psr_esr), 0)) {
13464 {
13465 ; /*clobber*/
13466 ; /*clobber*/
13467 ; /*clobber*/
13468 ; /*clobber*/
13469 }
13470 }
13471 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13472 }
13473 }
13474
13475 abuf->written = written;
13476 return vpc;
13477 #undef FLD
13478 }
13479
13480 /* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13481
13482 static SEM_PC
13483 SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13484 {
13485 #define FLD(f) abuf->fields.sfmt_ftine.f
13486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13487 int UNUSED written = 0;
13488 IADDR UNUSED pc = abuf->addr;
13489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13490
13491 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13492 {
13493 ; /*clobber*/
13494 ; /*clobber*/
13495 ; /*clobber*/
13496 ; /*clobber*/
13497 if (NEBI (CPU (h_psr_esr), 0)) {
13498 {
13499 ; /*clobber*/
13500 ; /*clobber*/
13501 ; /*clobber*/
13502 ; /*clobber*/
13503 }
13504 }
13505 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13506 }
13507 }
13508
13509 abuf->written = written;
13510 return vpc;
13511 #undef FLD
13512 }
13513
13514 /* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13515
13516 static SEM_PC
13517 SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13518 {
13519 #define FLD(f) abuf->fields.sfmt_ftine.f
13520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13521 int UNUSED written = 0;
13522 IADDR UNUSED pc = abuf->addr;
13523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13524
13525 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))))) {
13526 {
13527 ; /*clobber*/
13528 ; /*clobber*/
13529 ; /*clobber*/
13530 ; /*clobber*/
13531 if (NEBI (CPU (h_psr_esr), 0)) {
13532 {
13533 ; /*clobber*/
13534 ; /*clobber*/
13535 ; /*clobber*/
13536 ; /*clobber*/
13537 }
13538 }
13539 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13540 }
13541 }
13542
13543 abuf->written = written;
13544 return vpc;
13545 #undef FLD
13546 }
13547
13548 /* break: break$pack */
13549
13550 static SEM_PC
13551 SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13552 {
13553 #define FLD(f) abuf->fields.sfmt_break.f
13554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13555 int UNUSED written = 0;
13556 IADDR UNUSED pc = abuf->addr;
13557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13558
13559 {
13560 ; /*clobber*/
13561 ; /*clobber*/
13562 ; /*clobber*/
13563 ; /*clobber*/
13564 ; /*clobber*/
13565 ; /*clobber*/
13566 frv_break (current_cpu);
13567 }
13568
13569 return vpc;
13570 #undef FLD
13571 }
13572
13573 /* mtrap: mtrap$pack */
13574
13575 static SEM_PC
13576 SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13577 {
13578 #define FLD(f) abuf->fields.sfmt_empty.f
13579 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13580 int UNUSED written = 0;
13581 IADDR UNUSED pc = abuf->addr;
13582 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13583
13584 frv_mtrap (current_cpu);
13585
13586 return vpc;
13587 #undef FLD
13588 }
13589
13590 /* andcr: andcr$pack $CRi,$CRj,$CRk */
13591
13592 static SEM_PC
13593 SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13594 {
13595 #define FLD(f) abuf->fields.sfmt_andcr.f
13596 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13597 int UNUSED written = 0;
13598 IADDR UNUSED pc = abuf->addr;
13599 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13600
13601 {
13602 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13603 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13604 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13605 }
13606
13607 return vpc;
13608 #undef FLD
13609 }
13610
13611 /* orcr: orcr$pack $CRi,$CRj,$CRk */
13612
13613 static SEM_PC
13614 SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13615 {
13616 #define FLD(f) abuf->fields.sfmt_andcr.f
13617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13618 int UNUSED written = 0;
13619 IADDR UNUSED pc = abuf->addr;
13620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13621
13622 {
13623 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13624 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13625 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13626 }
13627
13628 return vpc;
13629 #undef FLD
13630 }
13631
13632 /* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13633
13634 static SEM_PC
13635 SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13636 {
13637 #define FLD(f) abuf->fields.sfmt_andcr.f
13638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13639 int UNUSED written = 0;
13640 IADDR UNUSED pc = abuf->addr;
13641 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13642
13643 {
13644 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13645 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13646 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13647 }
13648
13649 return vpc;
13650 #undef FLD
13651 }
13652
13653 /* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13654
13655 static SEM_PC
13656 SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13657 {
13658 #define FLD(f) abuf->fields.sfmt_andcr.f
13659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13660 int UNUSED written = 0;
13661 IADDR UNUSED pc = abuf->addr;
13662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13663
13664 {
13665 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13666 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13667 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13668 }
13669
13670 return vpc;
13671 #undef FLD
13672 }
13673
13674 /* norcr: norcr$pack $CRi,$CRj,$CRk */
13675
13676 static SEM_PC
13677 SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13678 {
13679 #define FLD(f) abuf->fields.sfmt_andcr.f
13680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13681 int UNUSED written = 0;
13682 IADDR UNUSED pc = abuf->addr;
13683 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13684
13685 {
13686 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13687 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13688 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13689 }
13690
13691 return vpc;
13692 #undef FLD
13693 }
13694
13695 /* andncr: andncr$pack $CRi,$CRj,$CRk */
13696
13697 static SEM_PC
13698 SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13699 {
13700 #define FLD(f) abuf->fields.sfmt_andcr.f
13701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13702 int UNUSED written = 0;
13703 IADDR UNUSED pc = abuf->addr;
13704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13705
13706 {
13707 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13708 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13709 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13710 }
13711
13712 return vpc;
13713 #undef FLD
13714 }
13715
13716 /* orncr: orncr$pack $CRi,$CRj,$CRk */
13717
13718 static SEM_PC
13719 SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13720 {
13721 #define FLD(f) abuf->fields.sfmt_andcr.f
13722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13723 int UNUSED written = 0;
13724 IADDR UNUSED pc = abuf->addr;
13725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13726
13727 {
13728 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13729 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13730 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13731 }
13732
13733 return vpc;
13734 #undef FLD
13735 }
13736
13737 /* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13738
13739 static SEM_PC
13740 SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13741 {
13742 #define FLD(f) abuf->fields.sfmt_andcr.f
13743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13744 int UNUSED written = 0;
13745 IADDR UNUSED pc = abuf->addr;
13746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13747
13748 {
13749 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13750 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13751 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13752 }
13753
13754 return vpc;
13755 #undef FLD
13756 }
13757
13758 /* norncr: norncr$pack $CRi,$CRj,$CRk */
13759
13760 static SEM_PC
13761 SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13762 {
13763 #define FLD(f) abuf->fields.sfmt_andcr.f
13764 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13765 int UNUSED written = 0;
13766 IADDR UNUSED pc = abuf->addr;
13767 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13768
13769 {
13770 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13771 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13772 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13773 }
13774
13775 return vpc;
13776 #undef FLD
13777 }
13778
13779 /* notcr: notcr$pack $CRj,$CRk */
13780
13781 static SEM_PC
13782 SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13783 {
13784 #define FLD(f) abuf->fields.sfmt_andcr.f
13785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13786 int UNUSED written = 0;
13787 IADDR UNUSED pc = abuf->addr;
13788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13789
13790 {
13791 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13792 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13793 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13794 }
13795
13796 return vpc;
13797 #undef FLD
13798 }
13799
13800 /* ckra: ckra$pack $CRj_int */
13801
13802 static SEM_PC
13803 SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13804 {
13805 #define FLD(f) abuf->fields.sfmt_cckeq.f
13806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13807 int UNUSED written = 0;
13808 IADDR UNUSED pc = abuf->addr;
13809 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13810
13811 {
13812 UQI opval = 3;
13813 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13814 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13815 }
13816
13817 return vpc;
13818 #undef FLD
13819 }
13820
13821 /* ckno: ckno$pack $CRj_int */
13822
13823 static SEM_PC
13824 SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13825 {
13826 #define FLD(f) abuf->fields.sfmt_cckeq.f
13827 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13828 int UNUSED written = 0;
13829 IADDR UNUSED pc = abuf->addr;
13830 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13831
13832 {
13833 UQI opval = 2;
13834 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13835 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13836 }
13837
13838 return vpc;
13839 #undef FLD
13840 }
13841
13842 /* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13843
13844 static SEM_PC
13845 SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13846 {
13847 #define FLD(f) abuf->fields.sfmt_cckeq.f
13848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13849 int UNUSED written = 0;
13850 IADDR UNUSED pc = abuf->addr;
13851 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13852
13853 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13854 {
13855 UQI opval = 3;
13856 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13857 written |= (1 << 1);
13858 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13859 }
13860 } else {
13861 {
13862 UQI opval = 2;
13863 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13864 written |= (1 << 1);
13865 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13866 }
13867 }
13868
13869 abuf->written = written;
13870 return vpc;
13871 #undef FLD
13872 }
13873
13874 /* ckne: ckne$pack $ICCi_3,$CRj_int */
13875
13876 static SEM_PC
13877 SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13878 {
13879 #define FLD(f) abuf->fields.sfmt_cckeq.f
13880 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13881 int UNUSED written = 0;
13882 IADDR UNUSED pc = abuf->addr;
13883 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13884
13885 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13886 {
13887 UQI opval = 3;
13888 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13889 written |= (1 << 1);
13890 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13891 }
13892 } else {
13893 {
13894 UQI opval = 2;
13895 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13896 written |= (1 << 1);
13897 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13898 }
13899 }
13900
13901 abuf->written = written;
13902 return vpc;
13903 #undef FLD
13904 }
13905
13906 /* ckle: ckle$pack $ICCi_3,$CRj_int */
13907
13908 static SEM_PC
13909 SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13910 {
13911 #define FLD(f) abuf->fields.sfmt_cckeq.f
13912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13913 int UNUSED written = 0;
13914 IADDR UNUSED pc = abuf->addr;
13915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13916
13917 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))))) {
13918 {
13919 UQI opval = 3;
13920 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13921 written |= (1 << 1);
13922 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13923 }
13924 } else {
13925 {
13926 UQI opval = 2;
13927 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13928 written |= (1 << 1);
13929 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13930 }
13931 }
13932
13933 abuf->written = written;
13934 return vpc;
13935 #undef FLD
13936 }
13937
13938 /* ckgt: ckgt$pack $ICCi_3,$CRj_int */
13939
13940 static SEM_PC
13941 SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13942 {
13943 #define FLD(f) abuf->fields.sfmt_cckeq.f
13944 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13945 int UNUSED written = 0;
13946 IADDR UNUSED pc = abuf->addr;
13947 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13948
13949 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)))))) {
13950 {
13951 UQI opval = 3;
13952 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13953 written |= (1 << 1);
13954 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13955 }
13956 } else {
13957 {
13958 UQI opval = 2;
13959 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13960 written |= (1 << 1);
13961 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13962 }
13963 }
13964
13965 abuf->written = written;
13966 return vpc;
13967 #undef FLD
13968 }
13969
13970 /* cklt: cklt$pack $ICCi_3,$CRj_int */
13971
13972 static SEM_PC
13973 SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13974 {
13975 #define FLD(f) abuf->fields.sfmt_cckeq.f
13976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13977 int UNUSED written = 0;
13978 IADDR UNUSED pc = abuf->addr;
13979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13980
13981 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)))) {
13982 {
13983 UQI opval = 3;
13984 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13985 written |= (1 << 1);
13986 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13987 }
13988 } else {
13989 {
13990 UQI opval = 2;
13991 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13992 written |= (1 << 1);
13993 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13994 }
13995 }
13996
13997 abuf->written = written;
13998 return vpc;
13999 #undef FLD
14000 }
14001
14002 /* ckge: ckge$pack $ICCi_3,$CRj_int */
14003
14004 static SEM_PC
14005 SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14006 {
14007 #define FLD(f) abuf->fields.sfmt_cckeq.f
14008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14009 int UNUSED written = 0;
14010 IADDR UNUSED pc = abuf->addr;
14011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14012
14013 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))))) {
14014 {
14015 UQI opval = 3;
14016 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14017 written |= (1 << 1);
14018 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14019 }
14020 } else {
14021 {
14022 UQI opval = 2;
14023 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14024 written |= (1 << 1);
14025 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14026 }
14027 }
14028
14029 abuf->written = written;
14030 return vpc;
14031 #undef FLD
14032 }
14033
14034 /* ckls: ckls$pack $ICCi_3,$CRj_int */
14035
14036 static SEM_PC
14037 SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14038 {
14039 #define FLD(f) abuf->fields.sfmt_cckeq.f
14040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14041 int UNUSED written = 0;
14042 IADDR UNUSED pc = abuf->addr;
14043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14044
14045 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14046 {
14047 UQI opval = 3;
14048 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14049 written |= (1 << 1);
14050 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14051 }
14052 } else {
14053 {
14054 UQI opval = 2;
14055 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14056 written |= (1 << 1);
14057 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14058 }
14059 }
14060
14061 abuf->written = written;
14062 return vpc;
14063 #undef FLD
14064 }
14065
14066 /* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14067
14068 static SEM_PC
14069 SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14070 {
14071 #define FLD(f) abuf->fields.sfmt_cckeq.f
14072 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14073 int UNUSED written = 0;
14074 IADDR UNUSED pc = abuf->addr;
14075 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14076
14077 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))))) {
14078 {
14079 UQI opval = 3;
14080 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14081 written |= (1 << 1);
14082 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14083 }
14084 } else {
14085 {
14086 UQI opval = 2;
14087 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14088 written |= (1 << 1);
14089 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14090 }
14091 }
14092
14093 abuf->written = written;
14094 return vpc;
14095 #undef FLD
14096 }
14097
14098 /* ckc: ckc$pack $ICCi_3,$CRj_int */
14099
14100 static SEM_PC
14101 SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14102 {
14103 #define FLD(f) abuf->fields.sfmt_cckeq.f
14104 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14105 int UNUSED written = 0;
14106 IADDR UNUSED pc = abuf->addr;
14107 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14108
14109 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14110 {
14111 UQI opval = 3;
14112 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14113 written |= (1 << 1);
14114 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14115 }
14116 } else {
14117 {
14118 UQI opval = 2;
14119 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14120 written |= (1 << 1);
14121 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14122 }
14123 }
14124
14125 abuf->written = written;
14126 return vpc;
14127 #undef FLD
14128 }
14129
14130 /* cknc: cknc$pack $ICCi_3,$CRj_int */
14131
14132 static SEM_PC
14133 SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14134 {
14135 #define FLD(f) abuf->fields.sfmt_cckeq.f
14136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14137 int UNUSED written = 0;
14138 IADDR UNUSED pc = abuf->addr;
14139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14140
14141 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14142 {
14143 UQI opval = 3;
14144 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14145 written |= (1 << 1);
14146 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14147 }
14148 } else {
14149 {
14150 UQI opval = 2;
14151 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14152 written |= (1 << 1);
14153 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14154 }
14155 }
14156
14157 abuf->written = written;
14158 return vpc;
14159 #undef FLD
14160 }
14161
14162 /* ckn: ckn$pack $ICCi_3,$CRj_int */
14163
14164 static SEM_PC
14165 SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14166 {
14167 #define FLD(f) abuf->fields.sfmt_cckeq.f
14168 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14169 int UNUSED written = 0;
14170 IADDR UNUSED pc = abuf->addr;
14171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14172
14173 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14174 {
14175 UQI opval = 3;
14176 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14177 written |= (1 << 1);
14178 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14179 }
14180 } else {
14181 {
14182 UQI opval = 2;
14183 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14184 written |= (1 << 1);
14185 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14186 }
14187 }
14188
14189 abuf->written = written;
14190 return vpc;
14191 #undef FLD
14192 }
14193
14194 /* ckp: ckp$pack $ICCi_3,$CRj_int */
14195
14196 static SEM_PC
14197 SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14198 {
14199 #define FLD(f) abuf->fields.sfmt_cckeq.f
14200 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14201 int UNUSED written = 0;
14202 IADDR UNUSED pc = abuf->addr;
14203 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14204
14205 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14206 {
14207 UQI opval = 3;
14208 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14209 written |= (1 << 1);
14210 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14211 }
14212 } else {
14213 {
14214 UQI opval = 2;
14215 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14216 written |= (1 << 1);
14217 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14218 }
14219 }
14220
14221 abuf->written = written;
14222 return vpc;
14223 #undef FLD
14224 }
14225
14226 /* ckv: ckv$pack $ICCi_3,$CRj_int */
14227
14228 static SEM_PC
14229 SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14230 {
14231 #define FLD(f) abuf->fields.sfmt_cckeq.f
14232 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14233 int UNUSED written = 0;
14234 IADDR UNUSED pc = abuf->addr;
14235 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14236
14237 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14238 {
14239 UQI opval = 3;
14240 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14241 written |= (1 << 1);
14242 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14243 }
14244 } else {
14245 {
14246 UQI opval = 2;
14247 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14248 written |= (1 << 1);
14249 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14250 }
14251 }
14252
14253 abuf->written = written;
14254 return vpc;
14255 #undef FLD
14256 }
14257
14258 /* cknv: cknv$pack $ICCi_3,$CRj_int */
14259
14260 static SEM_PC
14261 SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14262 {
14263 #define FLD(f) abuf->fields.sfmt_cckeq.f
14264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14265 int UNUSED written = 0;
14266 IADDR UNUSED pc = abuf->addr;
14267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14268
14269 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14270 {
14271 UQI opval = 3;
14272 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14273 written |= (1 << 1);
14274 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14275 }
14276 } else {
14277 {
14278 UQI opval = 2;
14279 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14280 written |= (1 << 1);
14281 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14282 }
14283 }
14284
14285 abuf->written = written;
14286 return vpc;
14287 #undef FLD
14288 }
14289
14290 /* fckra: fckra$pack $CRj_float */
14291
14292 static SEM_PC
14293 SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14294 {
14295 #define FLD(f) abuf->fields.sfmt_cfckne.f
14296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14297 int UNUSED written = 0;
14298 IADDR UNUSED pc = abuf->addr;
14299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14300
14301 {
14302 UQI opval = 3;
14303 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14304 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14305 }
14306
14307 return vpc;
14308 #undef FLD
14309 }
14310
14311 /* fckno: fckno$pack $CRj_float */
14312
14313 static SEM_PC
14314 SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14315 {
14316 #define FLD(f) abuf->fields.sfmt_cfckne.f
14317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14318 int UNUSED written = 0;
14319 IADDR UNUSED pc = abuf->addr;
14320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14321
14322 {
14323 UQI opval = 2;
14324 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14325 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14326 }
14327
14328 return vpc;
14329 #undef FLD
14330 }
14331
14332 /* fckne: fckne$pack $FCCi_3,$CRj_float */
14333
14334 static SEM_PC
14335 SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14336 {
14337 #define FLD(f) abuf->fields.sfmt_cfckne.f
14338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14339 int UNUSED written = 0;
14340 IADDR UNUSED pc = abuf->addr;
14341 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14342
14343 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))))) {
14344 {
14345 UQI opval = 3;
14346 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14347 written |= (1 << 1);
14348 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14349 }
14350 } else {
14351 {
14352 UQI opval = 2;
14353 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14354 written |= (1 << 1);
14355 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14356 }
14357 }
14358
14359 abuf->written = written;
14360 return vpc;
14361 #undef FLD
14362 }
14363
14364 /* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14365
14366 static SEM_PC
14367 SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14368 {
14369 #define FLD(f) abuf->fields.sfmt_cfckne.f
14370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14371 int UNUSED written = 0;
14372 IADDR UNUSED pc = abuf->addr;
14373 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14374
14375 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14376 {
14377 UQI opval = 3;
14378 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14379 written |= (1 << 1);
14380 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14381 }
14382 } else {
14383 {
14384 UQI opval = 2;
14385 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14386 written |= (1 << 1);
14387 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14388 }
14389 }
14390
14391 abuf->written = written;
14392 return vpc;
14393 #undef FLD
14394 }
14395
14396 /* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14397
14398 static SEM_PC
14399 SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14400 {
14401 #define FLD(f) abuf->fields.sfmt_cfckne.f
14402 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14403 int UNUSED written = 0;
14404 IADDR UNUSED pc = abuf->addr;
14405 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14406
14407 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)))) {
14408 {
14409 UQI opval = 3;
14410 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14411 written |= (1 << 1);
14412 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14413 }
14414 } else {
14415 {
14416 UQI opval = 2;
14417 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14418 written |= (1 << 1);
14419 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14420 }
14421 }
14422
14423 abuf->written = written;
14424 return vpc;
14425 #undef FLD
14426 }
14427
14428 /* fckue: fckue$pack $FCCi_3,$CRj_float */
14429
14430 static SEM_PC
14431 SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14432 {
14433 #define FLD(f) abuf->fields.sfmt_cfckne.f
14434 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14435 int UNUSED written = 0;
14436 IADDR UNUSED pc = abuf->addr;
14437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14438
14439 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14440 {
14441 UQI opval = 3;
14442 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14443 written |= (1 << 1);
14444 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14445 }
14446 } else {
14447 {
14448 UQI opval = 2;
14449 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14450 written |= (1 << 1);
14451 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14452 }
14453 }
14454
14455 abuf->written = written;
14456 return vpc;
14457 #undef FLD
14458 }
14459
14460 /* fckul: fckul$pack $FCCi_3,$CRj_float */
14461
14462 static SEM_PC
14463 SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14464 {
14465 #define FLD(f) abuf->fields.sfmt_cfckne.f
14466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14467 int UNUSED written = 0;
14468 IADDR UNUSED pc = abuf->addr;
14469 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14470
14471 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14472 {
14473 UQI opval = 3;
14474 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14475 written |= (1 << 1);
14476 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14477 }
14478 } else {
14479 {
14480 UQI opval = 2;
14481 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14482 written |= (1 << 1);
14483 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14484 }
14485 }
14486
14487 abuf->written = written;
14488 return vpc;
14489 #undef FLD
14490 }
14491
14492 /* fckge: fckge$pack $FCCi_3,$CRj_float */
14493
14494 static SEM_PC
14495 SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14496 {
14497 #define FLD(f) abuf->fields.sfmt_cfckne.f
14498 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14499 int UNUSED written = 0;
14500 IADDR UNUSED pc = abuf->addr;
14501 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14502
14503 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)))) {
14504 {
14505 UQI opval = 3;
14506 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14507 written |= (1 << 1);
14508 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14509 }
14510 } else {
14511 {
14512 UQI opval = 2;
14513 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14514 written |= (1 << 1);
14515 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14516 }
14517 }
14518
14519 abuf->written = written;
14520 return vpc;
14521 #undef FLD
14522 }
14523
14524 /* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14525
14526 static SEM_PC
14527 SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14528 {
14529 #define FLD(f) abuf->fields.sfmt_cfckne.f
14530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14531 int UNUSED written = 0;
14532 IADDR UNUSED pc = abuf->addr;
14533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14534
14535 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14536 {
14537 UQI opval = 3;
14538 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14539 written |= (1 << 1);
14540 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14541 }
14542 } else {
14543 {
14544 UQI opval = 2;
14545 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14546 written |= (1 << 1);
14547 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14548 }
14549 }
14550
14551 abuf->written = written;
14552 return vpc;
14553 #undef FLD
14554 }
14555
14556 /* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14557
14558 static SEM_PC
14559 SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14560 {
14561 #define FLD(f) abuf->fields.sfmt_cfckne.f
14562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14563 int UNUSED written = 0;
14564 IADDR UNUSED pc = abuf->addr;
14565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14566
14567 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))))) {
14568 {
14569 UQI opval = 3;
14570 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14571 written |= (1 << 1);
14572 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14573 }
14574 } else {
14575 {
14576 UQI opval = 2;
14577 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14578 written |= (1 << 1);
14579 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14580 }
14581 }
14582
14583 abuf->written = written;
14584 return vpc;
14585 #undef FLD
14586 }
14587
14588 /* fckug: fckug$pack $FCCi_3,$CRj_float */
14589
14590 static SEM_PC
14591 SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14592 {
14593 #define FLD(f) abuf->fields.sfmt_cfckne.f
14594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14595 int UNUSED written = 0;
14596 IADDR UNUSED pc = abuf->addr;
14597 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14598
14599 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14600 {
14601 UQI opval = 3;
14602 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14603 written |= (1 << 1);
14604 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14605 }
14606 } else {
14607 {
14608 UQI opval = 2;
14609 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14610 written |= (1 << 1);
14611 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14612 }
14613 }
14614
14615 abuf->written = written;
14616 return vpc;
14617 #undef FLD
14618 }
14619
14620 /* fckle: fckle$pack $FCCi_3,$CRj_float */
14621
14622 static SEM_PC
14623 SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14624 {
14625 #define FLD(f) abuf->fields.sfmt_cfckne.f
14626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14627 int UNUSED written = 0;
14628 IADDR UNUSED pc = abuf->addr;
14629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14630
14631 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)))) {
14632 {
14633 UQI opval = 3;
14634 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14635 written |= (1 << 1);
14636 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14637 }
14638 } else {
14639 {
14640 UQI opval = 2;
14641 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14642 written |= (1 << 1);
14643 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14644 }
14645 }
14646
14647 abuf->written = written;
14648 return vpc;
14649 #undef FLD
14650 }
14651
14652 /* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14653
14654 static SEM_PC
14655 SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14656 {
14657 #define FLD(f) abuf->fields.sfmt_cfckne.f
14658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14659 int UNUSED written = 0;
14660 IADDR UNUSED pc = abuf->addr;
14661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14662
14663 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14664 {
14665 UQI opval = 3;
14666 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14667 written |= (1 << 1);
14668 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14669 }
14670 } else {
14671 {
14672 UQI opval = 2;
14673 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14674 written |= (1 << 1);
14675 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14676 }
14677 }
14678
14679 abuf->written = written;
14680 return vpc;
14681 #undef FLD
14682 }
14683
14684 /* fckule: fckule$pack $FCCi_3,$CRj_float */
14685
14686 static SEM_PC
14687 SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14688 {
14689 #define FLD(f) abuf->fields.sfmt_cfckne.f
14690 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14691 int UNUSED written = 0;
14692 IADDR UNUSED pc = abuf->addr;
14693 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14694
14695 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))))) {
14696 {
14697 UQI opval = 3;
14698 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14699 written |= (1 << 1);
14700 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14701 }
14702 } else {
14703 {
14704 UQI opval = 2;
14705 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14706 written |= (1 << 1);
14707 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14708 }
14709 }
14710
14711 abuf->written = written;
14712 return vpc;
14713 #undef FLD
14714 }
14715
14716 /* fcku: fcku$pack $FCCi_3,$CRj_float */
14717
14718 static SEM_PC
14719 SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14720 {
14721 #define FLD(f) abuf->fields.sfmt_cfckne.f
14722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14723 int UNUSED written = 0;
14724 IADDR UNUSED pc = abuf->addr;
14725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14726
14727 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14728 {
14729 UQI opval = 3;
14730 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14731 written |= (1 << 1);
14732 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14733 }
14734 } else {
14735 {
14736 UQI opval = 2;
14737 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14738 written |= (1 << 1);
14739 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14740 }
14741 }
14742
14743 abuf->written = written;
14744 return vpc;
14745 #undef FLD
14746 }
14747
14748 /* fcko: fcko$pack $FCCi_3,$CRj_float */
14749
14750 static SEM_PC
14751 SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14752 {
14753 #define FLD(f) abuf->fields.sfmt_cfckne.f
14754 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14755 int UNUSED written = 0;
14756 IADDR UNUSED pc = abuf->addr;
14757 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14758
14759 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))))) {
14760 {
14761 UQI opval = 3;
14762 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14763 written |= (1 << 1);
14764 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14765 }
14766 } else {
14767 {
14768 UQI opval = 2;
14769 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14770 written |= (1 << 1);
14771 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14772 }
14773 }
14774
14775 abuf->written = written;
14776 return vpc;
14777 #undef FLD
14778 }
14779
14780 /* cckra: cckra$pack $CRj_int,$CCi,$cond */
14781
14782 static SEM_PC
14783 SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14784 {
14785 #define FLD(f) abuf->fields.sfmt_cckeq.f
14786 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14787 int UNUSED written = 0;
14788 IADDR UNUSED pc = abuf->addr;
14789 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14790
14791 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14792 {
14793 UQI opval = 3;
14794 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14795 written |= (1 << 2);
14796 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14797 }
14798 } else {
14799 {
14800 UQI opval = 0;
14801 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14802 written |= (1 << 2);
14803 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14804 }
14805 }
14806
14807 abuf->written = written;
14808 return vpc;
14809 #undef FLD
14810 }
14811
14812 /* cckno: cckno$pack $CRj_int,$CCi,$cond */
14813
14814 static SEM_PC
14815 SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14816 {
14817 #define FLD(f) abuf->fields.sfmt_cckeq.f
14818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14819 int UNUSED written = 0;
14820 IADDR UNUSED pc = abuf->addr;
14821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14822
14823 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14824 {
14825 UQI opval = 2;
14826 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14827 written |= (1 << 2);
14828 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14829 }
14830 } else {
14831 {
14832 UQI opval = 0;
14833 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14834 written |= (1 << 2);
14835 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14836 }
14837 }
14838
14839 abuf->written = written;
14840 return vpc;
14841 #undef FLD
14842 }
14843
14844 /* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14845
14846 static SEM_PC
14847 SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14848 {
14849 #define FLD(f) abuf->fields.sfmt_cckeq.f
14850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14851 int UNUSED written = 0;
14852 IADDR UNUSED pc = abuf->addr;
14853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14854
14855 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14856 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14857 {
14858 UQI opval = 3;
14859 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14860 written |= (1 << 3);
14861 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14862 }
14863 } else {
14864 {
14865 UQI opval = 2;
14866 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14867 written |= (1 << 3);
14868 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14869 }
14870 }
14871 } else {
14872 {
14873 UQI opval = 0;
14874 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14875 written |= (1 << 3);
14876 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14877 }
14878 }
14879
14880 abuf->written = written;
14881 return vpc;
14882 #undef FLD
14883 }
14884
14885 /* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14886
14887 static SEM_PC
14888 SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14889 {
14890 #define FLD(f) abuf->fields.sfmt_cckeq.f
14891 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14892 int UNUSED written = 0;
14893 IADDR UNUSED pc = abuf->addr;
14894 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14895
14896 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14897 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14898 {
14899 UQI opval = 3;
14900 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14901 written |= (1 << 3);
14902 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14903 }
14904 } else {
14905 {
14906 UQI opval = 2;
14907 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14908 written |= (1 << 3);
14909 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14910 }
14911 }
14912 } else {
14913 {
14914 UQI opval = 0;
14915 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14916 written |= (1 << 3);
14917 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14918 }
14919 }
14920
14921 abuf->written = written;
14922 return vpc;
14923 #undef FLD
14924 }
14925
14926 /* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
14927
14928 static SEM_PC
14929 SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14930 {
14931 #define FLD(f) abuf->fields.sfmt_cckeq.f
14932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14933 int UNUSED written = 0;
14934 IADDR UNUSED pc = abuf->addr;
14935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14936
14937 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14938 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))))) {
14939 {
14940 UQI opval = 3;
14941 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14942 written |= (1 << 3);
14943 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14944 }
14945 } else {
14946 {
14947 UQI opval = 2;
14948 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14949 written |= (1 << 3);
14950 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14951 }
14952 }
14953 } else {
14954 {
14955 UQI opval = 0;
14956 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14957 written |= (1 << 3);
14958 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14959 }
14960 }
14961
14962 abuf->written = written;
14963 return vpc;
14964 #undef FLD
14965 }
14966
14967 /* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
14968
14969 static SEM_PC
14970 SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14971 {
14972 #define FLD(f) abuf->fields.sfmt_cckeq.f
14973 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14974 int UNUSED written = 0;
14975 IADDR UNUSED pc = abuf->addr;
14976 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14977
14978 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14979 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)))))) {
14980 {
14981 UQI opval = 3;
14982 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14983 written |= (1 << 3);
14984 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14985 }
14986 } else {
14987 {
14988 UQI opval = 2;
14989 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14990 written |= (1 << 3);
14991 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14992 }
14993 }
14994 } else {
14995 {
14996 UQI opval = 0;
14997 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14998 written |= (1 << 3);
14999 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15000 }
15001 }
15002
15003 abuf->written = written;
15004 return vpc;
15005 #undef FLD
15006 }
15007
15008 /* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15009
15010 static SEM_PC
15011 SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15012 {
15013 #define FLD(f) abuf->fields.sfmt_cckeq.f
15014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15015 int UNUSED written = 0;
15016 IADDR UNUSED pc = abuf->addr;
15017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15018
15019 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15020 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)))) {
15021 {
15022 UQI opval = 3;
15023 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15024 written |= (1 << 3);
15025 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15026 }
15027 } else {
15028 {
15029 UQI opval = 2;
15030 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15031 written |= (1 << 3);
15032 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15033 }
15034 }
15035 } else {
15036 {
15037 UQI opval = 0;
15038 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15039 written |= (1 << 3);
15040 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15041 }
15042 }
15043
15044 abuf->written = written;
15045 return vpc;
15046 #undef FLD
15047 }
15048
15049 /* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15050
15051 static SEM_PC
15052 SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15053 {
15054 #define FLD(f) abuf->fields.sfmt_cckeq.f
15055 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15056 int UNUSED written = 0;
15057 IADDR UNUSED pc = abuf->addr;
15058 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15059
15060 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15061 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))))) {
15062 {
15063 UQI opval = 3;
15064 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15065 written |= (1 << 3);
15066 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15067 }
15068 } else {
15069 {
15070 UQI opval = 2;
15071 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15072 written |= (1 << 3);
15073 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15074 }
15075 }
15076 } else {
15077 {
15078 UQI opval = 0;
15079 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15080 written |= (1 << 3);
15081 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15082 }
15083 }
15084
15085 abuf->written = written;
15086 return vpc;
15087 #undef FLD
15088 }
15089
15090 /* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15091
15092 static SEM_PC
15093 SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15094 {
15095 #define FLD(f) abuf->fields.sfmt_cckeq.f
15096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15097 int UNUSED written = 0;
15098 IADDR UNUSED pc = abuf->addr;
15099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15100
15101 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15102 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15103 {
15104 UQI opval = 3;
15105 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15106 written |= (1 << 3);
15107 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15108 }
15109 } else {
15110 {
15111 UQI opval = 2;
15112 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15113 written |= (1 << 3);
15114 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15115 }
15116 }
15117 } else {
15118 {
15119 UQI opval = 0;
15120 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15121 written |= (1 << 3);
15122 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15123 }
15124 }
15125
15126 abuf->written = written;
15127 return vpc;
15128 #undef FLD
15129 }
15130
15131 /* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15132
15133 static SEM_PC
15134 SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15135 {
15136 #define FLD(f) abuf->fields.sfmt_cckeq.f
15137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15138 int UNUSED written = 0;
15139 IADDR UNUSED pc = abuf->addr;
15140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15141
15142 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15143 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))))) {
15144 {
15145 UQI opval = 3;
15146 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15147 written |= (1 << 3);
15148 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15149 }
15150 } else {
15151 {
15152 UQI opval = 2;
15153 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15154 written |= (1 << 3);
15155 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15156 }
15157 }
15158 } else {
15159 {
15160 UQI opval = 0;
15161 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15162 written |= (1 << 3);
15163 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15164 }
15165 }
15166
15167 abuf->written = written;
15168 return vpc;
15169 #undef FLD
15170 }
15171
15172 /* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15173
15174 static SEM_PC
15175 SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15176 {
15177 #define FLD(f) abuf->fields.sfmt_cckeq.f
15178 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15179 int UNUSED written = 0;
15180 IADDR UNUSED pc = abuf->addr;
15181 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15182
15183 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15184 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15185 {
15186 UQI opval = 3;
15187 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15188 written |= (1 << 3);
15189 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15190 }
15191 } else {
15192 {
15193 UQI opval = 2;
15194 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15195 written |= (1 << 3);
15196 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15197 }
15198 }
15199 } else {
15200 {
15201 UQI opval = 0;
15202 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15203 written |= (1 << 3);
15204 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15205 }
15206 }
15207
15208 abuf->written = written;
15209 return vpc;
15210 #undef FLD
15211 }
15212
15213 /* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15214
15215 static SEM_PC
15216 SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15217 {
15218 #define FLD(f) abuf->fields.sfmt_cckeq.f
15219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15220 int UNUSED written = 0;
15221 IADDR UNUSED pc = abuf->addr;
15222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15223
15224 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15225 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15226 {
15227 UQI opval = 3;
15228 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15229 written |= (1 << 3);
15230 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15231 }
15232 } else {
15233 {
15234 UQI opval = 2;
15235 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15236 written |= (1 << 3);
15237 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15238 }
15239 }
15240 } else {
15241 {
15242 UQI opval = 0;
15243 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15244 written |= (1 << 3);
15245 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15246 }
15247 }
15248
15249 abuf->written = written;
15250 return vpc;
15251 #undef FLD
15252 }
15253
15254 /* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15255
15256 static SEM_PC
15257 SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15258 {
15259 #define FLD(f) abuf->fields.sfmt_cckeq.f
15260 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15261 int UNUSED written = 0;
15262 IADDR UNUSED pc = abuf->addr;
15263 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15264
15265 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15266 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15267 {
15268 UQI opval = 3;
15269 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15270 written |= (1 << 3);
15271 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15272 }
15273 } else {
15274 {
15275 UQI opval = 2;
15276 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15277 written |= (1 << 3);
15278 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15279 }
15280 }
15281 } else {
15282 {
15283 UQI opval = 0;
15284 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15285 written |= (1 << 3);
15286 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15287 }
15288 }
15289
15290 abuf->written = written;
15291 return vpc;
15292 #undef FLD
15293 }
15294
15295 /* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15296
15297 static SEM_PC
15298 SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15299 {
15300 #define FLD(f) abuf->fields.sfmt_cckeq.f
15301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15302 int UNUSED written = 0;
15303 IADDR UNUSED pc = abuf->addr;
15304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15305
15306 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15307 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15308 {
15309 UQI opval = 3;
15310 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15311 written |= (1 << 3);
15312 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15313 }
15314 } else {
15315 {
15316 UQI opval = 2;
15317 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15318 written |= (1 << 3);
15319 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15320 }
15321 }
15322 } else {
15323 {
15324 UQI opval = 0;
15325 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15326 written |= (1 << 3);
15327 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15328 }
15329 }
15330
15331 abuf->written = written;
15332 return vpc;
15333 #undef FLD
15334 }
15335
15336 /* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15337
15338 static SEM_PC
15339 SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15340 {
15341 #define FLD(f) abuf->fields.sfmt_cckeq.f
15342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15343 int UNUSED written = 0;
15344 IADDR UNUSED pc = abuf->addr;
15345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15346
15347 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15348 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15349 {
15350 UQI opval = 3;
15351 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15352 written |= (1 << 3);
15353 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15354 }
15355 } else {
15356 {
15357 UQI opval = 2;
15358 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15359 written |= (1 << 3);
15360 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15361 }
15362 }
15363 } else {
15364 {
15365 UQI opval = 0;
15366 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15367 written |= (1 << 3);
15368 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15369 }
15370 }
15371
15372 abuf->written = written;
15373 return vpc;
15374 #undef FLD
15375 }
15376
15377 /* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15378
15379 static SEM_PC
15380 SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15381 {
15382 #define FLD(f) abuf->fields.sfmt_cckeq.f
15383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15384 int UNUSED written = 0;
15385 IADDR UNUSED pc = abuf->addr;
15386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15387
15388 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15389 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15390 {
15391 UQI opval = 3;
15392 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15393 written |= (1 << 3);
15394 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15395 }
15396 } else {
15397 {
15398 UQI opval = 2;
15399 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15400 written |= (1 << 3);
15401 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15402 }
15403 }
15404 } else {
15405 {
15406 UQI opval = 0;
15407 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15408 written |= (1 << 3);
15409 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15410 }
15411 }
15412
15413 abuf->written = written;
15414 return vpc;
15415 #undef FLD
15416 }
15417
15418 /* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15419
15420 static SEM_PC
15421 SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15422 {
15423 #define FLD(f) abuf->fields.sfmt_cfckne.f
15424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15425 int UNUSED written = 0;
15426 IADDR UNUSED pc = abuf->addr;
15427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15428
15429 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15430 {
15431 UQI opval = 3;
15432 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15433 written |= (1 << 2);
15434 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15435 }
15436 } else {
15437 {
15438 UQI opval = 0;
15439 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15440 written |= (1 << 2);
15441 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15442 }
15443 }
15444
15445 abuf->written = written;
15446 return vpc;
15447 #undef FLD
15448 }
15449
15450 /* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15451
15452 static SEM_PC
15453 SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15454 {
15455 #define FLD(f) abuf->fields.sfmt_cfckne.f
15456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15457 int UNUSED written = 0;
15458 IADDR UNUSED pc = abuf->addr;
15459 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15460
15461 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15462 {
15463 UQI opval = 2;
15464 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15465 written |= (1 << 2);
15466 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15467 }
15468 } else {
15469 {
15470 UQI opval = 0;
15471 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15472 written |= (1 << 2);
15473 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15474 }
15475 }
15476
15477 abuf->written = written;
15478 return vpc;
15479 #undef FLD
15480 }
15481
15482 /* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15483
15484 static SEM_PC
15485 SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15486 {
15487 #define FLD(f) abuf->fields.sfmt_cfckne.f
15488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15489 int UNUSED written = 0;
15490 IADDR UNUSED pc = abuf->addr;
15491 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15492
15493 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15494 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))))) {
15495 {
15496 UQI opval = 3;
15497 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15498 written |= (1 << 3);
15499 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15500 }
15501 } else {
15502 {
15503 UQI opval = 2;
15504 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15505 written |= (1 << 3);
15506 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15507 }
15508 }
15509 } else {
15510 {
15511 UQI opval = 0;
15512 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15513 written |= (1 << 3);
15514 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15515 }
15516 }
15517
15518 abuf->written = written;
15519 return vpc;
15520 #undef FLD
15521 }
15522
15523 /* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15524
15525 static SEM_PC
15526 SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15527 {
15528 #define FLD(f) abuf->fields.sfmt_cfckne.f
15529 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15530 int UNUSED written = 0;
15531 IADDR UNUSED pc = abuf->addr;
15532 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15533
15534 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15535 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15536 {
15537 UQI opval = 3;
15538 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15539 written |= (1 << 3);
15540 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15541 }
15542 } else {
15543 {
15544 UQI opval = 2;
15545 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15546 written |= (1 << 3);
15547 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15548 }
15549 }
15550 } else {
15551 {
15552 UQI opval = 0;
15553 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15554 written |= (1 << 3);
15555 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15556 }
15557 }
15558
15559 abuf->written = written;
15560 return vpc;
15561 #undef FLD
15562 }
15563
15564 /* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15565
15566 static SEM_PC
15567 SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15568 {
15569 #define FLD(f) abuf->fields.sfmt_cfckne.f
15570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15571 int UNUSED written = 0;
15572 IADDR UNUSED pc = abuf->addr;
15573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15574
15575 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15576 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)))) {
15577 {
15578 UQI opval = 3;
15579 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15580 written |= (1 << 3);
15581 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15582 }
15583 } else {
15584 {
15585 UQI opval = 2;
15586 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15587 written |= (1 << 3);
15588 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15589 }
15590 }
15591 } else {
15592 {
15593 UQI opval = 0;
15594 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15595 written |= (1 << 3);
15596 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15597 }
15598 }
15599
15600 abuf->written = written;
15601 return vpc;
15602 #undef FLD
15603 }
15604
15605 /* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15606
15607 static SEM_PC
15608 SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15609 {
15610 #define FLD(f) abuf->fields.sfmt_cfckne.f
15611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15612 int UNUSED written = 0;
15613 IADDR UNUSED pc = abuf->addr;
15614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15615
15616 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15617 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15618 {
15619 UQI opval = 3;
15620 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15621 written |= (1 << 3);
15622 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15623 }
15624 } else {
15625 {
15626 UQI opval = 2;
15627 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15628 written |= (1 << 3);
15629 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15630 }
15631 }
15632 } else {
15633 {
15634 UQI opval = 0;
15635 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15636 written |= (1 << 3);
15637 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15638 }
15639 }
15640
15641 abuf->written = written;
15642 return vpc;
15643 #undef FLD
15644 }
15645
15646 /* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15647
15648 static SEM_PC
15649 SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15650 {
15651 #define FLD(f) abuf->fields.sfmt_cfckne.f
15652 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15653 int UNUSED written = 0;
15654 IADDR UNUSED pc = abuf->addr;
15655 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15656
15657 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15658 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15659 {
15660 UQI opval = 3;
15661 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15662 written |= (1 << 3);
15663 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15664 }
15665 } else {
15666 {
15667 UQI opval = 2;
15668 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15669 written |= (1 << 3);
15670 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15671 }
15672 }
15673 } else {
15674 {
15675 UQI opval = 0;
15676 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15677 written |= (1 << 3);
15678 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15679 }
15680 }
15681
15682 abuf->written = written;
15683 return vpc;
15684 #undef FLD
15685 }
15686
15687 /* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15688
15689 static SEM_PC
15690 SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15691 {
15692 #define FLD(f) abuf->fields.sfmt_cfckne.f
15693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15694 int UNUSED written = 0;
15695 IADDR UNUSED pc = abuf->addr;
15696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15697
15698 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15699 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)))) {
15700 {
15701 UQI opval = 3;
15702 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15703 written |= (1 << 3);
15704 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15705 }
15706 } else {
15707 {
15708 UQI opval = 2;
15709 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15710 written |= (1 << 3);
15711 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15712 }
15713 }
15714 } else {
15715 {
15716 UQI opval = 0;
15717 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15718 written |= (1 << 3);
15719 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15720 }
15721 }
15722
15723 abuf->written = written;
15724 return vpc;
15725 #undef FLD
15726 }
15727
15728 /* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15729
15730 static SEM_PC
15731 SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15732 {
15733 #define FLD(f) abuf->fields.sfmt_cfckne.f
15734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15735 int UNUSED written = 0;
15736 IADDR UNUSED pc = abuf->addr;
15737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15738
15739 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15740 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15741 {
15742 UQI opval = 3;
15743 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15744 written |= (1 << 3);
15745 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15746 }
15747 } else {
15748 {
15749 UQI opval = 2;
15750 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15751 written |= (1 << 3);
15752 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15753 }
15754 }
15755 } else {
15756 {
15757 UQI opval = 0;
15758 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15759 written |= (1 << 3);
15760 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15761 }
15762 }
15763
15764 abuf->written = written;
15765 return vpc;
15766 #undef FLD
15767 }
15768
15769 /* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15770
15771 static SEM_PC
15772 SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15773 {
15774 #define FLD(f) abuf->fields.sfmt_cfckne.f
15775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15776 int UNUSED written = 0;
15777 IADDR UNUSED pc = abuf->addr;
15778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15779
15780 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15781 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))))) {
15782 {
15783 UQI opval = 3;
15784 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15785 written |= (1 << 3);
15786 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15787 }
15788 } else {
15789 {
15790 UQI opval = 2;
15791 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15792 written |= (1 << 3);
15793 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15794 }
15795 }
15796 } else {
15797 {
15798 UQI opval = 0;
15799 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15800 written |= (1 << 3);
15801 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15802 }
15803 }
15804
15805 abuf->written = written;
15806 return vpc;
15807 #undef FLD
15808 }
15809
15810 /* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15811
15812 static SEM_PC
15813 SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15814 {
15815 #define FLD(f) abuf->fields.sfmt_cfckne.f
15816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15817 int UNUSED written = 0;
15818 IADDR UNUSED pc = abuf->addr;
15819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15820
15821 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15822 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15823 {
15824 UQI opval = 3;
15825 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15826 written |= (1 << 3);
15827 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15828 }
15829 } else {
15830 {
15831 UQI opval = 2;
15832 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15833 written |= (1 << 3);
15834 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15835 }
15836 }
15837 } else {
15838 {
15839 UQI opval = 0;
15840 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15841 written |= (1 << 3);
15842 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15843 }
15844 }
15845
15846 abuf->written = written;
15847 return vpc;
15848 #undef FLD
15849 }
15850
15851 /* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15852
15853 static SEM_PC
15854 SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15855 {
15856 #define FLD(f) abuf->fields.sfmt_cfckne.f
15857 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15858 int UNUSED written = 0;
15859 IADDR UNUSED pc = abuf->addr;
15860 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15861
15862 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15863 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)))) {
15864 {
15865 UQI opval = 3;
15866 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15867 written |= (1 << 3);
15868 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15869 }
15870 } else {
15871 {
15872 UQI opval = 2;
15873 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15874 written |= (1 << 3);
15875 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15876 }
15877 }
15878 } else {
15879 {
15880 UQI opval = 0;
15881 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15882 written |= (1 << 3);
15883 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15884 }
15885 }
15886
15887 abuf->written = written;
15888 return vpc;
15889 #undef FLD
15890 }
15891
15892 /* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15893
15894 static SEM_PC
15895 SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15896 {
15897 #define FLD(f) abuf->fields.sfmt_cfckne.f
15898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15899 int UNUSED written = 0;
15900 IADDR UNUSED pc = abuf->addr;
15901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15902
15903 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15904 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15905 {
15906 UQI opval = 3;
15907 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15908 written |= (1 << 3);
15909 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15910 }
15911 } else {
15912 {
15913 UQI opval = 2;
15914 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15915 written |= (1 << 3);
15916 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15917 }
15918 }
15919 } else {
15920 {
15921 UQI opval = 0;
15922 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15923 written |= (1 << 3);
15924 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15925 }
15926 }
15927
15928 abuf->written = written;
15929 return vpc;
15930 #undef FLD
15931 }
15932
15933 /* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
15934
15935 static SEM_PC
15936 SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15937 {
15938 #define FLD(f) abuf->fields.sfmt_cfckne.f
15939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15940 int UNUSED written = 0;
15941 IADDR UNUSED pc = abuf->addr;
15942 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15943
15944 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15945 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))))) {
15946 {
15947 UQI opval = 3;
15948 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15949 written |= (1 << 3);
15950 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15951 }
15952 } else {
15953 {
15954 UQI opval = 2;
15955 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15956 written |= (1 << 3);
15957 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15958 }
15959 }
15960 } else {
15961 {
15962 UQI opval = 0;
15963 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15964 written |= (1 << 3);
15965 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15966 }
15967 }
15968
15969 abuf->written = written;
15970 return vpc;
15971 #undef FLD
15972 }
15973
15974 /* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
15975
15976 static SEM_PC
15977 SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15978 {
15979 #define FLD(f) abuf->fields.sfmt_cfckne.f
15980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15981 int UNUSED written = 0;
15982 IADDR UNUSED pc = abuf->addr;
15983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15984
15985 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15986 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
15987 {
15988 UQI opval = 3;
15989 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15990 written |= (1 << 3);
15991 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15992 }
15993 } else {
15994 {
15995 UQI opval = 2;
15996 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15997 written |= (1 << 3);
15998 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15999 }
16000 }
16001 } else {
16002 {
16003 UQI opval = 0;
16004 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16005 written |= (1 << 3);
16006 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16007 }
16008 }
16009
16010 abuf->written = written;
16011 return vpc;
16012 #undef FLD
16013 }
16014
16015 /* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16016
16017 static SEM_PC
16018 SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16019 {
16020 #define FLD(f) abuf->fields.sfmt_cfckne.f
16021 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16022 int UNUSED written = 0;
16023 IADDR UNUSED pc = abuf->addr;
16024 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16025
16026 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16027 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))))) {
16028 {
16029 UQI opval = 3;
16030 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16031 written |= (1 << 3);
16032 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16033 }
16034 } else {
16035 {
16036 UQI opval = 2;
16037 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16038 written |= (1 << 3);
16039 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16040 }
16041 }
16042 } else {
16043 {
16044 UQI opval = 0;
16045 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16046 written |= (1 << 3);
16047 TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16048 }
16049 }
16050
16051 abuf->written = written;
16052 return vpc;
16053 #undef FLD
16054 }
16055
16056 /* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16057
16058 static SEM_PC
16059 SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16060 {
16061 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16063 int UNUSED written = 0;
16064 IADDR UNUSED pc = abuf->addr;
16065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16066
16067 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16068 {
16069 if (EQSI (FLD (f_LI), 1)) {
16070 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16071 }
16072 {
16073 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16074 sim_queue_pc_write (current_cpu, opval);
16075 written |= (1 << 6);
16076 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16077 }
16078 frvbf_model_branch (current_cpu, pc, 2);
16079 }
16080 }
16081
16082 abuf->written = written;
16083 return vpc;
16084 #undef FLD
16085 }
16086
16087 /* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16088
16089 static SEM_PC
16090 SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16091 {
16092 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16093 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16094 int UNUSED written = 0;
16095 IADDR UNUSED pc = abuf->addr;
16096 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16097
16098 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16099 {
16100 if (EQSI (FLD (f_LI), 1)) {
16101 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16102 }
16103 {
16104 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16105 sim_queue_pc_write (current_cpu, opval);
16106 written |= (1 << 6);
16107 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16108 }
16109 frvbf_model_branch (current_cpu, pc, 2);
16110 }
16111 }
16112
16113 abuf->written = written;
16114 return vpc;
16115 #undef FLD
16116 }
16117
16118 /* ici: ici$pack @($GRi,$GRj) */
16119
16120 static SEM_PC
16121 SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16122 {
16123 #define FLD(f) abuf->fields.sfmt_icpl.f
16124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16125 int UNUSED written = 0;
16126 IADDR UNUSED pc = abuf->addr;
16127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16128
16129 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16130
16131 return vpc;
16132 #undef FLD
16133 }
16134
16135 /* dci: dci$pack @($GRi,$GRj) */
16136
16137 static SEM_PC
16138 SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16139 {
16140 #define FLD(f) abuf->fields.sfmt_icpl.f
16141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16142 int UNUSED written = 0;
16143 IADDR UNUSED pc = abuf->addr;
16144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16145
16146 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16147
16148 return vpc;
16149 #undef FLD
16150 }
16151
16152 /* icei: icei$pack @($GRi,$GRj),$ae */
16153
16154 static SEM_PC
16155 SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16156 {
16157 #define FLD(f) abuf->fields.sfmt_icei.f
16158 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16159 int UNUSED written = 0;
16160 IADDR UNUSED pc = abuf->addr;
16161 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16162
16163 if (EQSI (FLD (f_ae), 0)) {
16164 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16165 } else {
16166 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16167 }
16168
16169 return vpc;
16170 #undef FLD
16171 }
16172
16173 /* dcei: dcei$pack @($GRi,$GRj),$ae */
16174
16175 static SEM_PC
16176 SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16177 {
16178 #define FLD(f) abuf->fields.sfmt_icei.f
16179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16180 int UNUSED written = 0;
16181 IADDR UNUSED pc = abuf->addr;
16182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16183
16184 if (EQSI (FLD (f_ae), 0)) {
16185 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16186 } else {
16187 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16188 }
16189
16190 return vpc;
16191 #undef FLD
16192 }
16193
16194 /* dcf: dcf$pack @($GRi,$GRj) */
16195
16196 static SEM_PC
16197 SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16198 {
16199 #define FLD(f) abuf->fields.sfmt_icpl.f
16200 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16201 int UNUSED written = 0;
16202 IADDR UNUSED pc = abuf->addr;
16203 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16204
16205 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16206
16207 return vpc;
16208 #undef FLD
16209 }
16210
16211 /* dcef: dcef$pack @($GRi,$GRj),$ae */
16212
16213 static SEM_PC
16214 SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16215 {
16216 #define FLD(f) abuf->fields.sfmt_icei.f
16217 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16218 int UNUSED written = 0;
16219 IADDR UNUSED pc = abuf->addr;
16220 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16221
16222 if (EQSI (FLD (f_ae), 0)) {
16223 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16224 } else {
16225 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16226 }
16227
16228 return vpc;
16229 #undef FLD
16230 }
16231
16232 /* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16233
16234 static SEM_PC
16235 SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16236 {
16237 #define FLD(f) abuf->fields.sfmt_empty.f
16238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16239 int UNUSED written = 0;
16240 IADDR UNUSED pc = abuf->addr;
16241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16242
16243 ((void) 0); /*nop*/
16244
16245 return vpc;
16246 #undef FLD
16247 }
16248
16249 /* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16250
16251 static SEM_PC
16252 SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16253 {
16254 #define FLD(f) abuf->fields.sfmt_empty.f
16255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16256 int UNUSED written = 0;
16257 IADDR UNUSED pc = abuf->addr;
16258 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16259
16260 ((void) 0); /*nop*/
16261
16262 return vpc;
16263 #undef FLD
16264 }
16265
16266 /* itlbi: itlbi$pack @($GRi,$GRj) */
16267
16268 static SEM_PC
16269 SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16270 {
16271 #define FLD(f) abuf->fields.sfmt_empty.f
16272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16273 int UNUSED written = 0;
16274 IADDR UNUSED pc = abuf->addr;
16275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16276
16277 ((void) 0); /*nop*/
16278
16279 return vpc;
16280 #undef FLD
16281 }
16282
16283 /* dtlbi: dtlbi$pack @($GRi,$GRj) */
16284
16285 static SEM_PC
16286 SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16287 {
16288 #define FLD(f) abuf->fields.sfmt_empty.f
16289 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16290 int UNUSED written = 0;
16291 IADDR UNUSED pc = abuf->addr;
16292 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16293
16294 ((void) 0); /*nop*/
16295
16296 return vpc;
16297 #undef FLD
16298 }
16299
16300 /* icpl: icpl$pack $GRi,$GRj,$lock */
16301
16302 static SEM_PC
16303 SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16304 {
16305 #define FLD(f) abuf->fields.sfmt_icpl.f
16306 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16307 int UNUSED written = 0;
16308 IADDR UNUSED pc = abuf->addr;
16309 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16310
16311 frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16312
16313 return vpc;
16314 #undef FLD
16315 }
16316
16317 /* dcpl: dcpl$pack $GRi,$GRj,$lock */
16318
16319 static SEM_PC
16320 SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16321 {
16322 #define FLD(f) abuf->fields.sfmt_icpl.f
16323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16324 int UNUSED written = 0;
16325 IADDR UNUSED pc = abuf->addr;
16326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16327
16328 frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16329
16330 return vpc;
16331 #undef FLD
16332 }
16333
16334 /* icul: icul$pack $GRi */
16335
16336 static SEM_PC
16337 SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16338 {
16339 #define FLD(f) abuf->fields.sfmt_jmpil.f
16340 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16341 int UNUSED written = 0;
16342 IADDR UNUSED pc = abuf->addr;
16343 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16344
16345 frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16346
16347 return vpc;
16348 #undef FLD
16349 }
16350
16351 /* dcul: dcul$pack $GRi */
16352
16353 static SEM_PC
16354 SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16355 {
16356 #define FLD(f) abuf->fields.sfmt_jmpil.f
16357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16358 int UNUSED written = 0;
16359 IADDR UNUSED pc = abuf->addr;
16360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16361
16362 frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16363
16364 return vpc;
16365 #undef FLD
16366 }
16367
16368 /* bar: bar$pack */
16369
16370 static SEM_PC
16371 SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16372 {
16373 #define FLD(f) abuf->fields.sfmt_empty.f
16374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16375 int UNUSED written = 0;
16376 IADDR UNUSED pc = abuf->addr;
16377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16378
16379 ((void) 0); /*nop*/
16380
16381 return vpc;
16382 #undef FLD
16383 }
16384
16385 /* membar: membar$pack */
16386
16387 static SEM_PC
16388 SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16389 {
16390 #define FLD(f) abuf->fields.sfmt_empty.f
16391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16392 int UNUSED written = 0;
16393 IADDR UNUSED pc = abuf->addr;
16394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16395
16396 ((void) 0); /*nop*/
16397
16398 return vpc;
16399 #undef FLD
16400 }
16401
16402 /* lrai: lrai$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16403
16404 static SEM_PC
16405 SEM_FN_NAME (frvbf,lrai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16406 {
16407 #define FLD(f) abuf->fields.sfmt_empty.f
16408 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16409 int UNUSED written = 0;
16410 IADDR UNUSED pc = abuf->addr;
16411 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16412
16413 ((void) 0); /*nop*/
16414
16415 return vpc;
16416 #undef FLD
16417 }
16418
16419 /* lrad: lrad$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16420
16421 static SEM_PC
16422 SEM_FN_NAME (frvbf,lrad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16423 {
16424 #define FLD(f) abuf->fields.sfmt_empty.f
16425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16426 int UNUSED written = 0;
16427 IADDR UNUSED pc = abuf->addr;
16428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16429
16430 ((void) 0); /*nop*/
16431
16432 return vpc;
16433 #undef FLD
16434 }
16435
16436 /* tlbpr: tlbpr$pack $GRi,$GRj,$TLBPRopx,$TLBPRL */
16437
16438 static SEM_PC
16439 SEM_FN_NAME (frvbf,tlbpr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16440 {
16441 #define FLD(f) abuf->fields.sfmt_empty.f
16442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16443 int UNUSED written = 0;
16444 IADDR UNUSED pc = abuf->addr;
16445 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16446
16447 ((void) 0); /*nop*/
16448
16449 return vpc;
16450 #undef FLD
16451 }
16452
16453 /* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16454
16455 static SEM_PC
16456 SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16457 {
16458 #define FLD(f) abuf->fields.sfmt_empty.f
16459 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16460 int UNUSED written = 0;
16461 IADDR UNUSED pc = abuf->addr;
16462 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16463
16464 ((void) 0); /*nop*/
16465
16466 return vpc;
16467 #undef FLD
16468 }
16469
16470 /* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16471
16472 static SEM_PC
16473 SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16474 {
16475 #define FLD(f) abuf->fields.sfmt_empty.f
16476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16477 int UNUSED written = 0;
16478 IADDR UNUSED pc = abuf->addr;
16479 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16480
16481 ((void) 0); /*nop*/
16482
16483 return vpc;
16484 #undef FLD
16485 }
16486
16487 /* clrgr: clrgr$pack $GRk */
16488
16489 static SEM_PC
16490 SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16491 {
16492 #define FLD(f) abuf->fields.sfmt_swapi.f
16493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16494 int UNUSED written = 0;
16495 IADDR UNUSED pc = abuf->addr;
16496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16497
16498 {
16499 frv_ref_SI (GET_H_GR (FLD (f_GRk)));
16500 frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
16501 }
16502
16503 return vpc;
16504 #undef FLD
16505 }
16506
16507 /* clrfr: clrfr$pack $FRk */
16508
16509 static SEM_PC
16510 SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16511 {
16512 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16514 int UNUSED written = 0;
16515 IADDR UNUSED pc = abuf->addr;
16516 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16517
16518 {
16519 frv_ref_SI (GET_H_FR (FLD (f_FRk)));
16520 frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
16521 }
16522
16523 return vpc;
16524 #undef FLD
16525 }
16526
16527 /* clrga: clrga$pack */
16528
16529 static SEM_PC
16530 SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16531 {
16532 #define FLD(f) abuf->fields.sfmt_empty.f
16533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16534 int UNUSED written = 0;
16535 IADDR UNUSED pc = abuf->addr;
16536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16537
16538 frvbf_clear_ne_flags (current_cpu, -1, 0);
16539
16540 return vpc;
16541 #undef FLD
16542 }
16543
16544 /* clrfa: clrfa$pack */
16545
16546 static SEM_PC
16547 SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16548 {
16549 #define FLD(f) abuf->fields.sfmt_empty.f
16550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16551 int UNUSED written = 0;
16552 IADDR UNUSED pc = abuf->addr;
16553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16554
16555 frvbf_clear_ne_flags (current_cpu, -1, 1);
16556
16557 return vpc;
16558 #undef FLD
16559 }
16560
16561 /* commitgr: commitgr$pack $GRk */
16562
16563 static SEM_PC
16564 SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16565 {
16566 #define FLD(f) abuf->fields.sfmt_setlos.f
16567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16568 int UNUSED written = 0;
16569 IADDR UNUSED pc = abuf->addr;
16570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16571
16572 frvbf_commit (current_cpu, FLD (f_GRk), 0);
16573
16574 return vpc;
16575 #undef FLD
16576 }
16577
16578 /* commitfr: commitfr$pack $FRk */
16579
16580 static SEM_PC
16581 SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16582 {
16583 #define FLD(f) abuf->fields.sfmt_mhsethis.f
16584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16585 int UNUSED written = 0;
16586 IADDR UNUSED pc = abuf->addr;
16587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16588
16589 frvbf_commit (current_cpu, FLD (f_FRk), 1);
16590
16591 return vpc;
16592 #undef FLD
16593 }
16594
16595 /* commitga: commitga$pack */
16596
16597 static SEM_PC
16598 SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16599 {
16600 #define FLD(f) abuf->fields.sfmt_empty.f
16601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16602 int UNUSED written = 0;
16603 IADDR UNUSED pc = abuf->addr;
16604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16605
16606 frvbf_commit (current_cpu, -1, 0);
16607
16608 return vpc;
16609 #undef FLD
16610 }
16611
16612 /* commitfa: commitfa$pack */
16613
16614 static SEM_PC
16615 SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16616 {
16617 #define FLD(f) abuf->fields.sfmt_empty.f
16618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16619 int UNUSED written = 0;
16620 IADDR UNUSED pc = abuf->addr;
16621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16622
16623 frvbf_commit (current_cpu, -1, 1);
16624
16625 return vpc;
16626 #undef FLD
16627 }
16628
16629 /* fitos: fitos$pack $FRintj,$FRk */
16630
16631 static SEM_PC
16632 SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16633 {
16634 #define FLD(f) abuf->fields.sfmt_fditos.f
16635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16636 int UNUSED written = 0;
16637 IADDR UNUSED pc = abuf->addr;
16638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16639
16640 {
16641 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16642 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16643 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16644 }
16645
16646 return vpc;
16647 #undef FLD
16648 }
16649
16650 /* fstoi: fstoi$pack $FRj,$FRintk */
16651
16652 static SEM_PC
16653 SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16654 {
16655 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16657 int UNUSED written = 0;
16658 IADDR UNUSED pc = abuf->addr;
16659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16660
16661 {
16662 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16663 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16664 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16665 }
16666
16667 return vpc;
16668 #undef FLD
16669 }
16670
16671 /* fitod: fitod$pack $FRintj,$FRdoublek */
16672
16673 static SEM_PC
16674 SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16675 {
16676 #define FLD(f) abuf->fields.sfmt_fitod.f
16677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16678 int UNUSED written = 0;
16679 IADDR UNUSED pc = abuf->addr;
16680 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16681
16682 {
16683 DF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsidf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16684 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16685 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16686 }
16687
16688 return vpc;
16689 #undef FLD
16690 }
16691
16692 /* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16693
16694 static SEM_PC
16695 SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16696 {
16697 #define FLD(f) abuf->fields.sfmt_fdtoi.f
16698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16699 int UNUSED written = 0;
16700 IADDR UNUSED pc = abuf->addr;
16701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16702
16703 {
16704 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixdfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_DOUBLE (FLD (f_FRj)));
16705 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16706 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16707 }
16708
16709 return vpc;
16710 #undef FLD
16711 }
16712
16713 /* fditos: fditos$pack $FRintj,$FRk */
16714
16715 static SEM_PC
16716 SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16717 {
16718 #define FLD(f) abuf->fields.sfmt_fditos.f
16719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16720 int UNUSED written = 0;
16721 IADDR UNUSED pc = abuf->addr;
16722 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16723
16724 {
16725 {
16726 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16727 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16728 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16729 }
16730 {
16731 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (ADDSI (FLD (f_FRj), 1)));
16732 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16733 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16734 }
16735 }
16736
16737 return vpc;
16738 #undef FLD
16739 }
16740
16741 /* fdstoi: fdstoi$pack $FRj,$FRintk */
16742
16743 static SEM_PC
16744 SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16745 {
16746 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16748 int UNUSED written = 0;
16749 IADDR UNUSED pc = abuf->addr;
16750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16751
16752 {
16753 {
16754 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16755 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16756 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16757 }
16758 {
16759 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
16760 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
16761 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16762 }
16763 }
16764
16765 return vpc;
16766 #undef FLD
16767 }
16768
16769 /* nfditos: nfditos$pack $FRintj,$FRk */
16770
16771 static SEM_PC
16772 SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16773 {
16774 #define FLD(f) abuf->fields.sfmt_fditos.f
16775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16776 int UNUSED written = 0;
16777 IADDR UNUSED pc = abuf->addr;
16778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16779
16780 {
16781 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16782 {
16783 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16784 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16785 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16786 }
16787 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16788 {
16789 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (ADDSI (FLD (f_FRj), 1)));
16790 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16791 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16792 }
16793 }
16794
16795 return vpc;
16796 #undef FLD
16797 }
16798
16799 /* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16800
16801 static SEM_PC
16802 SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16803 {
16804 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16805 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16806 int UNUSED written = 0;
16807 IADDR UNUSED pc = abuf->addr;
16808 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16809
16810 {
16811 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16812 {
16813 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16814 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16815 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16816 }
16817 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16818 {
16819 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
16820 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
16821 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16822 }
16823 }
16824
16825 return vpc;
16826 #undef FLD
16827 }
16828
16829 /* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16830
16831 static SEM_PC
16832 SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16833 {
16834 #define FLD(f) abuf->fields.sfmt_cfitos.f
16835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16836 int UNUSED written = 0;
16837 IADDR UNUSED pc = abuf->addr;
16838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16839
16840 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16841 {
16842 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16843 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16844 written |= (1 << 3);
16845 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16846 }
16847 }
16848
16849 abuf->written = written;
16850 return vpc;
16851 #undef FLD
16852 }
16853
16854 /* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16855
16856 static SEM_PC
16857 SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16858 {
16859 #define FLD(f) abuf->fields.sfmt_cfstoi.f
16860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16861 int UNUSED written = 0;
16862 IADDR UNUSED pc = abuf->addr;
16863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16864
16865 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16866 {
16867 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16868 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16869 written |= (1 << 3);
16870 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16871 }
16872 }
16873
16874 abuf->written = written;
16875 return vpc;
16876 #undef FLD
16877 }
16878
16879 /* nfitos: nfitos$pack $FRintj,$FRk */
16880
16881 static SEM_PC
16882 SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16883 {
16884 #define FLD(f) abuf->fields.sfmt_fditos.f
16885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16886 int UNUSED written = 0;
16887 IADDR UNUSED pc = abuf->addr;
16888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16889
16890 {
16891 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16892 {
16893 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16894 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16895 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16896 }
16897 }
16898
16899 return vpc;
16900 #undef FLD
16901 }
16902
16903 /* nfstoi: nfstoi$pack $FRj,$FRintk */
16904
16905 static SEM_PC
16906 SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16907 {
16908 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16909 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16910 int UNUSED written = 0;
16911 IADDR UNUSED pc = abuf->addr;
16912 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16913
16914 {
16915 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16916 {
16917 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16918 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16919 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16920 }
16921 }
16922
16923 return vpc;
16924 #undef FLD
16925 }
16926
16927 /* fmovs: fmovs$pack $FRj,$FRk */
16928
16929 static SEM_PC
16930 SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16931 {
16932 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16934 int UNUSED written = 0;
16935 IADDR UNUSED pc = abuf->addr;
16936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16937
16938 {
16939 SF opval = GET_H_FR (FLD (f_FRj));
16940 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16941 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16942 }
16943
16944 return vpc;
16945 #undef FLD
16946 }
16947
16948 /* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16949
16950 static SEM_PC
16951 SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16952 {
16953 #define FLD(f) abuf->fields.sfmt_fmaddd.f
16954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16955 int UNUSED written = 0;
16956 IADDR UNUSED pc = abuf->addr;
16957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16958
16959 {
16960 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16961 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16962 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16963 }
16964
16965 return vpc;
16966 #undef FLD
16967 }
16968
16969 /* fdmovs: fdmovs$pack $FRj,$FRk */
16970
16971 static SEM_PC
16972 SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16973 {
16974 #define FLD(f) abuf->fields.sfmt_fdmadds.f
16975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16976 int UNUSED written = 0;
16977 IADDR UNUSED pc = abuf->addr;
16978 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16979
16980 {
16981 {
16982 SF opval = GET_H_FR (FLD (f_FRj));
16983 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16984 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16985 }
16986 {
16987 SF opval = GET_H_FR (ADDSI (FLD (f_FRj), 1));
16988 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16989 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16990 }
16991 }
16992
16993 return vpc;
16994 #undef FLD
16995 }
16996
16997 /* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
16998
16999 static SEM_PC
17000 SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17001 {
17002 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17004 int UNUSED written = 0;
17005 IADDR UNUSED pc = abuf->addr;
17006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17007
17008 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17009 {
17010 SF opval = GET_H_FR (FLD (f_FRj));
17011 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17012 written |= (1 << 3);
17013 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17014 }
17015 }
17016
17017 abuf->written = written;
17018 return vpc;
17019 #undef FLD
17020 }
17021
17022 /* fnegs: fnegs$pack $FRj,$FRk */
17023
17024 static SEM_PC
17025 SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17026 {
17027 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17028 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17029 int UNUSED written = 0;
17030 IADDR UNUSED pc = abuf->addr;
17031 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17032
17033 {
17034 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17035 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17036 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17037 }
17038
17039 return vpc;
17040 #undef FLD
17041 }
17042
17043 /* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17044
17045 static SEM_PC
17046 SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17047 {
17048 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17049 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17050 int UNUSED written = 0;
17051 IADDR UNUSED pc = abuf->addr;
17052 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17053
17054 {
17055 DF opval = CGEN_CPU_FPU (current_cpu)->ops->negdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17056 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17057 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17058 }
17059
17060 return vpc;
17061 #undef FLD
17062 }
17063
17064 /* fdnegs: fdnegs$pack $FRj,$FRk */
17065
17066 static SEM_PC
17067 SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17068 {
17069 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17071 int UNUSED written = 0;
17072 IADDR UNUSED pc = abuf->addr;
17073 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17074
17075 {
17076 {
17077 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17078 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17079 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17080 }
17081 {
17082 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17083 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17084 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17085 }
17086 }
17087
17088 return vpc;
17089 #undef FLD
17090 }
17091
17092 /* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17093
17094 static SEM_PC
17095 SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17096 {
17097 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17099 int UNUSED written = 0;
17100 IADDR UNUSED pc = abuf->addr;
17101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17102
17103 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17104 {
17105 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17106 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17107 written |= (1 << 3);
17108 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17109 }
17110 }
17111
17112 abuf->written = written;
17113 return vpc;
17114 #undef FLD
17115 }
17116
17117 /* fabss: fabss$pack $FRj,$FRk */
17118
17119 static SEM_PC
17120 SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17121 {
17122 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17124 int UNUSED written = 0;
17125 IADDR UNUSED pc = abuf->addr;
17126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17127
17128 {
17129 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17130 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17131 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17132 }
17133
17134 return vpc;
17135 #undef FLD
17136 }
17137
17138 /* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17139
17140 static SEM_PC
17141 SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17142 {
17143 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17145 int UNUSED written = 0;
17146 IADDR UNUSED pc = abuf->addr;
17147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17148
17149 {
17150 DF opval = CGEN_CPU_FPU (current_cpu)->ops->absdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17151 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17152 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17153 }
17154
17155 return vpc;
17156 #undef FLD
17157 }
17158
17159 /* fdabss: fdabss$pack $FRj,$FRk */
17160
17161 static SEM_PC
17162 SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17163 {
17164 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17166 int UNUSED written = 0;
17167 IADDR UNUSED pc = abuf->addr;
17168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17169
17170 {
17171 {
17172 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17173 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17174 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17175 }
17176 {
17177 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17178 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17179 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17180 }
17181 }
17182
17183 return vpc;
17184 #undef FLD
17185 }
17186
17187 /* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17188
17189 static SEM_PC
17190 SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17191 {
17192 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17193 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17194 int UNUSED written = 0;
17195 IADDR UNUSED pc = abuf->addr;
17196 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17197
17198 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17199 {
17200 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17201 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17202 written |= (1 << 3);
17203 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17204 }
17205 }
17206
17207 abuf->written = written;
17208 return vpc;
17209 #undef FLD
17210 }
17211
17212 /* fsqrts: fsqrts$pack $FRj,$FRk */
17213
17214 static SEM_PC
17215 SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17216 {
17217 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17219 int UNUSED written = 0;
17220 IADDR UNUSED pc = abuf->addr;
17221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17222
17223 {
17224 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17225 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17226 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17227 }
17228
17229 return vpc;
17230 #undef FLD
17231 }
17232
17233 /* fdsqrts: fdsqrts$pack $FRj,$FRk */
17234
17235 static SEM_PC
17236 SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17237 {
17238 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17240 int UNUSED written = 0;
17241 IADDR UNUSED pc = abuf->addr;
17242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17243
17244 {
17245 {
17246 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17247 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17248 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17249 }
17250 {
17251 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17252 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17253 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17254 }
17255 }
17256
17257 return vpc;
17258 #undef FLD
17259 }
17260
17261 /* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17262
17263 static SEM_PC
17264 SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17265 {
17266 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17268 int UNUSED written = 0;
17269 IADDR UNUSED pc = abuf->addr;
17270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17271
17272 {
17273 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17274 {
17275 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17276 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17277 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17278 }
17279 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17280 {
17281 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17282 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17283 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17284 }
17285 }
17286
17287 return vpc;
17288 #undef FLD
17289 }
17290
17291 /* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17292
17293 static SEM_PC
17294 SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17295 {
17296 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17298 int UNUSED written = 0;
17299 IADDR UNUSED pc = abuf->addr;
17300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17301
17302 {
17303 DF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17304 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17305 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17306 }
17307
17308 return vpc;
17309 #undef FLD
17310 }
17311
17312 /* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17313
17314 static SEM_PC
17315 SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17316 {
17317 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17319 int UNUSED written = 0;
17320 IADDR UNUSED pc = abuf->addr;
17321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17322
17323 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17324 {
17325 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17326 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17327 written |= (1 << 3);
17328 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17329 }
17330 }
17331
17332 abuf->written = written;
17333 return vpc;
17334 #undef FLD
17335 }
17336
17337 /* nfsqrts: nfsqrts$pack $FRj,$FRk */
17338
17339 static SEM_PC
17340 SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17341 {
17342 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17344 int UNUSED written = 0;
17345 IADDR UNUSED pc = abuf->addr;
17346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17347
17348 {
17349 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17350 {
17351 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17352 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17353 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17354 }
17355 }
17356
17357 return vpc;
17358 #undef FLD
17359 }
17360
17361 /* fadds: fadds$pack $FRi,$FRj,$FRk */
17362
17363 static SEM_PC
17364 SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17365 {
17366 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17368 int UNUSED written = 0;
17369 IADDR UNUSED pc = abuf->addr;
17370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17371
17372 {
17373 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17374 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17375 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17376 }
17377
17378 return vpc;
17379 #undef FLD
17380 }
17381
17382 /* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17383
17384 static SEM_PC
17385 SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17386 {
17387 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17389 int UNUSED written = 0;
17390 IADDR UNUSED pc = abuf->addr;
17391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17392
17393 {
17394 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17395 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17396 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17397 }
17398
17399 return vpc;
17400 #undef FLD
17401 }
17402
17403 /* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17404
17405 static SEM_PC
17406 SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17407 {
17408 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17410 int UNUSED written = 0;
17411 IADDR UNUSED pc = abuf->addr;
17412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17413
17414 {
17415 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17416 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17417 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17418 }
17419
17420 return vpc;
17421 #undef FLD
17422 }
17423
17424 /* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17425
17426 static SEM_PC
17427 SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17428 {
17429 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17430 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17431 int UNUSED written = 0;
17432 IADDR UNUSED pc = abuf->addr;
17433 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17434
17435 {
17436 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17437 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17438 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17439 }
17440
17441 return vpc;
17442 #undef FLD
17443 }
17444
17445 /* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17446
17447 static SEM_PC
17448 SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17449 {
17450 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17451 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17452 int UNUSED written = 0;
17453 IADDR UNUSED pc = abuf->addr;
17454 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17455
17456 {
17457 DF opval = CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17458 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17459 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17460 }
17461
17462 return vpc;
17463 #undef FLD
17464 }
17465
17466 /* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17467
17468 static SEM_PC
17469 SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17470 {
17471 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17472 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17473 int UNUSED written = 0;
17474 IADDR UNUSED pc = abuf->addr;
17475 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17476
17477 {
17478 DF opval = CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17479 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17480 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17481 }
17482
17483 return vpc;
17484 #undef FLD
17485 }
17486
17487 /* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17488
17489 static SEM_PC
17490 SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17491 {
17492 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17494 int UNUSED written = 0;
17495 IADDR UNUSED pc = abuf->addr;
17496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17497
17498 {
17499 DF opval = CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17500 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17501 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17502 }
17503
17504 return vpc;
17505 #undef FLD
17506 }
17507
17508 /* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17509
17510 static SEM_PC
17511 SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17512 {
17513 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17515 int UNUSED written = 0;
17516 IADDR UNUSED pc = abuf->addr;
17517 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17518
17519 {
17520 DF opval = CGEN_CPU_FPU (current_cpu)->ops->divdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17521 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17522 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17523 }
17524
17525 return vpc;
17526 #undef FLD
17527 }
17528
17529 /* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17530
17531 static SEM_PC
17532 SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17533 {
17534 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17536 int UNUSED written = 0;
17537 IADDR UNUSED pc = abuf->addr;
17538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17539
17540 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17541 {
17542 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17543 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17544 written |= (1 << 4);
17545 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17546 }
17547 }
17548
17549 abuf->written = written;
17550 return vpc;
17551 #undef FLD
17552 }
17553
17554 /* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17555
17556 static SEM_PC
17557 SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17558 {
17559 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17561 int UNUSED written = 0;
17562 IADDR UNUSED pc = abuf->addr;
17563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17564
17565 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17566 {
17567 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17568 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17569 written |= (1 << 4);
17570 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17571 }
17572 }
17573
17574 abuf->written = written;
17575 return vpc;
17576 #undef FLD
17577 }
17578
17579 /* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17580
17581 static SEM_PC
17582 SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17583 {
17584 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17586 int UNUSED written = 0;
17587 IADDR UNUSED pc = abuf->addr;
17588 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17589
17590 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17591 {
17592 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17593 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17594 written |= (1 << 4);
17595 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17596 }
17597 }
17598
17599 abuf->written = written;
17600 return vpc;
17601 #undef FLD
17602 }
17603
17604 /* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17605
17606 static SEM_PC
17607 SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17608 {
17609 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17611 int UNUSED written = 0;
17612 IADDR UNUSED pc = abuf->addr;
17613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17614
17615 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17616 {
17617 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17618 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17619 written |= (1 << 4);
17620 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17621 }
17622 }
17623
17624 abuf->written = written;
17625 return vpc;
17626 #undef FLD
17627 }
17628
17629 /* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17630
17631 static SEM_PC
17632 SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17633 {
17634 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17636 int UNUSED written = 0;
17637 IADDR UNUSED pc = abuf->addr;
17638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17639
17640 {
17641 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17642 {
17643 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17644 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17645 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17646 }
17647 }
17648
17649 return vpc;
17650 #undef FLD
17651 }
17652
17653 /* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17654
17655 static SEM_PC
17656 SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17657 {
17658 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17660 int UNUSED written = 0;
17661 IADDR UNUSED pc = abuf->addr;
17662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17663
17664 {
17665 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17666 {
17667 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17668 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17669 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17670 }
17671 }
17672
17673 return vpc;
17674 #undef FLD
17675 }
17676
17677 /* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17678
17679 static SEM_PC
17680 SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17681 {
17682 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17683 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17684 int UNUSED written = 0;
17685 IADDR UNUSED pc = abuf->addr;
17686 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17687
17688 {
17689 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17690 {
17691 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17692 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17693 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17694 }
17695 }
17696
17697 return vpc;
17698 #undef FLD
17699 }
17700
17701 /* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17702
17703 static SEM_PC
17704 SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17705 {
17706 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17708 int UNUSED written = 0;
17709 IADDR UNUSED pc = abuf->addr;
17710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17711
17712 {
17713 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17714 {
17715 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17716 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17717 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17718 }
17719 }
17720
17721 return vpc;
17722 #undef FLD
17723 }
17724
17725 /* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17726
17727 static SEM_PC
17728 SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17729 {
17730 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17732 int UNUSED written = 0;
17733 IADDR UNUSED pc = abuf->addr;
17734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17735
17736 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)))) {
17737 {
17738 UQI opval = 2;
17739 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17740 written |= (1 << 2);
17741 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17742 }
17743 } else {
17744 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)))) {
17745 {
17746 UQI opval = 8;
17747 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17748 written |= (1 << 2);
17749 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17750 }
17751 } else {
17752 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)))) {
17753 {
17754 UQI opval = 4;
17755 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17756 written |= (1 << 2);
17757 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17758 }
17759 } else {
17760 {
17761 UQI opval = 1;
17762 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17763 written |= (1 << 2);
17764 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17765 }
17766 }
17767 }
17768 }
17769
17770 abuf->written = written;
17771 return vpc;
17772 #undef FLD
17773 }
17774
17775 /* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17776
17777 static SEM_PC
17778 SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17779 {
17780 #define FLD(f) abuf->fields.sfmt_fcmpd.f
17781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17782 int UNUSED written = 0;
17783 IADDR UNUSED pc = abuf->addr;
17784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17785
17786 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)))) {
17787 {
17788 UQI opval = 2;
17789 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17790 written |= (1 << 2);
17791 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17792 }
17793 } else {
17794 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)))) {
17795 {
17796 UQI opval = 8;
17797 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17798 written |= (1 << 2);
17799 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17800 }
17801 } else {
17802 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)))) {
17803 {
17804 UQI opval = 4;
17805 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17806 written |= (1 << 2);
17807 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17808 }
17809 } else {
17810 {
17811 UQI opval = 1;
17812 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17813 written |= (1 << 2);
17814 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17815 }
17816 }
17817 }
17818 }
17819
17820 abuf->written = written;
17821 return vpc;
17822 #undef FLD
17823 }
17824
17825 /* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17826
17827 static SEM_PC
17828 SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17829 {
17830 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17831 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17832 int UNUSED written = 0;
17833 IADDR UNUSED pc = abuf->addr;
17834 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17835
17836 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17837 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)))) {
17838 {
17839 UQI opval = 2;
17840 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17841 written |= (1 << 4);
17842 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17843 }
17844 } else {
17845 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)))) {
17846 {
17847 UQI opval = 8;
17848 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17849 written |= (1 << 4);
17850 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17851 }
17852 } else {
17853 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)))) {
17854 {
17855 UQI opval = 4;
17856 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17857 written |= (1 << 4);
17858 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17859 }
17860 } else {
17861 {
17862 UQI opval = 1;
17863 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17864 written |= (1 << 4);
17865 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17866 }
17867 }
17868 }
17869 }
17870 }
17871
17872 abuf->written = written;
17873 return vpc;
17874 #undef FLD
17875 }
17876
17877 /* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17878
17879 static SEM_PC
17880 SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17881 {
17882 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
17883 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17884 int UNUSED written = 0;
17885 IADDR UNUSED pc = abuf->addr;
17886 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17887
17888 {
17889 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)))) {
17890 {
17891 UQI opval = 2;
17892 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17893 written |= (1 << 7);
17894 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17895 }
17896 } else {
17897 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)))) {
17898 {
17899 UQI opval = 8;
17900 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17901 written |= (1 << 7);
17902 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17903 }
17904 } else {
17905 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)))) {
17906 {
17907 UQI opval = 4;
17908 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17909 written |= (1 << 7);
17910 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17911 }
17912 } else {
17913 {
17914 UQI opval = 1;
17915 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17916 written |= (1 << 7);
17917 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17918 }
17919 }
17920 }
17921 }
17922 if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
17923 {
17924 UQI opval = 2;
17925 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17926 written |= (1 << 8);
17927 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17928 }
17929 } else {
17930 if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
17931 {
17932 UQI opval = 8;
17933 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17934 written |= (1 << 8);
17935 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17936 }
17937 } else {
17938 if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
17939 {
17940 UQI opval = 4;
17941 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17942 written |= (1 << 8);
17943 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17944 }
17945 } else {
17946 {
17947 UQI opval = 1;
17948 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17949 written |= (1 << 8);
17950 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17951 }
17952 }
17953 }
17954 }
17955 }
17956
17957 abuf->written = written;
17958 return vpc;
17959 #undef FLD
17960 }
17961
17962 /* fmadds: fmadds$pack $FRi,$FRj,$FRk */
17963
17964 static SEM_PC
17965 SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17966 {
17967 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17968 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17969 int UNUSED written = 0;
17970 IADDR UNUSED pc = abuf->addr;
17971 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17972
17973 {
17974 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
17975 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17976 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17977 }
17978
17979 return vpc;
17980 #undef FLD
17981 }
17982
17983 /* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
17984
17985 static SEM_PC
17986 SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17987 {
17988 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17990 int UNUSED written = 0;
17991 IADDR UNUSED pc = abuf->addr;
17992 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17993
17994 {
17995 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
17996 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17997 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17998 }
17999
18000 return vpc;
18001 #undef FLD
18002 }
18003
18004 /* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18005
18006 static SEM_PC
18007 SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18008 {
18009 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18010 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18011 int UNUSED written = 0;
18012 IADDR UNUSED pc = abuf->addr;
18013 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18014
18015 {
18016 DF opval = CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj))), GET_H_FR_DOUBLE (FLD (f_FRk)));
18017 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18018 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18019 }
18020
18021 return vpc;
18022 #undef FLD
18023 }
18024
18025 /* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18026
18027 static SEM_PC
18028 SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18029 {
18030 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18032 int UNUSED written = 0;
18033 IADDR UNUSED pc = abuf->addr;
18034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18035
18036 {
18037 DF opval = CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj))), GET_H_FR_DOUBLE (FLD (f_FRk)));
18038 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18039 TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18040 }
18041
18042 return vpc;
18043 #undef FLD
18044 }
18045
18046 /* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18047
18048 static SEM_PC
18049 SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18050 {
18051 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18052 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18053 int UNUSED written = 0;
18054 IADDR UNUSED pc = abuf->addr;
18055 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18056
18057 {
18058 {
18059 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18060 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18061 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18062 }
18063 {
18064 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18065 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18066 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18067 }
18068 }
18069
18070 return vpc;
18071 #undef FLD
18072 }
18073
18074 /* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18075
18076 static SEM_PC
18077 SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18078 {
18079 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18080 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18081 int UNUSED written = 0;
18082 IADDR UNUSED pc = abuf->addr;
18083 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18084
18085 {
18086 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18087 {
18088 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18089 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18090 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18091 }
18092 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18093 {
18094 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18095 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18096 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18097 }
18098 }
18099
18100 return vpc;
18101 #undef FLD
18102 }
18103
18104 /* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18105
18106 static SEM_PC
18107 SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18108 {
18109 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18110 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18111 int UNUSED written = 0;
18112 IADDR UNUSED pc = abuf->addr;
18113 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18114
18115 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18116 {
18117 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18118 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18119 written |= (1 << 5);
18120 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18121 }
18122 }
18123
18124 abuf->written = written;
18125 return vpc;
18126 #undef FLD
18127 }
18128
18129 /* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18130
18131 static SEM_PC
18132 SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18133 {
18134 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18136 int UNUSED written = 0;
18137 IADDR UNUSED pc = abuf->addr;
18138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18139
18140 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18141 {
18142 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18143 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18144 written |= (1 << 5);
18145 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18146 }
18147 }
18148
18149 abuf->written = written;
18150 return vpc;
18151 #undef FLD
18152 }
18153
18154 /* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18155
18156 static SEM_PC
18157 SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18158 {
18159 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18161 int UNUSED written = 0;
18162 IADDR UNUSED pc = abuf->addr;
18163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18164
18165 {
18166 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18167 {
18168 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18169 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18170 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18171 }
18172 }
18173
18174 return vpc;
18175 #undef FLD
18176 }
18177
18178 /* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18179
18180 static SEM_PC
18181 SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18182 {
18183 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18185 int UNUSED written = 0;
18186 IADDR UNUSED pc = abuf->addr;
18187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18188
18189 {
18190 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18191 {
18192 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18193 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18194 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18195 }
18196 }
18197
18198 return vpc;
18199 #undef FLD
18200 }
18201
18202 /* fmas: fmas$pack $FRi,$FRj,$FRk */
18203
18204 static SEM_PC
18205 SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18206 {
18207 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18209 int UNUSED written = 0;
18210 IADDR UNUSED pc = abuf->addr;
18211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18212
18213 {
18214 {
18215 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18216 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18217 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18218 }
18219 {
18220 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18221 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18222 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18223 }
18224 }
18225
18226 return vpc;
18227 #undef FLD
18228 }
18229
18230 /* fmss: fmss$pack $FRi,$FRj,$FRk */
18231
18232 static SEM_PC
18233 SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18234 {
18235 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18237 int UNUSED written = 0;
18238 IADDR UNUSED pc = abuf->addr;
18239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18240
18241 {
18242 {
18243 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18244 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18245 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18246 }
18247 {
18248 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18249 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18250 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18251 }
18252 }
18253
18254 return vpc;
18255 #undef FLD
18256 }
18257
18258 /* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18259
18260 static SEM_PC
18261 SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18262 {
18263 #define FLD(f) abuf->fields.sfmt_fdmas.f
18264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18265 int UNUSED written = 0;
18266 IADDR UNUSED pc = abuf->addr;
18267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18268
18269 {
18270 {
18271 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18272 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18273 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18274 }
18275 {
18276 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18277 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18278 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18279 }
18280 {
18281 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18282 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18283 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18284 }
18285 {
18286 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18287 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18288 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18289 }
18290 }
18291
18292 return vpc;
18293 #undef FLD
18294 }
18295
18296 /* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18297
18298 static SEM_PC
18299 SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18300 {
18301 #define FLD(f) abuf->fields.sfmt_fdmas.f
18302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18303 int UNUSED written = 0;
18304 IADDR UNUSED pc = abuf->addr;
18305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18306
18307 {
18308 {
18309 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18310 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18311 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18312 }
18313 {
18314 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18315 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18316 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18317 }
18318 {
18319 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18320 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18321 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18322 }
18323 {
18324 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18325 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18326 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18327 }
18328 }
18329
18330 return vpc;
18331 #undef FLD
18332 }
18333
18334 /* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18335
18336 static SEM_PC
18337 SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18338 {
18339 #define FLD(f) abuf->fields.sfmt_fdmas.f
18340 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18341 int UNUSED written = 0;
18342 IADDR UNUSED pc = abuf->addr;
18343 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18344
18345 {
18346 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18347 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18348 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18349 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18350 {
18351 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18352 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18353 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18354 }
18355 {
18356 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18357 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18358 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18359 }
18360 {
18361 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18362 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18363 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18364 }
18365 {
18366 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18367 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18368 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18369 }
18370 }
18371
18372 return vpc;
18373 #undef FLD
18374 }
18375
18376 /* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18377
18378 static SEM_PC
18379 SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18380 {
18381 #define FLD(f) abuf->fields.sfmt_fdmas.f
18382 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18383 int UNUSED written = 0;
18384 IADDR UNUSED pc = abuf->addr;
18385 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18386
18387 {
18388 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18389 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18390 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18391 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18392 {
18393 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18394 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18395 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18396 }
18397 {
18398 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18399 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18400 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18401 }
18402 {
18403 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18404 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18405 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18406 }
18407 {
18408 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18409 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18410 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18411 }
18412 }
18413
18414 return vpc;
18415 #undef FLD
18416 }
18417
18418 /* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18419
18420 static SEM_PC
18421 SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18422 {
18423 #define FLD(f) abuf->fields.sfmt_cfmas.f
18424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18425 int UNUSED written = 0;
18426 IADDR UNUSED pc = abuf->addr;
18427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18428
18429 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18430 {
18431 {
18432 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18433 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18434 written |= (1 << 9);
18435 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18436 }
18437 {
18438 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18439 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18440 written |= (1 << 10);
18441 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18442 }
18443 }
18444 }
18445
18446 abuf->written = written;
18447 return vpc;
18448 #undef FLD
18449 }
18450
18451 /* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18452
18453 static SEM_PC
18454 SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18455 {
18456 #define FLD(f) abuf->fields.sfmt_cfmas.f
18457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18458 int UNUSED written = 0;
18459 IADDR UNUSED pc = abuf->addr;
18460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18461
18462 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18463 {
18464 {
18465 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18466 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18467 written |= (1 << 9);
18468 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18469 }
18470 {
18471 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18472 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18473 written |= (1 << 10);
18474 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18475 }
18476 }
18477 }
18478
18479 abuf->written = written;
18480 return vpc;
18481 #undef FLD
18482 }
18483
18484 /* fmad: fmad$pack $FRi,$FRj,$FRk */
18485
18486 static SEM_PC
18487 SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18488 {
18489 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18491 int UNUSED written = 0;
18492 IADDR UNUSED pc = abuf->addr;
18493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18494
18495 {
18496 {
18497 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)))));
18498 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18499 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18500 }
18501 {
18502 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRi), 1))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)))));
18503 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18504 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18505 }
18506 }
18507
18508 return vpc;
18509 #undef FLD
18510 }
18511
18512 /* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18513
18514 static SEM_PC
18515 SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18516 {
18517 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18519 int UNUSED written = 0;
18520 IADDR UNUSED pc = abuf->addr;
18521 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18522
18523 {
18524 {
18525 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)))));
18526 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18527 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18528 }
18529 {
18530 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRi), 1))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)))));
18531 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18532 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18533 }
18534 }
18535
18536 return vpc;
18537 #undef FLD
18538 }
18539
18540 /* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18541
18542 static SEM_PC
18543 SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18544 {
18545 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18547 int UNUSED written = 0;
18548 IADDR UNUSED pc = abuf->addr;
18549 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18550
18551 {
18552 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18553 {
18554 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18555 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18556 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18557 }
18558 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18559 {
18560 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18561 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18562 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18563 }
18564 }
18565
18566 return vpc;
18567 #undef FLD
18568 }
18569
18570 /* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18571
18572 static SEM_PC
18573 SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18574 {
18575 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18576 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18577 int UNUSED written = 0;
18578 IADDR UNUSED pc = abuf->addr;
18579 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18580
18581 {
18582 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18583 {
18584 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18585 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18586 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18587 }
18588 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18589 {
18590 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18591 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18592 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18593 }
18594 }
18595
18596 return vpc;
18597 #undef FLD
18598 }
18599
18600 /* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18601
18602 static SEM_PC
18603 SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18604 {
18605 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18607 int UNUSED written = 0;
18608 IADDR UNUSED pc = abuf->addr;
18609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18610
18611 {
18612 {
18613 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18614 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18615 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18616 }
18617 {
18618 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18619 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18620 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18621 }
18622 }
18623
18624 return vpc;
18625 #undef FLD
18626 }
18627
18628 /* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18629
18630 static SEM_PC
18631 SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18632 {
18633 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18635 int UNUSED written = 0;
18636 IADDR UNUSED pc = abuf->addr;
18637 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18638
18639 {
18640 {
18641 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18642 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18643 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18644 }
18645 {
18646 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18647 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18648 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18649 }
18650 }
18651
18652 return vpc;
18653 #undef FLD
18654 }
18655
18656 /* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18657
18658 static SEM_PC
18659 SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18660 {
18661 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18663 int UNUSED written = 0;
18664 IADDR UNUSED pc = abuf->addr;
18665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18666
18667 {
18668 {
18669 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18670 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18671 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18672 }
18673 {
18674 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18675 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18676 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18677 }
18678 }
18679
18680 return vpc;
18681 #undef FLD
18682 }
18683
18684 /* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18685
18686 static SEM_PC
18687 SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18688 {
18689 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18690 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18691 int UNUSED written = 0;
18692 IADDR UNUSED pc = abuf->addr;
18693 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18694
18695 {
18696 {
18697 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18698 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18699 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18700 }
18701 {
18702 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18703 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18704 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18705 }
18706 }
18707
18708 return vpc;
18709 #undef FLD
18710 }
18711
18712 /* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18713
18714 static SEM_PC
18715 SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18716 {
18717 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18719 int UNUSED written = 0;
18720 IADDR UNUSED pc = abuf->addr;
18721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18722
18723 {
18724 {
18725 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18726 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18727 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18728 }
18729 {
18730 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18731 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18732 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18733 }
18734 }
18735
18736 return vpc;
18737 #undef FLD
18738 }
18739
18740 /* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18741
18742 static SEM_PC
18743 SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18744 {
18745 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18747 int UNUSED written = 0;
18748 IADDR UNUSED pc = abuf->addr;
18749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18750
18751 {
18752 {
18753 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18754 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18755 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18756 }
18757 {
18758 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (FLD (f_FRj)));
18759 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18760 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18761 }
18762 }
18763
18764 return vpc;
18765 #undef FLD
18766 }
18767
18768 /* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18769
18770 static SEM_PC
18771 SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18772 {
18773 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18775 int UNUSED written = 0;
18776 IADDR UNUSED pc = abuf->addr;
18777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18778
18779 {
18780 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18781 {
18782 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18783 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18784 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18785 }
18786 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18787 {
18788 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (FLD (f_FRj)));
18789 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18790 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18791 }
18792 }
18793
18794 return vpc;
18795 #undef FLD
18796 }
18797
18798 /* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18799
18800 static SEM_PC
18801 SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18802 {
18803 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18804 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18805 int UNUSED written = 0;
18806 IADDR UNUSED pc = abuf->addr;
18807 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18808
18809 {
18810 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18811 {
18812 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18813 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18814 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18815 }
18816 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18817 {
18818 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18819 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18820 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18821 }
18822 }
18823
18824 return vpc;
18825 #undef FLD
18826 }
18827
18828 /* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18829
18830 static SEM_PC
18831 SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18832 {
18833 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18835 int UNUSED written = 0;
18836 IADDR UNUSED pc = abuf->addr;
18837 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18838
18839 {
18840 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18841 {
18842 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18843 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18844 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18845 }
18846 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18847 {
18848 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18849 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18850 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18851 }
18852 }
18853
18854 return vpc;
18855 #undef FLD
18856 }
18857
18858 /* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18859
18860 static SEM_PC
18861 SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18862 {
18863 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18865 int UNUSED written = 0;
18866 IADDR UNUSED pc = abuf->addr;
18867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18868
18869 {
18870 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18871 {
18872 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18873 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18874 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18875 }
18876 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18877 {
18878 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18879 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18880 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18881 }
18882 }
18883
18884 return vpc;
18885 #undef FLD
18886 }
18887
18888 /* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18889
18890 static SEM_PC
18891 SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18892 {
18893 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18895 int UNUSED written = 0;
18896 IADDR UNUSED pc = abuf->addr;
18897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18898
18899 {
18900 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18901 {
18902 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18903 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18904 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18905 }
18906 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18907 {
18908 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18909 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18910 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18911 }
18912 }
18913
18914 return vpc;
18915 #undef FLD
18916 }
18917
18918 /* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18919
18920 static SEM_PC
18921 SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18922 {
18923 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18925 int UNUSED written = 0;
18926 IADDR UNUSED pc = abuf->addr;
18927 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18928
18929 {
18930 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18931 {
18932 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18933 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18934 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18935 }
18936 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18937 {
18938 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18939 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18940 TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18941 }
18942 }
18943
18944 return vpc;
18945 #undef FLD
18946 }
18947
18948 /* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18949
18950 static SEM_PC
18951 SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18952 {
18953 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
18954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18955 int UNUSED written = 0;
18956 IADDR UNUSED pc = abuf->addr;
18957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18958
18959 {
18960 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18961 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)))) {
18962 {
18963 UQI opval = 2;
18964 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18965 written |= (1 << 8);
18966 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18967 }
18968 } else {
18969 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)))) {
18970 {
18971 UQI opval = 8;
18972 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18973 written |= (1 << 8);
18974 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18975 }
18976 } else {
18977 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)))) {
18978 {
18979 UQI opval = 4;
18980 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18981 written |= (1 << 8);
18982 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18983 }
18984 } else {
18985 {
18986 UQI opval = 1;
18987 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18988 written |= (1 << 8);
18989 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18990 }
18991 }
18992 }
18993 }
18994 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18995 if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
18996 {
18997 UQI opval = 2;
18998 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
18999 written |= (1 << 9);
19000 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19001 }
19002 } else {
19003 if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
19004 {
19005 UQI opval = 8;
19006 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19007 written |= (1 << 9);
19008 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19009 }
19010 } else {
19011 if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
19012 {
19013 UQI opval = 4;
19014 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19015 written |= (1 << 9);
19016 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19017 }
19018 } else {
19019 {
19020 UQI opval = 1;
19021 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19022 written |= (1 << 9);
19023 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19024 }
19025 }
19026 }
19027 }
19028 }
19029
19030 abuf->written = written;
19031 return vpc;
19032 #undef FLD
19033 }
19034
19035 /* mhsetlos: mhsetlos$pack $u12,$FRklo */
19036
19037 static SEM_PC
19038 SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19039 {
19040 #define FLD(f) abuf->fields.sfmt_mhsetlos.f
19041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19042 int UNUSED written = 0;
19043 IADDR UNUSED pc = abuf->addr;
19044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19045
19046 {
19047 UHI opval = FLD (f_u12);
19048 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19049 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19050 }
19051
19052 return vpc;
19053 #undef FLD
19054 }
19055
19056 /* mhsethis: mhsethis$pack $u12,$FRkhi */
19057
19058 static SEM_PC
19059 SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19060 {
19061 #define FLD(f) abuf->fields.sfmt_mhsethis.f
19062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19063 int UNUSED written = 0;
19064 IADDR UNUSED pc = abuf->addr;
19065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19066
19067 {
19068 UHI opval = FLD (f_u12);
19069 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19070 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19071 }
19072
19073 return vpc;
19074 #undef FLD
19075 }
19076
19077 /* mhdsets: mhdsets$pack $u12,$FRintk */
19078
19079 static SEM_PC
19080 SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19081 {
19082 #define FLD(f) abuf->fields.sfmt_mhdsets.f
19083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19084 int UNUSED written = 0;
19085 IADDR UNUSED pc = abuf->addr;
19086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19087
19088 {
19089 {
19090 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19091 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19092 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19093 }
19094 {
19095 UHI opval = FLD (f_u12);
19096 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19097 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19098 }
19099 {
19100 UHI opval = FLD (f_u12);
19101 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19102 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19103 }
19104 }
19105
19106 return vpc;
19107 #undef FLD
19108 }
19109
19110 /* mhsetloh: mhsetloh$pack $s5,$FRklo */
19111
19112 static SEM_PC
19113 SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19114 {
19115 #define FLD(f) abuf->fields.sfmt_mhsetloh.f
19116 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19117 int UNUSED written = 0;
19118 IADDR UNUSED pc = abuf->addr;
19119 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19120
19121 {
19122 HI tmp_tmp;
19123 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19124 tmp_tmp = ANDHI (tmp_tmp, 2047);
19125 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19126 {
19127 UHI opval = tmp_tmp;
19128 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19129 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19130 }
19131 }
19132
19133 return vpc;
19134 #undef FLD
19135 }
19136
19137 /* mhsethih: mhsethih$pack $s5,$FRkhi */
19138
19139 static SEM_PC
19140 SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19141 {
19142 #define FLD(f) abuf->fields.sfmt_mhsethih.f
19143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19144 int UNUSED written = 0;
19145 IADDR UNUSED pc = abuf->addr;
19146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19147
19148 {
19149 HI tmp_tmp;
19150 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19151 tmp_tmp = ANDHI (tmp_tmp, 2047);
19152 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19153 {
19154 UHI opval = tmp_tmp;
19155 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19156 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19157 }
19158 }
19159
19160 return vpc;
19161 #undef FLD
19162 }
19163
19164 /* mhdseth: mhdseth$pack $s5,$FRintk */
19165
19166 static SEM_PC
19167 SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19168 {
19169 #define FLD(f) abuf->fields.sfmt_mhdseth.f
19170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19171 int UNUSED written = 0;
19172 IADDR UNUSED pc = abuf->addr;
19173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19174
19175 {
19176 {
19177 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19178 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19179 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19180 }
19181 {
19182 HI tmp_tmp;
19183 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRk), 0));
19184 tmp_tmp = ANDHI (tmp_tmp, 2047);
19185 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19186 {
19187 UHI opval = tmp_tmp;
19188 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19189 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19190 }
19191 }
19192 {
19193 HI tmp_tmp;
19194 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRk), 0));
19195 tmp_tmp = ANDHI (tmp_tmp, 2047);
19196 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19197 {
19198 UHI opval = tmp_tmp;
19199 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19200 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19201 }
19202 }
19203 }
19204
19205 return vpc;
19206 #undef FLD
19207 }
19208
19209 /* mand: mand$pack $FRinti,$FRintj,$FRintk */
19210
19211 static SEM_PC
19212 SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19213 {
19214 #define FLD(f) abuf->fields.sfmt_mwcut.f
19215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19216 int UNUSED written = 0;
19217 IADDR UNUSED pc = abuf->addr;
19218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19219
19220 {
19221 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19222 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19223 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19224 }
19225
19226 return vpc;
19227 #undef FLD
19228 }
19229
19230 /* mor: mor$pack $FRinti,$FRintj,$FRintk */
19231
19232 static SEM_PC
19233 SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19234 {
19235 #define FLD(f) abuf->fields.sfmt_mwcut.f
19236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19237 int UNUSED written = 0;
19238 IADDR UNUSED pc = abuf->addr;
19239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19240
19241 {
19242 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19243 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19244 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19245 }
19246
19247 return vpc;
19248 #undef FLD
19249 }
19250
19251 /* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19252
19253 static SEM_PC
19254 SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19255 {
19256 #define FLD(f) abuf->fields.sfmt_mwcut.f
19257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19258 int UNUSED written = 0;
19259 IADDR UNUSED pc = abuf->addr;
19260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19261
19262 {
19263 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19264 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19265 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19266 }
19267
19268 return vpc;
19269 #undef FLD
19270 }
19271
19272 /* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19273
19274 static SEM_PC
19275 SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19276 {
19277 #define FLD(f) abuf->fields.sfmt_cmand.f
19278 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19279 int UNUSED written = 0;
19280 IADDR UNUSED pc = abuf->addr;
19281 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19282
19283 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19284 {
19285 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19286 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19287 written |= (1 << 4);
19288 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19289 }
19290 }
19291
19292 abuf->written = written;
19293 return vpc;
19294 #undef FLD
19295 }
19296
19297 /* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19298
19299 static SEM_PC
19300 SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19301 {
19302 #define FLD(f) abuf->fields.sfmt_cmand.f
19303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19304 int UNUSED written = 0;
19305 IADDR UNUSED pc = abuf->addr;
19306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19307
19308 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19309 {
19310 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19311 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19312 written |= (1 << 4);
19313 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19314 }
19315 }
19316
19317 abuf->written = written;
19318 return vpc;
19319 #undef FLD
19320 }
19321
19322 /* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19323
19324 static SEM_PC
19325 SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19326 {
19327 #define FLD(f) abuf->fields.sfmt_cmand.f
19328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19329 int UNUSED written = 0;
19330 IADDR UNUSED pc = abuf->addr;
19331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19332
19333 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19334 {
19335 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19336 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19337 written |= (1 << 4);
19338 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19339 }
19340 }
19341
19342 abuf->written = written;
19343 return vpc;
19344 #undef FLD
19345 }
19346
19347 /* mnot: mnot$pack $FRintj,$FRintk */
19348
19349 static SEM_PC
19350 SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19351 {
19352 #define FLD(f) abuf->fields.sfmt_mcut.f
19353 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19354 int UNUSED written = 0;
19355 IADDR UNUSED pc = abuf->addr;
19356 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19357
19358 {
19359 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19360 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19361 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19362 }
19363
19364 return vpc;
19365 #undef FLD
19366 }
19367
19368 /* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19369
19370 static SEM_PC
19371 SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19372 {
19373 #define FLD(f) abuf->fields.sfmt_cmand.f
19374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19375 int UNUSED written = 0;
19376 IADDR UNUSED pc = abuf->addr;
19377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19378
19379 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19380 {
19381 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19382 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19383 written |= (1 << 3);
19384 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19385 }
19386 }
19387
19388 abuf->written = written;
19389 return vpc;
19390 #undef FLD
19391 }
19392
19393 /* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19394
19395 static SEM_PC
19396 SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19397 {
19398 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19399 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19400 int UNUSED written = 0;
19401 IADDR UNUSED pc = abuf->addr;
19402 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19403
19404 {
19405 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19406 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19407 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19408 }
19409
19410 return vpc;
19411 #undef FLD
19412 }
19413
19414 /* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19415
19416 static SEM_PC
19417 SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19418 {
19419 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19421 int UNUSED written = 0;
19422 IADDR UNUSED pc = abuf->addr;
19423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19424
19425 {
19426 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19427 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19428 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19429 }
19430
19431 return vpc;
19432 #undef FLD
19433 }
19434
19435 /* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19436
19437 static SEM_PC
19438 SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19439 {
19440 #define FLD(f) abuf->fields.sfmt_mwcut.f
19441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19442 int UNUSED written = 0;
19443 IADDR UNUSED pc = abuf->addr;
19444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19445
19446 {
19447 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), GET_H_FR_INT (FLD (f_FRj)));
19448 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19449 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19450 }
19451
19452 return vpc;
19453 #undef FLD
19454 }
19455
19456 /* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19457
19458 static SEM_PC
19459 SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19460 {
19461 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19463 int UNUSED written = 0;
19464 IADDR UNUSED pc = abuf->addr;
19465 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19466
19467 {
19468 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), FLD (f_u6));
19469 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19470 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19471 }
19472
19473 return vpc;
19474 #undef FLD
19475 }
19476
19477 /* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19478
19479 static SEM_PC
19480 SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19481 {
19482 #define FLD(f) abuf->fields.sfmt_mcut.f
19483 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19484 int UNUSED written = 0;
19485 IADDR UNUSED pc = abuf->addr;
19486 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19487
19488 {
19489 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19490 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19491 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19492 }
19493
19494 return vpc;
19495 #undef FLD
19496 }
19497
19498 /* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19499
19500 static SEM_PC
19501 SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19502 {
19503 #define FLD(f) abuf->fields.sfmt_mcuti.f
19504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19505 int UNUSED written = 0;
19506 IADDR UNUSED pc = abuf->addr;
19507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19508
19509 {
19510 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19511 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19512 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19513 }
19514
19515 return vpc;
19516 #undef FLD
19517 }
19518
19519 /* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19520
19521 static SEM_PC
19522 SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19523 {
19524 #define FLD(f) abuf->fields.sfmt_mcut.f
19525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19526 int UNUSED written = 0;
19527 IADDR UNUSED pc = abuf->addr;
19528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19529
19530 {
19531 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19532 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19533 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19534 }
19535
19536 return vpc;
19537 #undef FLD
19538 }
19539
19540 /* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19541
19542 static SEM_PC
19543 SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19544 {
19545 #define FLD(f) abuf->fields.sfmt_mcuti.f
19546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19547 int UNUSED written = 0;
19548 IADDR UNUSED pc = abuf->addr;
19549 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19550
19551 {
19552 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19553 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19554 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19555 }
19556
19557 return vpc;
19558 #undef FLD
19559 }
19560
19561 /* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19562
19563 static SEM_PC
19564 SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19565 {
19566 #define FLD(f) abuf->fields.sfmt_mdcutssi.f
19567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19568 int UNUSED written = 0;
19569 IADDR UNUSED pc = abuf->addr;
19570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19571
19572 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19573 frvbf_media_acc_not_aligned (current_cpu);
19574 } else {
19575 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19576 frvbf_media_register_not_aligned (current_cpu);
19577 } else {
19578 {
19579 {
19580 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19581 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19582 written |= (1 << 5);
19583 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19584 }
19585 {
19586 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)), FLD (f_s6));
19587 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
19588 written |= (1 << 6);
19589 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19590 }
19591 }
19592 }
19593 }
19594
19595 abuf->written = written;
19596 return vpc;
19597 #undef FLD
19598 }
19599
19600 /* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19601
19602 static SEM_PC
19603 SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19604 {
19605 #define FLD(f) abuf->fields.sfmt_mwcut.f
19606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19607 int UNUSED written = 0;
19608 IADDR UNUSED pc = abuf->addr;
19609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19610
19611 {
19612 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19613 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19614 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19615 }
19616
19617 return vpc;
19618 #undef FLD
19619 }
19620
19621 /* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19622
19623 static SEM_PC
19624 SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19625 {
19626 #define FLD(f) abuf->fields.sfmt_msllhi.f
19627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19628 int UNUSED written = 0;
19629 IADDR UNUSED pc = abuf->addr;
19630 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19631
19632 {
19633 {
19634 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19635 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19636 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19637 }
19638 {
19639 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19640 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19641 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19642 }
19643 {
19644 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19645 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19646 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19647 }
19648 {
19649 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19650 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19651 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19652 }
19653 }
19654
19655 return vpc;
19656 #undef FLD
19657 }
19658
19659 /* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19660
19661 static SEM_PC
19662 SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19663 {
19664 #define FLD(f) abuf->fields.sfmt_msllhi.f
19665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19666 int UNUSED written = 0;
19667 IADDR UNUSED pc = abuf->addr;
19668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19669
19670 {
19671 {
19672 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19673 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19674 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19675 }
19676 {
19677 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19678 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19679 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19680 }
19681 {
19682 UHI opval = SRLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19683 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19684 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19685 }
19686 {
19687 UHI opval = SRLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19688 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19689 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19690 }
19691 }
19692
19693 return vpc;
19694 #undef FLD
19695 }
19696
19697 /* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19698
19699 static SEM_PC
19700 SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19701 {
19702 #define FLD(f) abuf->fields.sfmt_msllhi.f
19703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19704 int UNUSED written = 0;
19705 IADDR UNUSED pc = abuf->addr;
19706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19707
19708 {
19709 {
19710 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19711 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19712 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19713 }
19714 {
19715 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19716 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19717 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19718 }
19719 {
19720 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19721 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19722 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19723 }
19724 {
19725 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19726 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19727 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19728 }
19729 }
19730
19731 return vpc;
19732 #undef FLD
19733 }
19734
19735 /* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19736
19737 static SEM_PC
19738 SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19739 {
19740 #define FLD(f) abuf->fields.sfmt_mdrotli.f
19741 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19742 int UNUSED written = 0;
19743 IADDR UNUSED pc = abuf->addr;
19744 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19745
19746 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19747 frvbf_media_register_not_aligned (current_cpu);
19748 } else {
19749 {
19750 {
19751 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19752 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19753 written |= (1 << 5);
19754 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19755 }
19756 {
19757 USI opval = ROLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_s6), 31));
19758 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
19759 written |= (1 << 6);
19760 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19761 }
19762 }
19763 }
19764
19765 abuf->written = written;
19766 return vpc;
19767 #undef FLD
19768 }
19769
19770 /* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19771
19772 static SEM_PC
19773 SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19774 {
19775 #define FLD(f) abuf->fields.sfmt_mcplhi.f
19776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19777 int UNUSED written = 0;
19778 IADDR UNUSED pc = abuf->addr;
19779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19780
19781 {
19782 HI tmp_arg1;
19783 HI tmp_arg2;
19784 HI tmp_shift;
19785 {
19786 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19787 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19788 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19789 }
19790 {
19791 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19792 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19793 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19794 }
19795 tmp_shift = ANDSI (FLD (f_u6), 15);
19796 tmp_arg1 = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), tmp_shift);
19797 if (NEHI (tmp_shift, 0)) {
19798 {
19799 tmp_arg2 = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
19800 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19801 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19802 }
19803 }
19804 {
19805 UHI opval = tmp_arg1;
19806 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19807 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19808 }
19809 }
19810
19811 return vpc;
19812 #undef FLD
19813 }
19814
19815 /* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19816
19817 static SEM_PC
19818 SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19819 {
19820 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19822 int UNUSED written = 0;
19823 IADDR UNUSED pc = abuf->addr;
19824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19825
19826 {
19827 SI tmp_tmp;
19828 SI tmp_shift;
19829 tmp_shift = ANDSI (FLD (f_u6), 31);
19830 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19831 if (NESI (tmp_shift, 0)) {
19832 {
19833 SI tmp_tmp1;
19834 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
19835 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19836 }
19837 }
19838 {
19839 SI opval = tmp_tmp;
19840 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19841 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19842 }
19843 }
19844
19845 return vpc;
19846 #undef FLD
19847 }
19848
19849 /* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19850
19851 static SEM_PC
19852 SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19853 {
19854 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
19855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19856 int UNUSED written = 0;
19857 IADDR UNUSED pc = abuf->addr;
19858 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19859
19860 {
19861 HI tmp_argihi;
19862 HI tmp_argilo;
19863 HI tmp_argjhi;
19864 HI tmp_argjlo;
19865 {
19866 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19867 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19868 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19869 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19870 }
19871 if (GTHI (tmp_argihi, tmp_argjhi)) {
19872 {
19873 UHI opval = tmp_argjhi;
19874 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19875 written |= (1 << 9);
19876 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19877 }
19878 } else {
19879 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19880 {
19881 UHI opval = INVHI (tmp_argjhi);
19882 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19883 written |= (1 << 9);
19884 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19885 }
19886 } else {
19887 {
19888 UHI opval = tmp_argihi;
19889 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19890 written |= (1 << 9);
19891 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19892 }
19893 }
19894 }
19895 if (GTHI (tmp_argilo, tmp_argjlo)) {
19896 {
19897 UHI opval = tmp_argjlo;
19898 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19899 written |= (1 << 10);
19900 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19901 }
19902 } else {
19903 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19904 {
19905 UHI opval = INVHI (tmp_argjlo);
19906 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19907 written |= (1 << 10);
19908 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19909 }
19910 } else {
19911 {
19912 UHI opval = tmp_argilo;
19913 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19914 written |= (1 << 10);
19915 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19916 }
19917 }
19918 }
19919 }
19920
19921 abuf->written = written;
19922 return vpc;
19923 #undef FLD
19924 }
19925
19926 /* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19927
19928 static SEM_PC
19929 SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19930 {
19931 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19933 int UNUSED written = 0;
19934 IADDR UNUSED pc = abuf->addr;
19935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19936
19937 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19938 frvbf_media_register_not_aligned (current_cpu);
19939 } else {
19940 {
19941 HI tmp_argihi;
19942 HI tmp_argilo;
19943 HI tmp_argjhi;
19944 HI tmp_argjlo;
19945 {
19946 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19947 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19948 written |= (1 << 14);
19949 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19950 }
19951 {
19952 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19953 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19954 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19955 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19956 }
19957 if (GTHI (tmp_argihi, tmp_argjhi)) {
19958 {
19959 UHI opval = tmp_argjhi;
19960 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19961 written |= (1 << 15);
19962 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19963 }
19964 } else {
19965 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19966 {
19967 UHI opval = INVHI (tmp_argjhi);
19968 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19969 written |= (1 << 15);
19970 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19971 }
19972 } else {
19973 {
19974 UHI opval = tmp_argihi;
19975 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19976 written |= (1 << 15);
19977 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19978 }
19979 }
19980 }
19981 if (GTHI (tmp_argilo, tmp_argjlo)) {
19982 {
19983 UHI opval = tmp_argjlo;
19984 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19985 written |= (1 << 17);
19986 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19987 }
19988 } else {
19989 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19990 {
19991 UHI opval = INVHI (tmp_argjlo);
19992 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19993 written |= (1 << 17);
19994 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19995 }
19996 } else {
19997 {
19998 UHI opval = tmp_argilo;
19999 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20000 written |= (1 << 17);
20001 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20002 }
20003 }
20004 }
20005 {
20006 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20007 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20008 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20009 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20010 }
20011 if (GTHI (tmp_argihi, tmp_argjhi)) {
20012 {
20013 UHI opval = tmp_argjhi;
20014 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20015 written |= (1 << 16);
20016 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20017 }
20018 } else {
20019 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20020 {
20021 UHI opval = INVHI (tmp_argjhi);
20022 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20023 written |= (1 << 16);
20024 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20025 }
20026 } else {
20027 {
20028 UHI opval = tmp_argihi;
20029 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20030 written |= (1 << 16);
20031 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20032 }
20033 }
20034 }
20035 if (GTHI (tmp_argilo, tmp_argjlo)) {
20036 {
20037 UHI opval = tmp_argjlo;
20038 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20039 written |= (1 << 18);
20040 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20041 }
20042 } else {
20043 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20044 {
20045 UHI opval = INVHI (tmp_argjlo);
20046 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20047 written |= (1 << 18);
20048 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20049 }
20050 } else {
20051 {
20052 UHI opval = tmp_argilo;
20053 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20054 written |= (1 << 18);
20055 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20056 }
20057 }
20058 }
20059 }
20060 }
20061
20062 abuf->written = written;
20063 return vpc;
20064 #undef FLD
20065 }
20066
20067 /* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20068
20069 static SEM_PC
20070 SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20071 {
20072 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20074 int UNUSED written = 0;
20075 IADDR UNUSED pc = abuf->addr;
20076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20077
20078 {
20079 UHI tmp_argihi;
20080 UHI tmp_argilo;
20081 UHI tmp_argjhi;
20082 UHI tmp_argjlo;
20083 {
20084 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20085 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20086 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20087 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20088 }
20089 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20090 {
20091 UHI opval = tmp_argjhi;
20092 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20093 written |= (1 << 9);
20094 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20095 }
20096 } else {
20097 {
20098 UHI opval = tmp_argihi;
20099 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20100 written |= (1 << 9);
20101 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20102 }
20103 }
20104 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20105 {
20106 UHI opval = tmp_argjlo;
20107 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20108 written |= (1 << 10);
20109 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20110 }
20111 } else {
20112 {
20113 UHI opval = tmp_argilo;
20114 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20115 written |= (1 << 10);
20116 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20117 }
20118 }
20119 }
20120
20121 abuf->written = written;
20122 return vpc;
20123 #undef FLD
20124 }
20125
20126 /* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20127
20128 static SEM_PC
20129 SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20130 {
20131 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20132 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20133 int UNUSED written = 0;
20134 IADDR UNUSED pc = abuf->addr;
20135 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20136
20137 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20138 frvbf_media_cr_not_aligned (current_cpu);
20139 } else {
20140 {
20141 HI tmp_argihi;
20142 HI tmp_argilo;
20143 HI tmp_argjhi;
20144 HI tmp_argjlo;
20145 {
20146 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20147 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20148 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20149 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20150 }
20151 if (GTHI (tmp_argihi, tmp_argjhi)) {
20152 {
20153 UQI opval = 2;
20154 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20155 written |= (1 << 9);
20156 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20157 }
20158 } else {
20159 if (EQHI (tmp_argihi, tmp_argjhi)) {
20160 {
20161 UQI opval = 8;
20162 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20163 written |= (1 << 9);
20164 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20165 }
20166 } else {
20167 if (LTHI (tmp_argihi, tmp_argjhi)) {
20168 {
20169 UQI opval = 4;
20170 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20171 written |= (1 << 9);
20172 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20173 }
20174 } else {
20175 {
20176 UQI opval = 1;
20177 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20178 written |= (1 << 9);
20179 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20180 }
20181 }
20182 }
20183 }
20184 if (GTHI (tmp_argilo, tmp_argjlo)) {
20185 {
20186 UQI opval = 2;
20187 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20188 written |= (1 << 10);
20189 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20190 }
20191 } else {
20192 if (EQHI (tmp_argilo, tmp_argjlo)) {
20193 {
20194 UQI opval = 8;
20195 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20196 written |= (1 << 10);
20197 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20198 }
20199 } else {
20200 if (LTHI (tmp_argilo, tmp_argjlo)) {
20201 {
20202 UQI opval = 4;
20203 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20204 written |= (1 << 10);
20205 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20206 }
20207 } else {
20208 {
20209 UQI opval = 1;
20210 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20211 written |= (1 << 10);
20212 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20213 }
20214 }
20215 }
20216 }
20217 }
20218 }
20219
20220 abuf->written = written;
20221 return vpc;
20222 #undef FLD
20223 }
20224
20225 /* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20226
20227 static SEM_PC
20228 SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20229 {
20230 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20232 int UNUSED written = 0;
20233 IADDR UNUSED pc = abuf->addr;
20234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20235
20236 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20237 frvbf_media_cr_not_aligned (current_cpu);
20238 } else {
20239 {
20240 UHI tmp_argihi;
20241 UHI tmp_argilo;
20242 UHI tmp_argjhi;
20243 UHI tmp_argjlo;
20244 {
20245 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20246 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20247 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20248 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20249 }
20250 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20251 {
20252 UQI opval = 2;
20253 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20254 written |= (1 << 9);
20255 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20256 }
20257 } else {
20258 if (EQHI (tmp_argihi, tmp_argjhi)) {
20259 {
20260 UQI opval = 8;
20261 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20262 written |= (1 << 9);
20263 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20264 }
20265 } else {
20266 if (LTUHI (tmp_argihi, tmp_argjhi)) {
20267 {
20268 UQI opval = 4;
20269 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20270 written |= (1 << 9);
20271 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20272 }
20273 } else {
20274 {
20275 UQI opval = 1;
20276 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20277 written |= (1 << 9);
20278 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20279 }
20280 }
20281 }
20282 }
20283 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20284 {
20285 UQI opval = 2;
20286 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20287 written |= (1 << 10);
20288 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20289 }
20290 } else {
20291 if (EQHI (tmp_argilo, tmp_argjlo)) {
20292 {
20293 UQI opval = 8;
20294 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20295 written |= (1 << 10);
20296 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20297 }
20298 } else {
20299 if (LTUHI (tmp_argilo, tmp_argjlo)) {
20300 {
20301 UQI opval = 4;
20302 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20303 written |= (1 << 10);
20304 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20305 }
20306 } else {
20307 {
20308 UQI opval = 1;
20309 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20310 written |= (1 << 10);
20311 TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20312 }
20313 }
20314 }
20315 }
20316 }
20317 }
20318
20319 abuf->written = written;
20320 return vpc;
20321 #undef FLD
20322 }
20323
20324 /* mabshs: mabshs$pack $FRintj,$FRintk */
20325
20326 static SEM_PC
20327 SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20328 {
20329 #define FLD(f) abuf->fields.sfmt_mabshs.f
20330 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20331 int UNUSED written = 0;
20332 IADDR UNUSED pc = abuf->addr;
20333 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20334
20335 {
20336 HI tmp_arghi;
20337 HI tmp_arglo;
20338 {
20339 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20340 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20341 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20342 }
20343 {
20344 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20345 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20346 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20347 }
20348 tmp_arghi = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
20349 tmp_arglo = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
20350 if (GTDI (ABSDI (EXTHIDI (tmp_arghi)), 32767)) {
20351 {
20352 {
20353 UHI opval = 32767;
20354 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20355 written |= (1 << 8);
20356 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20357 }
20358 frvbf_media_overflow (current_cpu, 8);
20359 }
20360 } else {
20361 if (LTDI (ABSDI (EXTHIDI (tmp_arghi)), -32768)) {
20362 {
20363 {
20364 UHI opval = -32768;
20365 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20366 written |= (1 << 8);
20367 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20368 }
20369 frvbf_media_overflow (current_cpu, 8);
20370 }
20371 } else {
20372 {
20373 UHI opval = ABSDI (EXTHIDI (tmp_arghi));
20374 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20375 written |= (1 << 8);
20376 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20377 }
20378 }
20379 }
20380 if (GTDI (ABSDI (EXTHIDI (tmp_arglo)), 32767)) {
20381 {
20382 {
20383 UHI opval = 32767;
20384 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20385 written |= (1 << 9);
20386 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20387 }
20388 frvbf_media_overflow (current_cpu, 4);
20389 }
20390 } else {
20391 if (LTDI (ABSDI (EXTHIDI (tmp_arglo)), -32768)) {
20392 {
20393 {
20394 UHI opval = -32768;
20395 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20396 written |= (1 << 9);
20397 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20398 }
20399 frvbf_media_overflow (current_cpu, 4);
20400 }
20401 } else {
20402 {
20403 UHI opval = ABSDI (EXTHIDI (tmp_arglo));
20404 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20405 written |= (1 << 9);
20406 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20407 }
20408 }
20409 }
20410 }
20411
20412 abuf->written = written;
20413 return vpc;
20414 #undef FLD
20415 }
20416
20417 /* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20418
20419 static SEM_PC
20420 SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20421 {
20422 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20424 int UNUSED written = 0;
20425 IADDR UNUSED pc = abuf->addr;
20426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20427
20428 {
20429 HI tmp_argihi;
20430 HI tmp_argilo;
20431 HI tmp_argjhi;
20432 HI tmp_argjlo;
20433 {
20434 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20435 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20436 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20437 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20438 }
20439 {
20440 DI tmp_tmp;
20441 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20442 if (GTDI (tmp_tmp, 32767)) {
20443 {
20444 {
20445 UHI opval = 32767;
20446 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20447 written |= (1 << 9);
20448 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20449 }
20450 frvbf_media_overflow (current_cpu, 8);
20451 }
20452 } else {
20453 if (LTDI (tmp_tmp, -32768)) {
20454 {
20455 {
20456 UHI opval = -32768;
20457 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20458 written |= (1 << 9);
20459 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20460 }
20461 frvbf_media_overflow (current_cpu, 8);
20462 }
20463 } else {
20464 {
20465 UHI opval = tmp_tmp;
20466 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20467 written |= (1 << 9);
20468 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20469 }
20470 }
20471 }
20472 }
20473 {
20474 DI tmp_tmp;
20475 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20476 if (GTDI (tmp_tmp, 32767)) {
20477 {
20478 {
20479 UHI opval = 32767;
20480 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20481 written |= (1 << 10);
20482 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20483 }
20484 frvbf_media_overflow (current_cpu, 4);
20485 }
20486 } else {
20487 if (LTDI (tmp_tmp, -32768)) {
20488 {
20489 {
20490 UHI opval = -32768;
20491 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20492 written |= (1 << 10);
20493 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20494 }
20495 frvbf_media_overflow (current_cpu, 4);
20496 }
20497 } else {
20498 {
20499 UHI opval = tmp_tmp;
20500 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20501 written |= (1 << 10);
20502 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20503 }
20504 }
20505 }
20506 }
20507 }
20508
20509 abuf->written = written;
20510 return vpc;
20511 #undef FLD
20512 }
20513
20514 /* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20515
20516 static SEM_PC
20517 SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20518 {
20519 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20521 int UNUSED written = 0;
20522 IADDR UNUSED pc = abuf->addr;
20523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20524
20525 {
20526 UHI tmp_argihi;
20527 UHI tmp_argilo;
20528 UHI tmp_argjhi;
20529 UHI tmp_argjlo;
20530 {
20531 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20532 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20533 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20534 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20535 }
20536 {
20537 DI tmp_tmp;
20538 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20539 if (GTDI (tmp_tmp, 65535)) {
20540 {
20541 {
20542 UHI opval = 65535;
20543 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20544 written |= (1 << 9);
20545 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20546 }
20547 frvbf_media_overflow (current_cpu, 8);
20548 }
20549 } else {
20550 if (LTDI (tmp_tmp, 0)) {
20551 {
20552 {
20553 UHI opval = 0;
20554 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20555 written |= (1 << 9);
20556 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20557 }
20558 frvbf_media_overflow (current_cpu, 8);
20559 }
20560 } else {
20561 {
20562 UHI opval = tmp_tmp;
20563 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20564 written |= (1 << 9);
20565 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20566 }
20567 }
20568 }
20569 }
20570 {
20571 DI tmp_tmp;
20572 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20573 if (GTDI (tmp_tmp, 65535)) {
20574 {
20575 {
20576 UHI opval = 65535;
20577 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20578 written |= (1 << 10);
20579 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20580 }
20581 frvbf_media_overflow (current_cpu, 4);
20582 }
20583 } else {
20584 if (LTDI (tmp_tmp, 0)) {
20585 {
20586 {
20587 UHI opval = 0;
20588 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20589 written |= (1 << 10);
20590 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20591 }
20592 frvbf_media_overflow (current_cpu, 4);
20593 }
20594 } else {
20595 {
20596 UHI opval = tmp_tmp;
20597 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20598 written |= (1 << 10);
20599 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20600 }
20601 }
20602 }
20603 }
20604 }
20605
20606 abuf->written = written;
20607 return vpc;
20608 #undef FLD
20609 }
20610
20611 /* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20612
20613 static SEM_PC
20614 SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20615 {
20616 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20618 int UNUSED written = 0;
20619 IADDR UNUSED pc = abuf->addr;
20620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20621
20622 {
20623 HI tmp_argihi;
20624 HI tmp_argilo;
20625 HI tmp_argjhi;
20626 HI tmp_argjlo;
20627 {
20628 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20629 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20630 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20631 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20632 }
20633 {
20634 DI tmp_tmp;
20635 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20636 if (GTDI (tmp_tmp, 32767)) {
20637 {
20638 {
20639 UHI opval = 32767;
20640 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20641 written |= (1 << 9);
20642 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20643 }
20644 frvbf_media_overflow (current_cpu, 8);
20645 }
20646 } else {
20647 if (LTDI (tmp_tmp, -32768)) {
20648 {
20649 {
20650 UHI opval = -32768;
20651 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20652 written |= (1 << 9);
20653 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20654 }
20655 frvbf_media_overflow (current_cpu, 8);
20656 }
20657 } else {
20658 {
20659 UHI opval = tmp_tmp;
20660 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20661 written |= (1 << 9);
20662 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20663 }
20664 }
20665 }
20666 }
20667 {
20668 DI tmp_tmp;
20669 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20670 if (GTDI (tmp_tmp, 32767)) {
20671 {
20672 {
20673 UHI opval = 32767;
20674 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20675 written |= (1 << 10);
20676 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20677 }
20678 frvbf_media_overflow (current_cpu, 4);
20679 }
20680 } else {
20681 if (LTDI (tmp_tmp, -32768)) {
20682 {
20683 {
20684 UHI opval = -32768;
20685 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20686 written |= (1 << 10);
20687 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20688 }
20689 frvbf_media_overflow (current_cpu, 4);
20690 }
20691 } else {
20692 {
20693 UHI opval = tmp_tmp;
20694 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20695 written |= (1 << 10);
20696 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20697 }
20698 }
20699 }
20700 }
20701 }
20702
20703 abuf->written = written;
20704 return vpc;
20705 #undef FLD
20706 }
20707
20708 /* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20709
20710 static SEM_PC
20711 SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20712 {
20713 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20714 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20715 int UNUSED written = 0;
20716 IADDR UNUSED pc = abuf->addr;
20717 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20718
20719 {
20720 UHI tmp_argihi;
20721 UHI tmp_argilo;
20722 UHI tmp_argjhi;
20723 UHI tmp_argjlo;
20724 {
20725 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20726 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20727 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20728 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20729 }
20730 {
20731 DI tmp_tmp;
20732 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20733 if (GTDI (tmp_tmp, 65535)) {
20734 {
20735 {
20736 UHI opval = 65535;
20737 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20738 written |= (1 << 9);
20739 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20740 }
20741 frvbf_media_overflow (current_cpu, 8);
20742 }
20743 } else {
20744 if (LTDI (tmp_tmp, 0)) {
20745 {
20746 {
20747 UHI opval = 0;
20748 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20749 written |= (1 << 9);
20750 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20751 }
20752 frvbf_media_overflow (current_cpu, 8);
20753 }
20754 } else {
20755 {
20756 UHI opval = tmp_tmp;
20757 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20758 written |= (1 << 9);
20759 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20760 }
20761 }
20762 }
20763 }
20764 {
20765 DI tmp_tmp;
20766 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20767 if (GTDI (tmp_tmp, 65535)) {
20768 {
20769 {
20770 UHI opval = 65535;
20771 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20772 written |= (1 << 10);
20773 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20774 }
20775 frvbf_media_overflow (current_cpu, 4);
20776 }
20777 } else {
20778 if (LTDI (tmp_tmp, 0)) {
20779 {
20780 {
20781 UHI opval = 0;
20782 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20783 written |= (1 << 10);
20784 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20785 }
20786 frvbf_media_overflow (current_cpu, 4);
20787 }
20788 } else {
20789 {
20790 UHI opval = tmp_tmp;
20791 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20792 written |= (1 << 10);
20793 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20794 }
20795 }
20796 }
20797 }
20798 }
20799
20800 abuf->written = written;
20801 return vpc;
20802 #undef FLD
20803 }
20804
20805 /* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20806
20807 static SEM_PC
20808 SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20809 {
20810 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20811 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20812 int UNUSED written = 0;
20813 IADDR UNUSED pc = abuf->addr;
20814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20815
20816 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20817 {
20818 HI tmp_argihi;
20819 HI tmp_argilo;
20820 HI tmp_argjhi;
20821 HI tmp_argjlo;
20822 {
20823 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20824 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20825 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20826 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20827 }
20828 {
20829 DI tmp_tmp;
20830 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20831 if (GTDI (tmp_tmp, 32767)) {
20832 {
20833 {
20834 UHI opval = 32767;
20835 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20836 written |= (1 << 11);
20837 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20838 }
20839 frvbf_media_overflow (current_cpu, 8);
20840 }
20841 } else {
20842 if (LTDI (tmp_tmp, -32768)) {
20843 {
20844 {
20845 UHI opval = -32768;
20846 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20847 written |= (1 << 11);
20848 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20849 }
20850 frvbf_media_overflow (current_cpu, 8);
20851 }
20852 } else {
20853 {
20854 UHI opval = tmp_tmp;
20855 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20856 written |= (1 << 11);
20857 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20858 }
20859 }
20860 }
20861 }
20862 {
20863 DI tmp_tmp;
20864 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20865 if (GTDI (tmp_tmp, 32767)) {
20866 {
20867 {
20868 UHI opval = 32767;
20869 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20870 written |= (1 << 12);
20871 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20872 }
20873 frvbf_media_overflow (current_cpu, 4);
20874 }
20875 } else {
20876 if (LTDI (tmp_tmp, -32768)) {
20877 {
20878 {
20879 UHI opval = -32768;
20880 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20881 written |= (1 << 12);
20882 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20883 }
20884 frvbf_media_overflow (current_cpu, 4);
20885 }
20886 } else {
20887 {
20888 UHI opval = tmp_tmp;
20889 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20890 written |= (1 << 12);
20891 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20892 }
20893 }
20894 }
20895 }
20896 }
20897 }
20898
20899 abuf->written = written;
20900 return vpc;
20901 #undef FLD
20902 }
20903
20904 /* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20905
20906 static SEM_PC
20907 SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20908 {
20909 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20911 int UNUSED written = 0;
20912 IADDR UNUSED pc = abuf->addr;
20913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20914
20915 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20916 {
20917 UHI tmp_argihi;
20918 UHI tmp_argilo;
20919 UHI tmp_argjhi;
20920 UHI tmp_argjlo;
20921 {
20922 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20923 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20924 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20925 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20926 }
20927 {
20928 DI tmp_tmp;
20929 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20930 if (GTDI (tmp_tmp, 65535)) {
20931 {
20932 {
20933 UHI opval = 65535;
20934 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20935 written |= (1 << 11);
20936 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20937 }
20938 frvbf_media_overflow (current_cpu, 8);
20939 }
20940 } else {
20941 if (LTDI (tmp_tmp, 0)) {
20942 {
20943 {
20944 UHI opval = 0;
20945 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20946 written |= (1 << 11);
20947 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20948 }
20949 frvbf_media_overflow (current_cpu, 8);
20950 }
20951 } else {
20952 {
20953 UHI opval = tmp_tmp;
20954 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20955 written |= (1 << 11);
20956 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20957 }
20958 }
20959 }
20960 }
20961 {
20962 DI tmp_tmp;
20963 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20964 if (GTDI (tmp_tmp, 65535)) {
20965 {
20966 {
20967 UHI opval = 65535;
20968 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20969 written |= (1 << 12);
20970 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20971 }
20972 frvbf_media_overflow (current_cpu, 4);
20973 }
20974 } else {
20975 if (LTDI (tmp_tmp, 0)) {
20976 {
20977 {
20978 UHI opval = 0;
20979 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20980 written |= (1 << 12);
20981 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20982 }
20983 frvbf_media_overflow (current_cpu, 4);
20984 }
20985 } else {
20986 {
20987 UHI opval = tmp_tmp;
20988 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20989 written |= (1 << 12);
20990 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20991 }
20992 }
20993 }
20994 }
20995 }
20996 }
20997
20998 abuf->written = written;
20999 return vpc;
21000 #undef FLD
21001 }
21002
21003 /* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21004
21005 static SEM_PC
21006 SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21007 {
21008 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21009 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21010 int UNUSED written = 0;
21011 IADDR UNUSED pc = abuf->addr;
21012 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21013
21014 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21015 {
21016 HI tmp_argihi;
21017 HI tmp_argilo;
21018 HI tmp_argjhi;
21019 HI tmp_argjlo;
21020 {
21021 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21022 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21023 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21024 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21025 }
21026 {
21027 DI tmp_tmp;
21028 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21029 if (GTDI (tmp_tmp, 32767)) {
21030 {
21031 {
21032 UHI opval = 32767;
21033 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21034 written |= (1 << 11);
21035 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21036 }
21037 frvbf_media_overflow (current_cpu, 8);
21038 }
21039 } else {
21040 if (LTDI (tmp_tmp, -32768)) {
21041 {
21042 {
21043 UHI opval = -32768;
21044 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21045 written |= (1 << 11);
21046 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21047 }
21048 frvbf_media_overflow (current_cpu, 8);
21049 }
21050 } else {
21051 {
21052 UHI opval = tmp_tmp;
21053 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21054 written |= (1 << 11);
21055 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21056 }
21057 }
21058 }
21059 }
21060 {
21061 DI tmp_tmp;
21062 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21063 if (GTDI (tmp_tmp, 32767)) {
21064 {
21065 {
21066 UHI opval = 32767;
21067 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21068 written |= (1 << 12);
21069 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21070 }
21071 frvbf_media_overflow (current_cpu, 4);
21072 }
21073 } else {
21074 if (LTDI (tmp_tmp, -32768)) {
21075 {
21076 {
21077 UHI opval = -32768;
21078 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21079 written |= (1 << 12);
21080 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21081 }
21082 frvbf_media_overflow (current_cpu, 4);
21083 }
21084 } else {
21085 {
21086 UHI opval = tmp_tmp;
21087 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21088 written |= (1 << 12);
21089 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21090 }
21091 }
21092 }
21093 }
21094 }
21095 }
21096
21097 abuf->written = written;
21098 return vpc;
21099 #undef FLD
21100 }
21101
21102 /* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21103
21104 static SEM_PC
21105 SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21106 {
21107 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21109 int UNUSED written = 0;
21110 IADDR UNUSED pc = abuf->addr;
21111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21112
21113 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21114 {
21115 UHI tmp_argihi;
21116 UHI tmp_argilo;
21117 UHI tmp_argjhi;
21118 UHI tmp_argjlo;
21119 {
21120 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21121 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21122 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21123 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21124 }
21125 {
21126 DI tmp_tmp;
21127 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21128 if (GTDI (tmp_tmp, 65535)) {
21129 {
21130 {
21131 UHI opval = 65535;
21132 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21133 written |= (1 << 11);
21134 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21135 }
21136 frvbf_media_overflow (current_cpu, 8);
21137 }
21138 } else {
21139 if (LTDI (tmp_tmp, 0)) {
21140 {
21141 {
21142 UHI opval = 0;
21143 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21144 written |= (1 << 11);
21145 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21146 }
21147 frvbf_media_overflow (current_cpu, 8);
21148 }
21149 } else {
21150 {
21151 UHI opval = tmp_tmp;
21152 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21153 written |= (1 << 11);
21154 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21155 }
21156 }
21157 }
21158 }
21159 {
21160 DI tmp_tmp;
21161 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21162 if (GTDI (tmp_tmp, 65535)) {
21163 {
21164 {
21165 UHI opval = 65535;
21166 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21167 written |= (1 << 12);
21168 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21169 }
21170 frvbf_media_overflow (current_cpu, 4);
21171 }
21172 } else {
21173 if (LTDI (tmp_tmp, 0)) {
21174 {
21175 {
21176 UHI opval = 0;
21177 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21178 written |= (1 << 12);
21179 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21180 }
21181 frvbf_media_overflow (current_cpu, 4);
21182 }
21183 } else {
21184 {
21185 UHI opval = tmp_tmp;
21186 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21187 written |= (1 << 12);
21188 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21189 }
21190 }
21191 }
21192 }
21193 }
21194 }
21195
21196 abuf->written = written;
21197 return vpc;
21198 #undef FLD
21199 }
21200
21201 /* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21202
21203 static SEM_PC
21204 SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21205 {
21206 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21208 int UNUSED written = 0;
21209 IADDR UNUSED pc = abuf->addr;
21210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21211
21212 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21213 frvbf_media_register_not_aligned (current_cpu);
21214 } else {
21215 {
21216 HI tmp_argihi;
21217 HI tmp_argilo;
21218 HI tmp_argjhi;
21219 HI tmp_argjlo;
21220 {
21221 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21222 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21223 written |= (1 << 14);
21224 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21225 }
21226 {
21227 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21228 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21229 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21230 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21231 }
21232 {
21233 DI tmp_tmp;
21234 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21235 if (GTDI (tmp_tmp, 32767)) {
21236 {
21237 {
21238 UHI opval = 32767;
21239 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21240 written |= (1 << 15);
21241 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21242 }
21243 frvbf_media_overflow (current_cpu, 8);
21244 }
21245 } else {
21246 if (LTDI (tmp_tmp, -32768)) {
21247 {
21248 {
21249 UHI opval = -32768;
21250 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21251 written |= (1 << 15);
21252 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21253 }
21254 frvbf_media_overflow (current_cpu, 8);
21255 }
21256 } else {
21257 {
21258 UHI opval = tmp_tmp;
21259 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21260 written |= (1 << 15);
21261 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21262 }
21263 }
21264 }
21265 }
21266 {
21267 DI tmp_tmp;
21268 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21269 if (GTDI (tmp_tmp, 32767)) {
21270 {
21271 {
21272 UHI opval = 32767;
21273 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21274 written |= (1 << 17);
21275 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21276 }
21277 frvbf_media_overflow (current_cpu, 4);
21278 }
21279 } else {
21280 if (LTDI (tmp_tmp, -32768)) {
21281 {
21282 {
21283 UHI opval = -32768;
21284 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21285 written |= (1 << 17);
21286 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21287 }
21288 frvbf_media_overflow (current_cpu, 4);
21289 }
21290 } else {
21291 {
21292 UHI opval = tmp_tmp;
21293 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21294 written |= (1 << 17);
21295 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21296 }
21297 }
21298 }
21299 }
21300 {
21301 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21302 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21303 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21304 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21305 }
21306 {
21307 DI tmp_tmp;
21308 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21309 if (GTDI (tmp_tmp, 32767)) {
21310 {
21311 {
21312 UHI opval = 32767;
21313 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21314 written |= (1 << 16);
21315 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21316 }
21317 frvbf_media_overflow (current_cpu, 2);
21318 }
21319 } else {
21320 if (LTDI (tmp_tmp, -32768)) {
21321 {
21322 {
21323 UHI opval = -32768;
21324 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21325 written |= (1 << 16);
21326 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21327 }
21328 frvbf_media_overflow (current_cpu, 2);
21329 }
21330 } else {
21331 {
21332 UHI opval = tmp_tmp;
21333 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21334 written |= (1 << 16);
21335 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21336 }
21337 }
21338 }
21339 }
21340 {
21341 DI tmp_tmp;
21342 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21343 if (GTDI (tmp_tmp, 32767)) {
21344 {
21345 {
21346 UHI opval = 32767;
21347 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21348 written |= (1 << 18);
21349 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21350 }
21351 frvbf_media_overflow (current_cpu, 1);
21352 }
21353 } else {
21354 if (LTDI (tmp_tmp, -32768)) {
21355 {
21356 {
21357 UHI opval = -32768;
21358 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21359 written |= (1 << 18);
21360 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21361 }
21362 frvbf_media_overflow (current_cpu, 1);
21363 }
21364 } else {
21365 {
21366 UHI opval = tmp_tmp;
21367 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21368 written |= (1 << 18);
21369 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21370 }
21371 }
21372 }
21373 }
21374 }
21375 }
21376
21377 abuf->written = written;
21378 return vpc;
21379 #undef FLD
21380 }
21381
21382 /* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21383
21384 static SEM_PC
21385 SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21386 {
21387 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21389 int UNUSED written = 0;
21390 IADDR UNUSED pc = abuf->addr;
21391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21392
21393 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21394 frvbf_media_register_not_aligned (current_cpu);
21395 } else {
21396 {
21397 UHI tmp_argihi;
21398 UHI tmp_argilo;
21399 UHI tmp_argjhi;
21400 UHI tmp_argjlo;
21401 {
21402 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21403 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21404 written |= (1 << 14);
21405 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21406 }
21407 {
21408 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21409 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21410 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21411 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21412 }
21413 {
21414 DI tmp_tmp;
21415 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21416 if (GTDI (tmp_tmp, 65535)) {
21417 {
21418 {
21419 UHI opval = 65535;
21420 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21421 written |= (1 << 15);
21422 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21423 }
21424 frvbf_media_overflow (current_cpu, 8);
21425 }
21426 } else {
21427 if (LTDI (tmp_tmp, 0)) {
21428 {
21429 {
21430 UHI opval = 0;
21431 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21432 written |= (1 << 15);
21433 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21434 }
21435 frvbf_media_overflow (current_cpu, 8);
21436 }
21437 } else {
21438 {
21439 UHI opval = tmp_tmp;
21440 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21441 written |= (1 << 15);
21442 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21443 }
21444 }
21445 }
21446 }
21447 {
21448 DI tmp_tmp;
21449 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21450 if (GTDI (tmp_tmp, 65535)) {
21451 {
21452 {
21453 UHI opval = 65535;
21454 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21455 written |= (1 << 17);
21456 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21457 }
21458 frvbf_media_overflow (current_cpu, 4);
21459 }
21460 } else {
21461 if (LTDI (tmp_tmp, 0)) {
21462 {
21463 {
21464 UHI opval = 0;
21465 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21466 written |= (1 << 17);
21467 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21468 }
21469 frvbf_media_overflow (current_cpu, 4);
21470 }
21471 } else {
21472 {
21473 UHI opval = tmp_tmp;
21474 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21475 written |= (1 << 17);
21476 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21477 }
21478 }
21479 }
21480 }
21481 {
21482 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21483 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21484 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21485 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21486 }
21487 {
21488 DI tmp_tmp;
21489 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21490 if (GTDI (tmp_tmp, 65535)) {
21491 {
21492 {
21493 UHI opval = 65535;
21494 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21495 written |= (1 << 16);
21496 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21497 }
21498 frvbf_media_overflow (current_cpu, 2);
21499 }
21500 } else {
21501 if (LTDI (tmp_tmp, 0)) {
21502 {
21503 {
21504 UHI opval = 0;
21505 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21506 written |= (1 << 16);
21507 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21508 }
21509 frvbf_media_overflow (current_cpu, 2);
21510 }
21511 } else {
21512 {
21513 UHI opval = tmp_tmp;
21514 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21515 written |= (1 << 16);
21516 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21517 }
21518 }
21519 }
21520 }
21521 {
21522 DI tmp_tmp;
21523 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21524 if (GTDI (tmp_tmp, 65535)) {
21525 {
21526 {
21527 UHI opval = 65535;
21528 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21529 written |= (1 << 18);
21530 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21531 }
21532 frvbf_media_overflow (current_cpu, 1);
21533 }
21534 } else {
21535 if (LTDI (tmp_tmp, 0)) {
21536 {
21537 {
21538 UHI opval = 0;
21539 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21540 written |= (1 << 18);
21541 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21542 }
21543 frvbf_media_overflow (current_cpu, 1);
21544 }
21545 } else {
21546 {
21547 UHI opval = tmp_tmp;
21548 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21549 written |= (1 << 18);
21550 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21551 }
21552 }
21553 }
21554 }
21555 }
21556 }
21557
21558 abuf->written = written;
21559 return vpc;
21560 #undef FLD
21561 }
21562
21563 /* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21564
21565 static SEM_PC
21566 SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21567 {
21568 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21569 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21570 int UNUSED written = 0;
21571 IADDR UNUSED pc = abuf->addr;
21572 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21573
21574 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21575 frvbf_media_register_not_aligned (current_cpu);
21576 } else {
21577 {
21578 HI tmp_argihi;
21579 HI tmp_argilo;
21580 HI tmp_argjhi;
21581 HI tmp_argjlo;
21582 {
21583 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21584 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21585 written |= (1 << 14);
21586 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21587 }
21588 {
21589 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21590 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21591 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21592 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21593 }
21594 {
21595 DI tmp_tmp;
21596 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21597 if (GTDI (tmp_tmp, 32767)) {
21598 {
21599 {
21600 UHI opval = 32767;
21601 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21602 written |= (1 << 15);
21603 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21604 }
21605 frvbf_media_overflow (current_cpu, 8);
21606 }
21607 } else {
21608 if (LTDI (tmp_tmp, -32768)) {
21609 {
21610 {
21611 UHI opval = -32768;
21612 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21613 written |= (1 << 15);
21614 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21615 }
21616 frvbf_media_overflow (current_cpu, 8);
21617 }
21618 } else {
21619 {
21620 UHI opval = tmp_tmp;
21621 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21622 written |= (1 << 15);
21623 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21624 }
21625 }
21626 }
21627 }
21628 {
21629 DI tmp_tmp;
21630 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21631 if (GTDI (tmp_tmp, 32767)) {
21632 {
21633 {
21634 UHI opval = 32767;
21635 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21636 written |= (1 << 17);
21637 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21638 }
21639 frvbf_media_overflow (current_cpu, 4);
21640 }
21641 } else {
21642 if (LTDI (tmp_tmp, -32768)) {
21643 {
21644 {
21645 UHI opval = -32768;
21646 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21647 written |= (1 << 17);
21648 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21649 }
21650 frvbf_media_overflow (current_cpu, 4);
21651 }
21652 } else {
21653 {
21654 UHI opval = tmp_tmp;
21655 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21656 written |= (1 << 17);
21657 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21658 }
21659 }
21660 }
21661 }
21662 {
21663 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21664 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21665 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21666 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21667 }
21668 {
21669 DI tmp_tmp;
21670 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21671 if (GTDI (tmp_tmp, 32767)) {
21672 {
21673 {
21674 UHI opval = 32767;
21675 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21676 written |= (1 << 16);
21677 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21678 }
21679 frvbf_media_overflow (current_cpu, 2);
21680 }
21681 } else {
21682 if (LTDI (tmp_tmp, -32768)) {
21683 {
21684 {
21685 UHI opval = -32768;
21686 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21687 written |= (1 << 16);
21688 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21689 }
21690 frvbf_media_overflow (current_cpu, 2);
21691 }
21692 } else {
21693 {
21694 UHI opval = tmp_tmp;
21695 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21696 written |= (1 << 16);
21697 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21698 }
21699 }
21700 }
21701 }
21702 {
21703 DI tmp_tmp;
21704 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21705 if (GTDI (tmp_tmp, 32767)) {
21706 {
21707 {
21708 UHI opval = 32767;
21709 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21710 written |= (1 << 18);
21711 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21712 }
21713 frvbf_media_overflow (current_cpu, 1);
21714 }
21715 } else {
21716 if (LTDI (tmp_tmp, -32768)) {
21717 {
21718 {
21719 UHI opval = -32768;
21720 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21721 written |= (1 << 18);
21722 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21723 }
21724 frvbf_media_overflow (current_cpu, 1);
21725 }
21726 } else {
21727 {
21728 UHI opval = tmp_tmp;
21729 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21730 written |= (1 << 18);
21731 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21732 }
21733 }
21734 }
21735 }
21736 }
21737 }
21738
21739 abuf->written = written;
21740 return vpc;
21741 #undef FLD
21742 }
21743
21744 /* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21745
21746 static SEM_PC
21747 SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21748 {
21749 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21751 int UNUSED written = 0;
21752 IADDR UNUSED pc = abuf->addr;
21753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21754
21755 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21756 frvbf_media_register_not_aligned (current_cpu);
21757 } else {
21758 {
21759 UHI tmp_argihi;
21760 UHI tmp_argilo;
21761 UHI tmp_argjhi;
21762 UHI tmp_argjlo;
21763 {
21764 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21765 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21766 written |= (1 << 14);
21767 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21768 }
21769 {
21770 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21771 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21772 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21773 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21774 }
21775 {
21776 DI tmp_tmp;
21777 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21778 if (GTDI (tmp_tmp, 65535)) {
21779 {
21780 {
21781 UHI opval = 65535;
21782 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21783 written |= (1 << 15);
21784 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21785 }
21786 frvbf_media_overflow (current_cpu, 8);
21787 }
21788 } else {
21789 if (LTDI (tmp_tmp, 0)) {
21790 {
21791 {
21792 UHI opval = 0;
21793 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21794 written |= (1 << 15);
21795 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21796 }
21797 frvbf_media_overflow (current_cpu, 8);
21798 }
21799 } else {
21800 {
21801 UHI opval = tmp_tmp;
21802 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21803 written |= (1 << 15);
21804 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21805 }
21806 }
21807 }
21808 }
21809 {
21810 DI tmp_tmp;
21811 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21812 if (GTDI (tmp_tmp, 65535)) {
21813 {
21814 {
21815 UHI opval = 65535;
21816 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21817 written |= (1 << 17);
21818 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21819 }
21820 frvbf_media_overflow (current_cpu, 4);
21821 }
21822 } else {
21823 if (LTDI (tmp_tmp, 0)) {
21824 {
21825 {
21826 UHI opval = 0;
21827 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21828 written |= (1 << 17);
21829 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21830 }
21831 frvbf_media_overflow (current_cpu, 4);
21832 }
21833 } else {
21834 {
21835 UHI opval = tmp_tmp;
21836 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21837 written |= (1 << 17);
21838 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21839 }
21840 }
21841 }
21842 }
21843 {
21844 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21845 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21846 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21847 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21848 }
21849 {
21850 DI tmp_tmp;
21851 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21852 if (GTDI (tmp_tmp, 65535)) {
21853 {
21854 {
21855 UHI opval = 65535;
21856 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21857 written |= (1 << 16);
21858 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21859 }
21860 frvbf_media_overflow (current_cpu, 2);
21861 }
21862 } else {
21863 if (LTDI (tmp_tmp, 0)) {
21864 {
21865 {
21866 UHI opval = 0;
21867 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21868 written |= (1 << 16);
21869 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21870 }
21871 frvbf_media_overflow (current_cpu, 2);
21872 }
21873 } else {
21874 {
21875 UHI opval = tmp_tmp;
21876 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21877 written |= (1 << 16);
21878 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21879 }
21880 }
21881 }
21882 }
21883 {
21884 DI tmp_tmp;
21885 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21886 if (GTDI (tmp_tmp, 65535)) {
21887 {
21888 {
21889 UHI opval = 65535;
21890 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21891 written |= (1 << 18);
21892 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21893 }
21894 frvbf_media_overflow (current_cpu, 1);
21895 }
21896 } else {
21897 if (LTDI (tmp_tmp, 0)) {
21898 {
21899 {
21900 UHI opval = 0;
21901 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21902 written |= (1 << 18);
21903 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21904 }
21905 frvbf_media_overflow (current_cpu, 1);
21906 }
21907 } else {
21908 {
21909 UHI opval = tmp_tmp;
21910 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21911 written |= (1 << 18);
21912 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21913 }
21914 }
21915 }
21916 }
21917 }
21918 }
21919
21920 abuf->written = written;
21921 return vpc;
21922 #undef FLD
21923 }
21924
21925 /* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21926
21927 static SEM_PC
21928 SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21929 {
21930 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21932 int UNUSED written = 0;
21933 IADDR UNUSED pc = abuf->addr;
21934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21935
21936 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21937 frvbf_media_register_not_aligned (current_cpu);
21938 } else {
21939 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21940 {
21941 HI tmp_argihi;
21942 HI tmp_argilo;
21943 HI tmp_argjhi;
21944 HI tmp_argjlo;
21945 {
21946 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21947 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21948 written |= (1 << 16);
21949 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21950 }
21951 {
21952 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21953 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21954 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21955 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21956 }
21957 {
21958 DI tmp_tmp;
21959 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21960 if (GTDI (tmp_tmp, 32767)) {
21961 {
21962 {
21963 UHI opval = 32767;
21964 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21965 written |= (1 << 17);
21966 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21967 }
21968 frvbf_media_overflow (current_cpu, 8);
21969 }
21970 } else {
21971 if (LTDI (tmp_tmp, -32768)) {
21972 {
21973 {
21974 UHI opval = -32768;
21975 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21976 written |= (1 << 17);
21977 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21978 }
21979 frvbf_media_overflow (current_cpu, 8);
21980 }
21981 } else {
21982 {
21983 UHI opval = tmp_tmp;
21984 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21985 written |= (1 << 17);
21986 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21987 }
21988 }
21989 }
21990 }
21991 {
21992 DI tmp_tmp;
21993 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21994 if (GTDI (tmp_tmp, 32767)) {
21995 {
21996 {
21997 UHI opval = 32767;
21998 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21999 written |= (1 << 19);
22000 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22001 }
22002 frvbf_media_overflow (current_cpu, 4);
22003 }
22004 } else {
22005 if (LTDI (tmp_tmp, -32768)) {
22006 {
22007 {
22008 UHI opval = -32768;
22009 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22010 written |= (1 << 19);
22011 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22012 }
22013 frvbf_media_overflow (current_cpu, 4);
22014 }
22015 } else {
22016 {
22017 UHI opval = tmp_tmp;
22018 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22019 written |= (1 << 19);
22020 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22021 }
22022 }
22023 }
22024 }
22025 {
22026 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22027 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22028 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22029 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22030 }
22031 {
22032 DI tmp_tmp;
22033 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22034 if (GTDI (tmp_tmp, 32767)) {
22035 {
22036 {
22037 UHI opval = 32767;
22038 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22039 written |= (1 << 18);
22040 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22041 }
22042 frvbf_media_overflow (current_cpu, 2);
22043 }
22044 } else {
22045 if (LTDI (tmp_tmp, -32768)) {
22046 {
22047 {
22048 UHI opval = -32768;
22049 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22050 written |= (1 << 18);
22051 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22052 }
22053 frvbf_media_overflow (current_cpu, 2);
22054 }
22055 } else {
22056 {
22057 UHI opval = tmp_tmp;
22058 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22059 written |= (1 << 18);
22060 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22061 }
22062 }
22063 }
22064 }
22065 {
22066 DI tmp_tmp;
22067 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22068 if (GTDI (tmp_tmp, 32767)) {
22069 {
22070 {
22071 UHI opval = 32767;
22072 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22073 written |= (1 << 20);
22074 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22075 }
22076 frvbf_media_overflow (current_cpu, 1);
22077 }
22078 } else {
22079 if (LTDI (tmp_tmp, -32768)) {
22080 {
22081 {
22082 UHI opval = -32768;
22083 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22084 written |= (1 << 20);
22085 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22086 }
22087 frvbf_media_overflow (current_cpu, 1);
22088 }
22089 } else {
22090 {
22091 UHI opval = tmp_tmp;
22092 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22093 written |= (1 << 20);
22094 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22095 }
22096 }
22097 }
22098 }
22099 }
22100 }
22101 }
22102
22103 abuf->written = written;
22104 return vpc;
22105 #undef FLD
22106 }
22107
22108 /* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22109
22110 static SEM_PC
22111 SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22112 {
22113 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22114 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22115 int UNUSED written = 0;
22116 IADDR UNUSED pc = abuf->addr;
22117 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22118
22119 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22120 frvbf_media_register_not_aligned (current_cpu);
22121 } else {
22122 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22123 {
22124 UHI tmp_argihi;
22125 UHI tmp_argilo;
22126 UHI tmp_argjhi;
22127 UHI tmp_argjlo;
22128 {
22129 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22130 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22131 written |= (1 << 16);
22132 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22133 }
22134 {
22135 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22136 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22137 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22138 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22139 }
22140 {
22141 DI tmp_tmp;
22142 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22143 if (GTDI (tmp_tmp, 65535)) {
22144 {
22145 {
22146 UHI opval = 65535;
22147 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22148 written |= (1 << 17);
22149 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22150 }
22151 frvbf_media_overflow (current_cpu, 8);
22152 }
22153 } else {
22154 if (LTDI (tmp_tmp, 0)) {
22155 {
22156 {
22157 UHI opval = 0;
22158 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22159 written |= (1 << 17);
22160 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22161 }
22162 frvbf_media_overflow (current_cpu, 8);
22163 }
22164 } else {
22165 {
22166 UHI opval = tmp_tmp;
22167 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22168 written |= (1 << 17);
22169 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22170 }
22171 }
22172 }
22173 }
22174 {
22175 DI tmp_tmp;
22176 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22177 if (GTDI (tmp_tmp, 65535)) {
22178 {
22179 {
22180 UHI opval = 65535;
22181 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22182 written |= (1 << 19);
22183 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22184 }
22185 frvbf_media_overflow (current_cpu, 4);
22186 }
22187 } else {
22188 if (LTDI (tmp_tmp, 0)) {
22189 {
22190 {
22191 UHI opval = 0;
22192 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22193 written |= (1 << 19);
22194 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22195 }
22196 frvbf_media_overflow (current_cpu, 4);
22197 }
22198 } else {
22199 {
22200 UHI opval = tmp_tmp;
22201 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22202 written |= (1 << 19);
22203 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22204 }
22205 }
22206 }
22207 }
22208 {
22209 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22210 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22211 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22212 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22213 }
22214 {
22215 DI tmp_tmp;
22216 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22217 if (GTDI (tmp_tmp, 65535)) {
22218 {
22219 {
22220 UHI opval = 65535;
22221 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22222 written |= (1 << 18);
22223 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22224 }
22225 frvbf_media_overflow (current_cpu, 2);
22226 }
22227 } else {
22228 if (LTDI (tmp_tmp, 0)) {
22229 {
22230 {
22231 UHI opval = 0;
22232 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22233 written |= (1 << 18);
22234 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22235 }
22236 frvbf_media_overflow (current_cpu, 2);
22237 }
22238 } else {
22239 {
22240 UHI opval = tmp_tmp;
22241 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22242 written |= (1 << 18);
22243 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22244 }
22245 }
22246 }
22247 }
22248 {
22249 DI tmp_tmp;
22250 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22251 if (GTDI (tmp_tmp, 65535)) {
22252 {
22253 {
22254 UHI opval = 65535;
22255 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22256 written |= (1 << 20);
22257 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22258 }
22259 frvbf_media_overflow (current_cpu, 1);
22260 }
22261 } else {
22262 if (LTDI (tmp_tmp, 0)) {
22263 {
22264 {
22265 UHI opval = 0;
22266 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22267 written |= (1 << 20);
22268 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22269 }
22270 frvbf_media_overflow (current_cpu, 1);
22271 }
22272 } else {
22273 {
22274 UHI opval = tmp_tmp;
22275 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22276 written |= (1 << 20);
22277 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22278 }
22279 }
22280 }
22281 }
22282 }
22283 }
22284 }
22285
22286 abuf->written = written;
22287 return vpc;
22288 #undef FLD
22289 }
22290
22291 /* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22292
22293 static SEM_PC
22294 SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22295 {
22296 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22298 int UNUSED written = 0;
22299 IADDR UNUSED pc = abuf->addr;
22300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22301
22302 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22303 frvbf_media_register_not_aligned (current_cpu);
22304 } else {
22305 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22306 {
22307 HI tmp_argihi;
22308 HI tmp_argilo;
22309 HI tmp_argjhi;
22310 HI tmp_argjlo;
22311 {
22312 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22313 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22314 written |= (1 << 16);
22315 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22316 }
22317 {
22318 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22319 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22320 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22321 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22322 }
22323 {
22324 DI tmp_tmp;
22325 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22326 if (GTDI (tmp_tmp, 32767)) {
22327 {
22328 {
22329 UHI opval = 32767;
22330 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22331 written |= (1 << 17);
22332 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22333 }
22334 frvbf_media_overflow (current_cpu, 8);
22335 }
22336 } else {
22337 if (LTDI (tmp_tmp, -32768)) {
22338 {
22339 {
22340 UHI opval = -32768;
22341 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22342 written |= (1 << 17);
22343 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22344 }
22345 frvbf_media_overflow (current_cpu, 8);
22346 }
22347 } else {
22348 {
22349 UHI opval = tmp_tmp;
22350 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22351 written |= (1 << 17);
22352 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22353 }
22354 }
22355 }
22356 }
22357 {
22358 DI tmp_tmp;
22359 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22360 if (GTDI (tmp_tmp, 32767)) {
22361 {
22362 {
22363 UHI opval = 32767;
22364 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22365 written |= (1 << 19);
22366 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22367 }
22368 frvbf_media_overflow (current_cpu, 4);
22369 }
22370 } else {
22371 if (LTDI (tmp_tmp, -32768)) {
22372 {
22373 {
22374 UHI opval = -32768;
22375 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22376 written |= (1 << 19);
22377 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22378 }
22379 frvbf_media_overflow (current_cpu, 4);
22380 }
22381 } else {
22382 {
22383 UHI opval = tmp_tmp;
22384 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22385 written |= (1 << 19);
22386 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22387 }
22388 }
22389 }
22390 }
22391 {
22392 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22393 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22394 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22395 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22396 }
22397 {
22398 DI tmp_tmp;
22399 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22400 if (GTDI (tmp_tmp, 32767)) {
22401 {
22402 {
22403 UHI opval = 32767;
22404 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22405 written |= (1 << 18);
22406 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22407 }
22408 frvbf_media_overflow (current_cpu, 2);
22409 }
22410 } else {
22411 if (LTDI (tmp_tmp, -32768)) {
22412 {
22413 {
22414 UHI opval = -32768;
22415 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22416 written |= (1 << 18);
22417 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22418 }
22419 frvbf_media_overflow (current_cpu, 2);
22420 }
22421 } else {
22422 {
22423 UHI opval = tmp_tmp;
22424 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22425 written |= (1 << 18);
22426 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22427 }
22428 }
22429 }
22430 }
22431 {
22432 DI tmp_tmp;
22433 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22434 if (GTDI (tmp_tmp, 32767)) {
22435 {
22436 {
22437 UHI opval = 32767;
22438 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22439 written |= (1 << 20);
22440 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22441 }
22442 frvbf_media_overflow (current_cpu, 1);
22443 }
22444 } else {
22445 if (LTDI (tmp_tmp, -32768)) {
22446 {
22447 {
22448 UHI opval = -32768;
22449 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22450 written |= (1 << 20);
22451 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22452 }
22453 frvbf_media_overflow (current_cpu, 1);
22454 }
22455 } else {
22456 {
22457 UHI opval = tmp_tmp;
22458 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22459 written |= (1 << 20);
22460 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22461 }
22462 }
22463 }
22464 }
22465 }
22466 }
22467 }
22468
22469 abuf->written = written;
22470 return vpc;
22471 #undef FLD
22472 }
22473
22474 /* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22475
22476 static SEM_PC
22477 SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22478 {
22479 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22481 int UNUSED written = 0;
22482 IADDR UNUSED pc = abuf->addr;
22483 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22484
22485 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22486 frvbf_media_register_not_aligned (current_cpu);
22487 } else {
22488 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22489 {
22490 UHI tmp_argihi;
22491 UHI tmp_argilo;
22492 UHI tmp_argjhi;
22493 UHI tmp_argjlo;
22494 {
22495 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22496 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22497 written |= (1 << 16);
22498 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22499 }
22500 {
22501 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22502 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22503 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22504 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22505 }
22506 {
22507 DI tmp_tmp;
22508 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22509 if (GTDI (tmp_tmp, 65535)) {
22510 {
22511 {
22512 UHI opval = 65535;
22513 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22514 written |= (1 << 17);
22515 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22516 }
22517 frvbf_media_overflow (current_cpu, 8);
22518 }
22519 } else {
22520 if (LTDI (tmp_tmp, 0)) {
22521 {
22522 {
22523 UHI opval = 0;
22524 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22525 written |= (1 << 17);
22526 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22527 }
22528 frvbf_media_overflow (current_cpu, 8);
22529 }
22530 } else {
22531 {
22532 UHI opval = tmp_tmp;
22533 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22534 written |= (1 << 17);
22535 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22536 }
22537 }
22538 }
22539 }
22540 {
22541 DI tmp_tmp;
22542 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22543 if (GTDI (tmp_tmp, 65535)) {
22544 {
22545 {
22546 UHI opval = 65535;
22547 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22548 written |= (1 << 19);
22549 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22550 }
22551 frvbf_media_overflow (current_cpu, 4);
22552 }
22553 } else {
22554 if (LTDI (tmp_tmp, 0)) {
22555 {
22556 {
22557 UHI opval = 0;
22558 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22559 written |= (1 << 19);
22560 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22561 }
22562 frvbf_media_overflow (current_cpu, 4);
22563 }
22564 } else {
22565 {
22566 UHI opval = tmp_tmp;
22567 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22568 written |= (1 << 19);
22569 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22570 }
22571 }
22572 }
22573 }
22574 {
22575 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22576 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22577 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22578 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22579 }
22580 {
22581 DI tmp_tmp;
22582 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22583 if (GTDI (tmp_tmp, 65535)) {
22584 {
22585 {
22586 UHI opval = 65535;
22587 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22588 written |= (1 << 18);
22589 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22590 }
22591 frvbf_media_overflow (current_cpu, 2);
22592 }
22593 } else {
22594 if (LTDI (tmp_tmp, 0)) {
22595 {
22596 {
22597 UHI opval = 0;
22598 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22599 written |= (1 << 18);
22600 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22601 }
22602 frvbf_media_overflow (current_cpu, 2);
22603 }
22604 } else {
22605 {
22606 UHI opval = tmp_tmp;
22607 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22608 written |= (1 << 18);
22609 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22610 }
22611 }
22612 }
22613 }
22614 {
22615 DI tmp_tmp;
22616 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22617 if (GTDI (tmp_tmp, 65535)) {
22618 {
22619 {
22620 UHI opval = 65535;
22621 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22622 written |= (1 << 20);
22623 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22624 }
22625 frvbf_media_overflow (current_cpu, 1);
22626 }
22627 } else {
22628 if (LTDI (tmp_tmp, 0)) {
22629 {
22630 {
22631 UHI opval = 0;
22632 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22633 written |= (1 << 20);
22634 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22635 }
22636 frvbf_media_overflow (current_cpu, 1);
22637 }
22638 } else {
22639 {
22640 UHI opval = tmp_tmp;
22641 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22642 written |= (1 << 20);
22643 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22644 }
22645 }
22646 }
22647 }
22648 }
22649 }
22650 }
22651
22652 abuf->written = written;
22653 return vpc;
22654 #undef FLD
22655 }
22656
22657 /* mqlclrhs: mqlclrhs$pack $FRintieven,$FRintjeven,$FRintkeven */
22658
22659 static SEM_PC
22660 SEM_FN_NAME (frvbf,mqlclrhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22661 {
22662 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22664 int UNUSED written = 0;
22665 IADDR UNUSED pc = abuf->addr;
22666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22667
22668 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22669 frvbf_media_register_not_aligned (current_cpu);
22670 } else {
22671 {
22672 HI tmp_a1;
22673 HI tmp_a2;
22674 HI tmp_a3;
22675 HI tmp_a4;
22676 HI tmp_b1;
22677 HI tmp_b2;
22678 HI tmp_b3;
22679 HI tmp_b4;
22680 {
22681 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22683 written |= (1 << 14);
22684 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22685 }
22686 {
22687 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22688 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22689 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22690 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22691 }
22692 {
22693 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22694 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22695 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22696 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22697 }
22698 {
22699 UHI opval = (LEUHI (ABSHI (tmp_a1), ABSHI (tmp_b1))) ? (0) : (LEHI (0, tmp_b1)) ? (tmp_a1) : (EQHI (tmp_a1, -32768)) ? (32767) : (NEGHI (tmp_a1));
22700 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22701 written |= (1 << 15);
22702 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22703 }
22704 {
22705 UHI opval = (LEUHI (ABSHI (tmp_a2), ABSHI (tmp_b2))) ? (0) : (LEHI (0, tmp_b2)) ? (tmp_a2) : (EQHI (tmp_a2, -32768)) ? (32767) : (NEGHI (tmp_a2));
22706 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22707 written |= (1 << 17);
22708 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22709 }
22710 {
22711 UHI opval = (LEUHI (ABSHI (tmp_a3), ABSHI (tmp_b3))) ? (0) : (LEHI (0, tmp_b3)) ? (tmp_a3) : (EQHI (tmp_a3, -32768)) ? (32767) : (NEGHI (tmp_a3));
22712 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22713 written |= (1 << 16);
22714 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22715 }
22716 {
22717 UHI opval = (LEUHI (ABSHI (tmp_a4), ABSHI (tmp_b4))) ? (0) : (LEHI (0, tmp_b4)) ? (tmp_a4) : (EQHI (tmp_a4, -32768)) ? (32767) : (NEGHI (tmp_a4));
22718 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22719 written |= (1 << 18);
22720 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22721 }
22722 }
22723 }
22724
22725 abuf->written = written;
22726 return vpc;
22727 #undef FLD
22728 }
22729
22730 /* mqlmths: mqlmths$pack $FRintieven,$FRintjeven,$FRintkeven */
22731
22732 static SEM_PC
22733 SEM_FN_NAME (frvbf,mqlmths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22734 {
22735 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22737 int UNUSED written = 0;
22738 IADDR UNUSED pc = abuf->addr;
22739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22740
22741 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22742 frvbf_media_register_not_aligned (current_cpu);
22743 } else {
22744 {
22745 HI tmp_a1;
22746 HI tmp_a2;
22747 HI tmp_a3;
22748 HI tmp_a4;
22749 HI tmp_b1;
22750 HI tmp_b2;
22751 HI tmp_b3;
22752 HI tmp_b4;
22753 {
22754 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22755 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22756 written |= (1 << 14);
22757 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22758 }
22759 {
22760 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22761 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22762 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22763 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22764 }
22765 {
22766 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22767 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22768 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22769 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22770 }
22771 {
22772 UHI opval = (ANDIF (GTHI (tmp_b1, -32768), GEHI (tmp_a1, ABSHI (tmp_b1)))) ? (tmp_b1) : (GTHI (tmp_a1, NEGHI (ABSHI (tmp_b1)))) ? (tmp_a1) : (EQHI (tmp_b1, -32768)) ? (32767) : (NEGHI (tmp_b1));
22773 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22774 written |= (1 << 15);
22775 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22776 }
22777 {
22778 UHI opval = (ANDIF (GTHI (tmp_b2, -32768), GEHI (tmp_a2, ABSHI (tmp_b2)))) ? (tmp_b2) : (GTHI (tmp_a2, NEGHI (ABSHI (tmp_b2)))) ? (tmp_a2) : (EQHI (tmp_b2, -32768)) ? (32767) : (NEGHI (tmp_b2));
22779 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22780 written |= (1 << 17);
22781 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22782 }
22783 {
22784 UHI opval = (ANDIF (GTHI (tmp_b3, -32768), GEHI (tmp_a3, ABSHI (tmp_b3)))) ? (tmp_b3) : (GTHI (tmp_a3, NEGHI (ABSHI (tmp_b3)))) ? (tmp_a3) : (EQHI (tmp_b3, -32768)) ? (32767) : (NEGHI (tmp_b3));
22785 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22786 written |= (1 << 16);
22787 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22788 }
22789 {
22790 UHI opval = (ANDIF (GTHI (tmp_b4, -32768), GEHI (tmp_a4, ABSHI (tmp_b4)))) ? (tmp_b4) : (GTHI (tmp_a4, NEGHI (ABSHI (tmp_b4)))) ? (tmp_a4) : (EQHI (tmp_b4, -32768)) ? (32767) : (NEGHI (tmp_b4));
22791 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22792 written |= (1 << 18);
22793 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22794 }
22795 }
22796 }
22797
22798 abuf->written = written;
22799 return vpc;
22800 #undef FLD
22801 }
22802
22803 /* mqsllhi: mqsllhi$pack $FRintieven,$u6,$FRintkeven */
22804
22805 static SEM_PC
22806 SEM_FN_NAME (frvbf,mqsllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22807 {
22808 #define FLD(f) abuf->fields.sfmt_mqsllhi.f
22809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22810 int UNUSED written = 0;
22811 IADDR UNUSED pc = abuf->addr;
22812 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22813
22814 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22815 frvbf_media_register_not_aligned (current_cpu);
22816 } else {
22817 {
22818 {
22819 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22820 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22821 written |= (1 << 9);
22822 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22823 }
22824 {
22825 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22826 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22827 written |= (1 << 10);
22828 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22829 }
22830 {
22831 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22832 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22833 written |= (1 << 11);
22834 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22835 }
22836 {
22837 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22838 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22839 written |= (1 << 13);
22840 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22841 }
22842 {
22843 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22844 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22845 written |= (1 << 12);
22846 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22847 }
22848 {
22849 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22850 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22851 written |= (1 << 14);
22852 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22853 }
22854 }
22855 }
22856
22857 abuf->written = written;
22858 return vpc;
22859 #undef FLD
22860 }
22861
22862 /* mqsrahi: mqsrahi$pack $FRintieven,$u6,$FRintkeven */
22863
22864 static SEM_PC
22865 SEM_FN_NAME (frvbf,mqsrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22866 {
22867 #define FLD(f) abuf->fields.sfmt_mqsllhi.f
22868 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22869 int UNUSED written = 0;
22870 IADDR UNUSED pc = abuf->addr;
22871 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22872
22873 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22874 frvbf_media_register_not_aligned (current_cpu);
22875 } else {
22876 {
22877 {
22878 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22879 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22880 written |= (1 << 9);
22881 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22882 }
22883 {
22884 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22885 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22886 written |= (1 << 10);
22887 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22888 }
22889 {
22890 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22891 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22892 written |= (1 << 11);
22893 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22894 }
22895 {
22896 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22897 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22898 written |= (1 << 13);
22899 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22900 }
22901 {
22902 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22903 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22904 written |= (1 << 12);
22905 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22906 }
22907 {
22908 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22909 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22910 written |= (1 << 14);
22911 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22912 }
22913 }
22914 }
22915
22916 abuf->written = written;
22917 return vpc;
22918 #undef FLD
22919 }
22920
22921 /* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22922
22923 static SEM_PC
22924 SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22925 {
22926 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22928 int UNUSED written = 0;
22929 IADDR UNUSED pc = abuf->addr;
22930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22931
22932 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22933 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22934 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22935 frvbf_media_acc_not_aligned (current_cpu);
22936 } else {
22937 {
22938 DI tmp_tmp;
22939 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
22940 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
22941 {
22942 {
22943 DI opval = MAKEDI (127, 0xffffffff);
22944 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22945 written |= (1 << 4);
22946 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22947 }
22948 frvbf_media_overflow (current_cpu, 8);
22949 }
22950 } else {
22951 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
22952 {
22953 {
22954 DI opval = INVDI (MAKEDI (127, 0xffffffff));
22955 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22956 written |= (1 << 4);
22957 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22958 }
22959 frvbf_media_overflow (current_cpu, 8);
22960 }
22961 } else {
22962 {
22963 DI opval = tmp_tmp;
22964 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22965 written |= (1 << 4);
22966 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22967 }
22968 }
22969 }
22970 }
22971 }
22972 }
22973 }
22974
22975 abuf->written = written;
22976 return vpc;
22977 #undef FLD
22978 }
22979
22980 /* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22981
22982 static SEM_PC
22983 SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22984 {
22985 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22987 int UNUSED written = 0;
22988 IADDR UNUSED pc = abuf->addr;
22989 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22990
22991 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22992 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22993 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22994 frvbf_media_acc_not_aligned (current_cpu);
22995 } else {
22996 {
22997 DI tmp_tmp;
22998 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
22999 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23000 {
23001 {
23002 DI opval = MAKEDI (127, 0xffffffff);
23003 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23004 written |= (1 << 4);
23005 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23006 }
23007 frvbf_media_overflow (current_cpu, 8);
23008 }
23009 } else {
23010 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23011 {
23012 {
23013 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23014 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23015 written |= (1 << 4);
23016 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23017 }
23018 frvbf_media_overflow (current_cpu, 8);
23019 }
23020 } else {
23021 {
23022 DI opval = tmp_tmp;
23023 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23024 written |= (1 << 4);
23025 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23026 }
23027 }
23028 }
23029 }
23030 }
23031 }
23032 }
23033
23034 abuf->written = written;
23035 return vpc;
23036 #undef FLD
23037 }
23038
23039 /* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
23040
23041 static SEM_PC
23042 SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23043 {
23044 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23046 int UNUSED written = 0;
23047 IADDR UNUSED pc = abuf->addr;
23048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23049
23050 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23051 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23052 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23053 frvbf_media_acc_not_aligned (current_cpu);
23054 } else {
23055 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23056 frvbf_media_acc_not_aligned (current_cpu);
23057 } else {
23058 {
23059 {
23060 DI tmp_tmp;
23061 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23062 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23063 {
23064 {
23065 DI opval = MAKEDI (127, 0xffffffff);
23066 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23067 written |= (1 << 6);
23068 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23069 }
23070 frvbf_media_overflow (current_cpu, 8);
23071 }
23072 } else {
23073 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23074 {
23075 {
23076 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23077 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23078 written |= (1 << 6);
23079 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23080 }
23081 frvbf_media_overflow (current_cpu, 8);
23082 }
23083 } else {
23084 {
23085 DI opval = tmp_tmp;
23086 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23087 written |= (1 << 6);
23088 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23089 }
23090 }
23091 }
23092 }
23093 {
23094 DI tmp_tmp;
23095 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23096 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23097 {
23098 {
23099 DI opval = MAKEDI (127, 0xffffffff);
23100 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23101 written |= (1 << 7);
23102 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23103 }
23104 frvbf_media_overflow (current_cpu, 4);
23105 }
23106 } else {
23107 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23108 {
23109 {
23110 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23111 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23112 written |= (1 << 7);
23113 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23114 }
23115 frvbf_media_overflow (current_cpu, 4);
23116 }
23117 } else {
23118 {
23119 DI opval = tmp_tmp;
23120 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23121 written |= (1 << 7);
23122 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23123 }
23124 }
23125 }
23126 }
23127 }
23128 }
23129 }
23130 }
23131 }
23132
23133 abuf->written = written;
23134 return vpc;
23135 #undef FLD
23136 }
23137
23138 /* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23139
23140 static SEM_PC
23141 SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23142 {
23143 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23145 int UNUSED written = 0;
23146 IADDR UNUSED pc = abuf->addr;
23147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23148
23149 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23150 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23151 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23152 frvbf_media_acc_not_aligned (current_cpu);
23153 } else {
23154 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23155 frvbf_media_acc_not_aligned (current_cpu);
23156 } else {
23157 {
23158 {
23159 DI tmp_tmp;
23160 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23161 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23162 {
23163 {
23164 DI opval = MAKEDI (127, 0xffffffff);
23165 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23166 written |= (1 << 6);
23167 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23168 }
23169 frvbf_media_overflow (current_cpu, 8);
23170 }
23171 } else {
23172 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23173 {
23174 {
23175 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23176 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23177 written |= (1 << 6);
23178 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23179 }
23180 frvbf_media_overflow (current_cpu, 8);
23181 }
23182 } else {
23183 {
23184 DI opval = tmp_tmp;
23185 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23186 written |= (1 << 6);
23187 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23188 }
23189 }
23190 }
23191 }
23192 {
23193 DI tmp_tmp;
23194 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23195 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23196 {
23197 {
23198 DI opval = MAKEDI (127, 0xffffffff);
23199 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23200 written |= (1 << 7);
23201 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23202 }
23203 frvbf_media_overflow (current_cpu, 4);
23204 }
23205 } else {
23206 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23207 {
23208 {
23209 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23210 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23211 written |= (1 << 7);
23212 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23213 }
23214 frvbf_media_overflow (current_cpu, 4);
23215 }
23216 } else {
23217 {
23218 DI opval = tmp_tmp;
23219 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23220 written |= (1 << 7);
23221 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23222 }
23223 }
23224 }
23225 }
23226 }
23227 }
23228 }
23229 }
23230 }
23231
23232 abuf->written = written;
23233 return vpc;
23234 #undef FLD
23235 }
23236
23237 /* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23238
23239 static SEM_PC
23240 SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23241 {
23242 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23244 int UNUSED written = 0;
23245 IADDR UNUSED pc = abuf->addr;
23246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23247
23248 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23249 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23250 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23251 frvbf_media_acc_not_aligned (current_cpu);
23252 } else {
23253 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23254 frvbf_media_acc_not_aligned (current_cpu);
23255 } else {
23256 {
23257 {
23258 DI tmp_tmp;
23259 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23260 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23261 {
23262 {
23263 DI opval = MAKEDI (127, 0xffffffff);
23264 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23265 written |= (1 << 4);
23266 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23267 }
23268 frvbf_media_overflow (current_cpu, 8);
23269 }
23270 } else {
23271 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23272 {
23273 {
23274 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23275 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23276 written |= (1 << 4);
23277 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23278 }
23279 frvbf_media_overflow (current_cpu, 8);
23280 }
23281 } else {
23282 {
23283 DI opval = tmp_tmp;
23284 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23285 written |= (1 << 4);
23286 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23287 }
23288 }
23289 }
23290 }
23291 {
23292 DI tmp_tmp;
23293 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23294 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23295 {
23296 {
23297 DI opval = MAKEDI (127, 0xffffffff);
23298 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23299 written |= (1 << 5);
23300 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23301 }
23302 frvbf_media_overflow (current_cpu, 4);
23303 }
23304 } else {
23305 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23306 {
23307 {
23308 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23309 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23310 written |= (1 << 5);
23311 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23312 }
23313 frvbf_media_overflow (current_cpu, 4);
23314 }
23315 } else {
23316 {
23317 DI opval = tmp_tmp;
23318 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23319 written |= (1 << 5);
23320 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23321 }
23322 }
23323 }
23324 }
23325 }
23326 }
23327 }
23328 }
23329 }
23330
23331 abuf->written = written;
23332 return vpc;
23333 #undef FLD
23334 }
23335
23336 /* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23337
23338 static SEM_PC
23339 SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23340 {
23341 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23343 int UNUSED written = 0;
23344 IADDR UNUSED pc = abuf->addr;
23345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23346
23347 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23348 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23349 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23350 frvbf_media_acc_not_aligned (current_cpu);
23351 } else {
23352 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23353 frvbf_media_acc_not_aligned (current_cpu);
23354 } else {
23355 {
23356 {
23357 DI tmp_tmp;
23358 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23359 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23360 {
23361 {
23362 DI opval = MAKEDI (127, 0xffffffff);
23363 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23364 written |= (1 << 6);
23365 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23366 }
23367 frvbf_media_overflow (current_cpu, 8);
23368 }
23369 } else {
23370 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23371 {
23372 {
23373 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23374 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23375 written |= (1 << 6);
23376 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23377 }
23378 frvbf_media_overflow (current_cpu, 8);
23379 }
23380 } else {
23381 {
23382 DI opval = tmp_tmp;
23383 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23384 written |= (1 << 6);
23385 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23386 }
23387 }
23388 }
23389 }
23390 {
23391 DI tmp_tmp;
23392 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23393 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23394 {
23395 {
23396 DI opval = MAKEDI (127, 0xffffffff);
23397 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23398 written |= (1 << 7);
23399 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23400 }
23401 frvbf_media_overflow (current_cpu, 4);
23402 }
23403 } else {
23404 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23405 {
23406 {
23407 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23408 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23409 written |= (1 << 7);
23410 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23411 }
23412 frvbf_media_overflow (current_cpu, 4);
23413 }
23414 } else {
23415 {
23416 DI opval = tmp_tmp;
23417 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23418 written |= (1 << 7);
23419 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23420 }
23421 }
23422 }
23423 }
23424 {
23425 DI tmp_tmp;
23426 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23427 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23428 {
23429 {
23430 DI opval = MAKEDI (127, 0xffffffff);
23431 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23432 written |= (1 << 8);
23433 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23434 }
23435 frvbf_media_overflow (current_cpu, 2);
23436 }
23437 } else {
23438 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23439 {
23440 {
23441 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23442 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23443 written |= (1 << 8);
23444 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23445 }
23446 frvbf_media_overflow (current_cpu, 2);
23447 }
23448 } else {
23449 {
23450 DI opval = tmp_tmp;
23451 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23452 written |= (1 << 8);
23453 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23454 }
23455 }
23456 }
23457 }
23458 {
23459 DI tmp_tmp;
23460 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23461 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23462 {
23463 {
23464 DI opval = MAKEDI (127, 0xffffffff);
23465 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23466 written |= (1 << 9);
23467 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23468 }
23469 frvbf_media_overflow (current_cpu, 1);
23470 }
23471 } else {
23472 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23473 {
23474 {
23475 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23476 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23477 written |= (1 << 9);
23478 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23479 }
23480 frvbf_media_overflow (current_cpu, 1);
23481 }
23482 } else {
23483 {
23484 DI opval = tmp_tmp;
23485 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23486 written |= (1 << 9);
23487 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23488 }
23489 }
23490 }
23491 }
23492 }
23493 }
23494 }
23495 }
23496 }
23497
23498 abuf->written = written;
23499 return vpc;
23500 #undef FLD
23501 }
23502
23503 /* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23504
23505 static SEM_PC
23506 SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23507 {
23508 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23510 int UNUSED written = 0;
23511 IADDR UNUSED pc = abuf->addr;
23512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23513
23514 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23515 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23516 frvbf_media_acc_not_aligned (current_cpu);
23517 } else {
23518 {
23519 HI tmp_argihi;
23520 HI tmp_argilo;
23521 HI tmp_argjhi;
23522 HI tmp_argjlo;
23523 {
23524 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23525 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23526 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23527 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23528 }
23529 {
23530 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23531 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23532 written |= (1 << 9);
23533 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23534 }
23535 {
23536 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23537 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23538 written |= (1 << 10);
23539 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23540 }
23541 }
23542 }
23543 }
23544
23545 abuf->written = written;
23546 return vpc;
23547 #undef FLD
23548 }
23549
23550 /* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23551
23552 static SEM_PC
23553 SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23554 {
23555 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23557 int UNUSED written = 0;
23558 IADDR UNUSED pc = abuf->addr;
23559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23560
23561 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23562 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23563 frvbf_media_acc_not_aligned (current_cpu);
23564 } else {
23565 {
23566 UHI tmp_argihi;
23567 UHI tmp_argilo;
23568 UHI tmp_argjhi;
23569 UHI tmp_argjlo;
23570 {
23571 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23572 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23573 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23574 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23575 }
23576 {
23577 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23578 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23579 written |= (1 << 9);
23580 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23581 }
23582 {
23583 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23584 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23585 written |= (1 << 10);
23586 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23587 }
23588 }
23589 }
23590 }
23591
23592 abuf->written = written;
23593 return vpc;
23594 #undef FLD
23595 }
23596
23597 /* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23598
23599 static SEM_PC
23600 SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23601 {
23602 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23603 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23604 int UNUSED written = 0;
23605 IADDR UNUSED pc = abuf->addr;
23606 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23607
23608 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23609 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23610 frvbf_media_acc_not_aligned (current_cpu);
23611 } else {
23612 {
23613 HI tmp_argihi;
23614 HI tmp_argilo;
23615 HI tmp_argjhi;
23616 HI tmp_argjlo;
23617 {
23618 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23619 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23620 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23621 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23622 }
23623 {
23624 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23625 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23626 written |= (1 << 9);
23627 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23628 }
23629 {
23630 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23631 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23632 written |= (1 << 10);
23633 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23634 }
23635 }
23636 }
23637 }
23638
23639 abuf->written = written;
23640 return vpc;
23641 #undef FLD
23642 }
23643
23644 /* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23645
23646 static SEM_PC
23647 SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23648 {
23649 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23650 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23651 int UNUSED written = 0;
23652 IADDR UNUSED pc = abuf->addr;
23653 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23654
23655 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23656 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23657 frvbf_media_acc_not_aligned (current_cpu);
23658 } else {
23659 {
23660 UHI tmp_argihi;
23661 UHI tmp_argilo;
23662 UHI tmp_argjhi;
23663 UHI tmp_argjlo;
23664 {
23665 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23666 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23667 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23668 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23669 }
23670 {
23671 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23672 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23673 written |= (1 << 9);
23674 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23675 }
23676 {
23677 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23678 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23679 written |= (1 << 10);
23680 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23681 }
23682 }
23683 }
23684 }
23685
23686 abuf->written = written;
23687 return vpc;
23688 #undef FLD
23689 }
23690
23691 /* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23692
23693 static SEM_PC
23694 SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23695 {
23696 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23698 int UNUSED written = 0;
23699 IADDR UNUSED pc = abuf->addr;
23700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23701
23702 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23703 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23704 frvbf_media_acc_not_aligned (current_cpu);
23705 } else {
23706 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23707 {
23708 HI tmp_argihi;
23709 HI tmp_argilo;
23710 HI tmp_argjhi;
23711 HI tmp_argjlo;
23712 {
23713 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23714 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23715 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23716 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23717 }
23718 {
23719 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23720 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23721 written |= (1 << 11);
23722 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23723 }
23724 {
23725 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23726 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23727 written |= (1 << 12);
23728 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23729 }
23730 }
23731 }
23732 }
23733 }
23734
23735 abuf->written = written;
23736 return vpc;
23737 #undef FLD
23738 }
23739
23740 /* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23741
23742 static SEM_PC
23743 SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23744 {
23745 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23747 int UNUSED written = 0;
23748 IADDR UNUSED pc = abuf->addr;
23749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23750
23751 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23752 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23753 frvbf_media_acc_not_aligned (current_cpu);
23754 } else {
23755 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23756 {
23757 UHI tmp_argihi;
23758 UHI tmp_argilo;
23759 UHI tmp_argjhi;
23760 UHI tmp_argjlo;
23761 {
23762 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23763 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23764 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23765 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23766 }
23767 {
23768 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23769 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23770 written |= (1 << 11);
23771 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23772 }
23773 {
23774 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23775 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23776 written |= (1 << 12);
23777 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23778 }
23779 }
23780 }
23781 }
23782 }
23783
23784 abuf->written = written;
23785 return vpc;
23786 #undef FLD
23787 }
23788
23789 /* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23790
23791 static SEM_PC
23792 SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23793 {
23794 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23795 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23796 int UNUSED written = 0;
23797 IADDR UNUSED pc = abuf->addr;
23798 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23799
23800 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23801 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23802 frvbf_media_acc_not_aligned (current_cpu);
23803 } else {
23804 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23805 frvbf_media_register_not_aligned (current_cpu);
23806 } else {
23807 {
23808 HI tmp_argihi;
23809 HI tmp_argilo;
23810 HI tmp_argjhi;
23811 HI tmp_argjlo;
23812 {
23813 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23814 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23815 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23816 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23817 }
23818 {
23819 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23820 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23821 written |= (1 << 13);
23822 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23823 }
23824 {
23825 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23826 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23827 written |= (1 << 14);
23828 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23829 }
23830 {
23831 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23832 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23833 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23834 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23835 }
23836 {
23837 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23838 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23839 written |= (1 << 15);
23840 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23841 }
23842 {
23843 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23844 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23845 written |= (1 << 16);
23846 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23847 }
23848 }
23849 }
23850 }
23851 }
23852
23853 abuf->written = written;
23854 return vpc;
23855 #undef FLD
23856 }
23857
23858 /* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23859
23860 static SEM_PC
23861 SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23862 {
23863 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23865 int UNUSED written = 0;
23866 IADDR UNUSED pc = abuf->addr;
23867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23868
23869 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23870 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23871 frvbf_media_acc_not_aligned (current_cpu);
23872 } else {
23873 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23874 frvbf_media_register_not_aligned (current_cpu);
23875 } else {
23876 {
23877 UHI tmp_argihi;
23878 UHI tmp_argilo;
23879 UHI tmp_argjhi;
23880 UHI tmp_argjlo;
23881 {
23882 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23883 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23884 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23885 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23886 }
23887 {
23888 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23889 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23890 written |= (1 << 13);
23891 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23892 }
23893 {
23894 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23895 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23896 written |= (1 << 14);
23897 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23898 }
23899 {
23900 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23901 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23902 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23903 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23904 }
23905 {
23906 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23907 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23908 written |= (1 << 15);
23909 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23910 }
23911 {
23912 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23913 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23914 written |= (1 << 16);
23915 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23916 }
23917 }
23918 }
23919 }
23920 }
23921
23922 abuf->written = written;
23923 return vpc;
23924 #undef FLD
23925 }
23926
23927 /* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23928
23929 static SEM_PC
23930 SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23931 {
23932 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23934 int UNUSED written = 0;
23935 IADDR UNUSED pc = abuf->addr;
23936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23937
23938 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23939 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23940 frvbf_media_acc_not_aligned (current_cpu);
23941 } else {
23942 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23943 frvbf_media_register_not_aligned (current_cpu);
23944 } else {
23945 {
23946 HI tmp_argihi;
23947 HI tmp_argilo;
23948 HI tmp_argjhi;
23949 HI tmp_argjlo;
23950 {
23951 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23952 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23953 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23954 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23955 }
23956 {
23957 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23958 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23959 written |= (1 << 13);
23960 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23961 }
23962 {
23963 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23964 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23965 written |= (1 << 14);
23966 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23967 }
23968 {
23969 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23970 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23971 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23972 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23973 }
23974 {
23975 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23976 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23977 written |= (1 << 15);
23978 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23979 }
23980 {
23981 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23982 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23983 written |= (1 << 16);
23984 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23985 }
23986 }
23987 }
23988 }
23989 }
23990
23991 abuf->written = written;
23992 return vpc;
23993 #undef FLD
23994 }
23995
23996 /* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23997
23998 static SEM_PC
23999 SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24000 {
24001 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24002 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24003 int UNUSED written = 0;
24004 IADDR UNUSED pc = abuf->addr;
24005 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24006
24007 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24008 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24009 frvbf_media_acc_not_aligned (current_cpu);
24010 } else {
24011 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24012 frvbf_media_register_not_aligned (current_cpu);
24013 } else {
24014 {
24015 UHI tmp_argihi;
24016 UHI tmp_argilo;
24017 UHI tmp_argjhi;
24018 UHI tmp_argjlo;
24019 {
24020 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24021 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24022 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24023 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24024 }
24025 {
24026 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24027 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24028 written |= (1 << 13);
24029 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24030 }
24031 {
24032 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24033 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24034 written |= (1 << 14);
24035 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24036 }
24037 {
24038 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24039 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24040 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24041 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24042 }
24043 {
24044 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24045 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24046 written |= (1 << 15);
24047 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24048 }
24049 {
24050 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24051 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24052 written |= (1 << 16);
24053 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24054 }
24055 }
24056 }
24057 }
24058 }
24059
24060 abuf->written = written;
24061 return vpc;
24062 #undef FLD
24063 }
24064
24065 /* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24066
24067 static SEM_PC
24068 SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24069 {
24070 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24072 int UNUSED written = 0;
24073 IADDR UNUSED pc = abuf->addr;
24074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24075
24076 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24077 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24078 frvbf_media_acc_not_aligned (current_cpu);
24079 } else {
24080 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24081 frvbf_media_register_not_aligned (current_cpu);
24082 } else {
24083 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24084 {
24085 HI tmp_argihi;
24086 HI tmp_argilo;
24087 HI tmp_argjhi;
24088 HI tmp_argjlo;
24089 {
24090 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24091 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24092 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24093 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24094 }
24095 {
24096 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24097 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24098 written |= (1 << 15);
24099 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24100 }
24101 {
24102 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24103 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24104 written |= (1 << 16);
24105 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24106 }
24107 {
24108 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24109 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24110 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24111 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24112 }
24113 {
24114 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24115 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24116 written |= (1 << 17);
24117 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24118 }
24119 {
24120 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24121 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24122 written |= (1 << 18);
24123 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24124 }
24125 }
24126 }
24127 }
24128 }
24129 }
24130
24131 abuf->written = written;
24132 return vpc;
24133 #undef FLD
24134 }
24135
24136 /* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24137
24138 static SEM_PC
24139 SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24140 {
24141 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24142 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24143 int UNUSED written = 0;
24144 IADDR UNUSED pc = abuf->addr;
24145 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24146
24147 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24148 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24149 frvbf_media_acc_not_aligned (current_cpu);
24150 } else {
24151 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24152 frvbf_media_register_not_aligned (current_cpu);
24153 } else {
24154 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24155 {
24156 UHI tmp_argihi;
24157 UHI tmp_argilo;
24158 UHI tmp_argjhi;
24159 UHI tmp_argjlo;
24160 {
24161 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24162 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24163 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24164 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24165 }
24166 {
24167 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24168 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24169 written |= (1 << 15);
24170 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24171 }
24172 {
24173 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24174 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24175 written |= (1 << 16);
24176 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24177 }
24178 {
24179 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24180 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24181 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24182 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24183 }
24184 {
24185 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24186 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24187 written |= (1 << 17);
24188 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24189 }
24190 {
24191 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24192 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24193 written |= (1 << 18);
24194 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24195 }
24196 }
24197 }
24198 }
24199 }
24200 }
24201
24202 abuf->written = written;
24203 return vpc;
24204 #undef FLD
24205 }
24206
24207 /* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24208
24209 static SEM_PC
24210 SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24211 {
24212 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24214 int UNUSED written = 0;
24215 IADDR UNUSED pc = abuf->addr;
24216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24217
24218 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24219 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24220 frvbf_media_acc_not_aligned (current_cpu);
24221 } else {
24222 {
24223 HI tmp_argihi;
24224 HI tmp_argilo;
24225 HI tmp_argjhi;
24226 HI tmp_argjlo;
24227 {
24228 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24229 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24230 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24231 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24232 }
24233 {
24234 DI tmp_tmp;
24235 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24236 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24237 {
24238 {
24239 DI opval = MAKEDI (127, 0xffffffff);
24240 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24241 written |= (1 << 11);
24242 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24243 }
24244 frvbf_media_overflow (current_cpu, 8);
24245 }
24246 } else {
24247 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24248 {
24249 {
24250 DI opval = MAKEDI (0xffffff80, 0);
24251 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24252 written |= (1 << 11);
24253 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24254 }
24255 frvbf_media_overflow (current_cpu, 8);
24256 }
24257 } else {
24258 {
24259 DI opval = tmp_tmp;
24260 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24261 written |= (1 << 11);
24262 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24263 }
24264 }
24265 }
24266 }
24267 {
24268 DI tmp_tmp;
24269 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24270 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24271 {
24272 {
24273 DI opval = MAKEDI (127, 0xffffffff);
24274 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24275 written |= (1 << 12);
24276 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24277 }
24278 frvbf_media_overflow (current_cpu, 4);
24279 }
24280 } else {
24281 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24282 {
24283 {
24284 DI opval = MAKEDI (0xffffff80, 0);
24285 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24286 written |= (1 << 12);
24287 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24288 }
24289 frvbf_media_overflow (current_cpu, 4);
24290 }
24291 } else {
24292 {
24293 DI opval = tmp_tmp;
24294 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24295 written |= (1 << 12);
24296 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24297 }
24298 }
24299 }
24300 }
24301 }
24302 }
24303 }
24304
24305 abuf->written = written;
24306 return vpc;
24307 #undef FLD
24308 }
24309
24310 /* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24311
24312 static SEM_PC
24313 SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24314 {
24315 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24316 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24317 int UNUSED written = 0;
24318 IADDR UNUSED pc = abuf->addr;
24319 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24320
24321 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24322 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24323 frvbf_media_acc_not_aligned (current_cpu);
24324 } else {
24325 {
24326 UHI tmp_argihi;
24327 UHI tmp_argilo;
24328 UHI tmp_argjhi;
24329 UHI tmp_argjlo;
24330 {
24331 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24332 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24333 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24334 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24335 }
24336 {
24337 DI tmp_tmp;
24338 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24339 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24340 {
24341 {
24342 UDI opval = MAKEDI (255, 0xffffffff);
24343 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24344 written |= (1 << 11);
24345 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24346 }
24347 frvbf_media_overflow (current_cpu, 8);
24348 }
24349 } else {
24350 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24351 {
24352 {
24353 UDI opval = MAKEDI (0, 0);
24354 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24355 written |= (1 << 11);
24356 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24357 }
24358 frvbf_media_overflow (current_cpu, 8);
24359 }
24360 } else {
24361 {
24362 UDI opval = tmp_tmp;
24363 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24364 written |= (1 << 11);
24365 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24366 }
24367 }
24368 }
24369 }
24370 {
24371 DI tmp_tmp;
24372 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24373 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24374 {
24375 {
24376 UDI opval = MAKEDI (255, 0xffffffff);
24377 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24378 written |= (1 << 12);
24379 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24380 }
24381 frvbf_media_overflow (current_cpu, 4);
24382 }
24383 } else {
24384 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24385 {
24386 {
24387 UDI opval = MAKEDI (0, 0);
24388 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24389 written |= (1 << 12);
24390 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24391 }
24392 frvbf_media_overflow (current_cpu, 4);
24393 }
24394 } else {
24395 {
24396 UDI opval = tmp_tmp;
24397 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24398 written |= (1 << 12);
24399 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24400 }
24401 }
24402 }
24403 }
24404 }
24405 }
24406 }
24407
24408 abuf->written = written;
24409 return vpc;
24410 #undef FLD
24411 }
24412
24413 /* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24414
24415 static SEM_PC
24416 SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24417 {
24418 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24420 int UNUSED written = 0;
24421 IADDR UNUSED pc = abuf->addr;
24422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24423
24424 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24425 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24426 frvbf_media_acc_not_aligned (current_cpu);
24427 } else {
24428 {
24429 HI tmp_argihi;
24430 HI tmp_argilo;
24431 HI tmp_argjhi;
24432 HI tmp_argjlo;
24433 {
24434 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24435 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24436 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24437 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24438 }
24439 {
24440 DI tmp_tmp;
24441 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24442 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24443 {
24444 {
24445 DI opval = MAKEDI (127, 0xffffffff);
24446 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24447 written |= (1 << 11);
24448 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24449 }
24450 frvbf_media_overflow (current_cpu, 8);
24451 }
24452 } else {
24453 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24454 {
24455 {
24456 DI opval = MAKEDI (0xffffff80, 0);
24457 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24458 written |= (1 << 11);
24459 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24460 }
24461 frvbf_media_overflow (current_cpu, 8);
24462 }
24463 } else {
24464 {
24465 DI opval = tmp_tmp;
24466 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24467 written |= (1 << 11);
24468 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24469 }
24470 }
24471 }
24472 }
24473 {
24474 DI tmp_tmp;
24475 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24476 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24477 {
24478 {
24479 DI opval = MAKEDI (127, 0xffffffff);
24480 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24481 written |= (1 << 12);
24482 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24483 }
24484 frvbf_media_overflow (current_cpu, 4);
24485 }
24486 } else {
24487 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24488 {
24489 {
24490 DI opval = MAKEDI (0xffffff80, 0);
24491 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24492 written |= (1 << 12);
24493 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24494 }
24495 frvbf_media_overflow (current_cpu, 4);
24496 }
24497 } else {
24498 {
24499 DI opval = tmp_tmp;
24500 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24501 written |= (1 << 12);
24502 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24503 }
24504 }
24505 }
24506 }
24507 }
24508 }
24509 }
24510
24511 abuf->written = written;
24512 return vpc;
24513 #undef FLD
24514 }
24515
24516 /* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24517
24518 static SEM_PC
24519 SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24520 {
24521 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24523 int UNUSED written = 0;
24524 IADDR UNUSED pc = abuf->addr;
24525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24526
24527 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24528 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24529 frvbf_media_acc_not_aligned (current_cpu);
24530 } else {
24531 {
24532 UHI tmp_argihi;
24533 UHI tmp_argilo;
24534 UHI tmp_argjhi;
24535 UHI tmp_argjlo;
24536 {
24537 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24538 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24539 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24540 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24541 }
24542 {
24543 DI tmp_tmp;
24544 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24545 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24546 {
24547 {
24548 UDI opval = MAKEDI (255, 0xffffffff);
24549 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24550 written |= (1 << 11);
24551 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24552 }
24553 frvbf_media_overflow (current_cpu, 8);
24554 }
24555 } else {
24556 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24557 {
24558 {
24559 UDI opval = MAKEDI (0, 0);
24560 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24561 written |= (1 << 11);
24562 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24563 }
24564 frvbf_media_overflow (current_cpu, 8);
24565 }
24566 } else {
24567 {
24568 UDI opval = tmp_tmp;
24569 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24570 written |= (1 << 11);
24571 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24572 }
24573 }
24574 }
24575 }
24576 {
24577 DI tmp_tmp;
24578 tmp_tmp = SUBDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24579 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24580 {
24581 {
24582 UDI opval = MAKEDI (255, 0xffffffff);
24583 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24584 written |= (1 << 12);
24585 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24586 }
24587 frvbf_media_overflow (current_cpu, 4);
24588 }
24589 } else {
24590 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24591 {
24592 {
24593 UDI opval = MAKEDI (0, 0);
24594 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24595 written |= (1 << 12);
24596 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24597 }
24598 frvbf_media_overflow (current_cpu, 4);
24599 }
24600 } else {
24601 {
24602 UDI opval = tmp_tmp;
24603 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24604 written |= (1 << 12);
24605 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24606 }
24607 }
24608 }
24609 }
24610 }
24611 }
24612 }
24613
24614 abuf->written = written;
24615 return vpc;
24616 #undef FLD
24617 }
24618
24619 /* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24620
24621 static SEM_PC
24622 SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24623 {
24624 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24625 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24626 int UNUSED written = 0;
24627 IADDR UNUSED pc = abuf->addr;
24628 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24629
24630 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24631 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24632 frvbf_media_acc_not_aligned (current_cpu);
24633 } else {
24634 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24635 {
24636 HI tmp_argihi;
24637 HI tmp_argilo;
24638 HI tmp_argjhi;
24639 HI tmp_argjlo;
24640 {
24641 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24642 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24643 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24644 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24645 }
24646 {
24647 DI tmp_tmp;
24648 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24649 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24650 {
24651 {
24652 DI opval = MAKEDI (127, 0xffffffff);
24653 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24654 written |= (1 << 13);
24655 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24656 }
24657 frvbf_media_overflow (current_cpu, 8);
24658 }
24659 } else {
24660 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24661 {
24662 {
24663 DI opval = MAKEDI (0xffffff80, 0);
24664 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24665 written |= (1 << 13);
24666 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24667 }
24668 frvbf_media_overflow (current_cpu, 8);
24669 }
24670 } else {
24671 {
24672 DI opval = tmp_tmp;
24673 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24674 written |= (1 << 13);
24675 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24676 }
24677 }
24678 }
24679 }
24680 {
24681 DI tmp_tmp;
24682 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24683 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24684 {
24685 {
24686 DI opval = MAKEDI (127, 0xffffffff);
24687 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24688 written |= (1 << 14);
24689 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24690 }
24691 frvbf_media_overflow (current_cpu, 4);
24692 }
24693 } else {
24694 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24695 {
24696 {
24697 DI opval = MAKEDI (0xffffff80, 0);
24698 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24699 written |= (1 << 14);
24700 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24701 }
24702 frvbf_media_overflow (current_cpu, 4);
24703 }
24704 } else {
24705 {
24706 DI opval = tmp_tmp;
24707 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24708 written |= (1 << 14);
24709 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24710 }
24711 }
24712 }
24713 }
24714 }
24715 }
24716 }
24717 }
24718
24719 abuf->written = written;
24720 return vpc;
24721 #undef FLD
24722 }
24723
24724 /* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24725
24726 static SEM_PC
24727 SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24728 {
24729 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24731 int UNUSED written = 0;
24732 IADDR UNUSED pc = abuf->addr;
24733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24734
24735 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24736 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24737 frvbf_media_acc_not_aligned (current_cpu);
24738 } else {
24739 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24740 {
24741 UHI tmp_argihi;
24742 UHI tmp_argilo;
24743 UHI tmp_argjhi;
24744 UHI tmp_argjlo;
24745 {
24746 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24747 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24748 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24749 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24750 }
24751 {
24752 DI tmp_tmp;
24753 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24754 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24755 {
24756 {
24757 UDI opval = MAKEDI (255, 0xffffffff);
24758 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24759 written |= (1 << 13);
24760 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24761 }
24762 frvbf_media_overflow (current_cpu, 8);
24763 }
24764 } else {
24765 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24766 {
24767 {
24768 UDI opval = MAKEDI (0, 0);
24769 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24770 written |= (1 << 13);
24771 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24772 }
24773 frvbf_media_overflow (current_cpu, 8);
24774 }
24775 } else {
24776 {
24777 UDI opval = tmp_tmp;
24778 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24779 written |= (1 << 13);
24780 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24781 }
24782 }
24783 }
24784 }
24785 {
24786 DI tmp_tmp;
24787 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24788 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24789 {
24790 {
24791 UDI opval = MAKEDI (255, 0xffffffff);
24792 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24793 written |= (1 << 14);
24794 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24795 }
24796 frvbf_media_overflow (current_cpu, 4);
24797 }
24798 } else {
24799 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24800 {
24801 {
24802 UDI opval = MAKEDI (0, 0);
24803 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24804 written |= (1 << 14);
24805 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24806 }
24807 frvbf_media_overflow (current_cpu, 4);
24808 }
24809 } else {
24810 {
24811 UDI opval = tmp_tmp;
24812 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24813 written |= (1 << 14);
24814 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24815 }
24816 }
24817 }
24818 }
24819 }
24820 }
24821 }
24822 }
24823
24824 abuf->written = written;
24825 return vpc;
24826 #undef FLD
24827 }
24828
24829 /* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24830
24831 static SEM_PC
24832 SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24833 {
24834 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24836 int UNUSED written = 0;
24837 IADDR UNUSED pc = abuf->addr;
24838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24839
24840 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24841 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24842 frvbf_media_acc_not_aligned (current_cpu);
24843 } else {
24844 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24845 frvbf_media_register_not_aligned (current_cpu);
24846 } else {
24847 {
24848 HI tmp_argihi;
24849 HI tmp_argilo;
24850 HI tmp_argjhi;
24851 HI tmp_argjlo;
24852 {
24853 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24854 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24855 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24856 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24857 }
24858 {
24859 DI tmp_tmp;
24860 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24861 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24862 {
24863 {
24864 DI opval = MAKEDI (127, 0xffffffff);
24865 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24866 written |= (1 << 17);
24867 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24868 }
24869 frvbf_media_overflow (current_cpu, 8);
24870 }
24871 } else {
24872 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24873 {
24874 {
24875 DI opval = MAKEDI (0xffffff80, 0);
24876 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24877 written |= (1 << 17);
24878 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24879 }
24880 frvbf_media_overflow (current_cpu, 8);
24881 }
24882 } else {
24883 {
24884 DI opval = tmp_tmp;
24885 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24886 written |= (1 << 17);
24887 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24888 }
24889 }
24890 }
24891 }
24892 {
24893 DI tmp_tmp;
24894 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24895 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24896 {
24897 {
24898 DI opval = MAKEDI (127, 0xffffffff);
24899 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24900 written |= (1 << 18);
24901 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24902 }
24903 frvbf_media_overflow (current_cpu, 4);
24904 }
24905 } else {
24906 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24907 {
24908 {
24909 DI opval = MAKEDI (0xffffff80, 0);
24910 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24911 written |= (1 << 18);
24912 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24913 }
24914 frvbf_media_overflow (current_cpu, 4);
24915 }
24916 } else {
24917 {
24918 DI opval = tmp_tmp;
24919 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24920 written |= (1 << 18);
24921 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24922 }
24923 }
24924 }
24925 }
24926 {
24927 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24928 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24929 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24930 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24931 }
24932 {
24933 DI tmp_tmp;
24934 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24935 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24936 {
24937 {
24938 DI opval = MAKEDI (127, 0xffffffff);
24939 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24940 written |= (1 << 19);
24941 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24942 }
24943 frvbf_media_overflow (current_cpu, 2);
24944 }
24945 } else {
24946 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24947 {
24948 {
24949 DI opval = MAKEDI (0xffffff80, 0);
24950 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24951 written |= (1 << 19);
24952 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24953 }
24954 frvbf_media_overflow (current_cpu, 2);
24955 }
24956 } else {
24957 {
24958 DI opval = tmp_tmp;
24959 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24960 written |= (1 << 19);
24961 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24962 }
24963 }
24964 }
24965 }
24966 {
24967 DI tmp_tmp;
24968 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24969 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24970 {
24971 {
24972 DI opval = MAKEDI (127, 0xffffffff);
24973 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24974 written |= (1 << 20);
24975 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24976 }
24977 frvbf_media_overflow (current_cpu, 1);
24978 }
24979 } else {
24980 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24981 {
24982 {
24983 DI opval = MAKEDI (0xffffff80, 0);
24984 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24985 written |= (1 << 20);
24986 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24987 }
24988 frvbf_media_overflow (current_cpu, 1);
24989 }
24990 } else {
24991 {
24992 DI opval = tmp_tmp;
24993 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24994 written |= (1 << 20);
24995 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24996 }
24997 }
24998 }
24999 }
25000 }
25001 }
25002 }
25003 }
25004
25005 abuf->written = written;
25006 return vpc;
25007 #undef FLD
25008 }
25009
25010 /* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
25011
25012 static SEM_PC
25013 SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25014 {
25015 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25017 int UNUSED written = 0;
25018 IADDR UNUSED pc = abuf->addr;
25019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25020
25021 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25022 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25023 frvbf_media_acc_not_aligned (current_cpu);
25024 } else {
25025 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25026 frvbf_media_register_not_aligned (current_cpu);
25027 } else {
25028 {
25029 UHI tmp_argihi;
25030 UHI tmp_argilo;
25031 UHI tmp_argjhi;
25032 UHI tmp_argjlo;
25033 {
25034 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25035 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25036 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25037 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25038 }
25039 {
25040 DI tmp_tmp;
25041 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25042 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25043 {
25044 {
25045 UDI opval = MAKEDI (255, 0xffffffff);
25046 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25047 written |= (1 << 17);
25048 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25049 }
25050 frvbf_media_overflow (current_cpu, 8);
25051 }
25052 } else {
25053 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25054 {
25055 {
25056 UDI opval = MAKEDI (0, 0);
25057 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25058 written |= (1 << 17);
25059 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25060 }
25061 frvbf_media_overflow (current_cpu, 8);
25062 }
25063 } else {
25064 {
25065 UDI opval = tmp_tmp;
25066 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25067 written |= (1 << 17);
25068 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25069 }
25070 }
25071 }
25072 }
25073 {
25074 DI tmp_tmp;
25075 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25076 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25077 {
25078 {
25079 UDI opval = MAKEDI (255, 0xffffffff);
25080 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25081 written |= (1 << 18);
25082 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25083 }
25084 frvbf_media_overflow (current_cpu, 4);
25085 }
25086 } else {
25087 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25088 {
25089 {
25090 UDI opval = MAKEDI (0, 0);
25091 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25092 written |= (1 << 18);
25093 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25094 }
25095 frvbf_media_overflow (current_cpu, 4);
25096 }
25097 } else {
25098 {
25099 UDI opval = tmp_tmp;
25100 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25101 written |= (1 << 18);
25102 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25103 }
25104 }
25105 }
25106 }
25107 {
25108 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25109 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25110 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25111 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25112 }
25113 {
25114 DI tmp_tmp;
25115 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25116 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25117 {
25118 {
25119 UDI opval = MAKEDI (255, 0xffffffff);
25120 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25121 written |= (1 << 19);
25122 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25123 }
25124 frvbf_media_overflow (current_cpu, 2);
25125 }
25126 } else {
25127 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25128 {
25129 {
25130 UDI opval = MAKEDI (0, 0);
25131 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25132 written |= (1 << 19);
25133 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25134 }
25135 frvbf_media_overflow (current_cpu, 2);
25136 }
25137 } else {
25138 {
25139 UDI opval = tmp_tmp;
25140 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25141 written |= (1 << 19);
25142 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25143 }
25144 }
25145 }
25146 }
25147 {
25148 DI tmp_tmp;
25149 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25150 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25151 {
25152 {
25153 UDI opval = MAKEDI (255, 0xffffffff);
25154 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25155 written |= (1 << 20);
25156 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25157 }
25158 frvbf_media_overflow (current_cpu, 1);
25159 }
25160 } else {
25161 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25162 {
25163 {
25164 UDI opval = MAKEDI (0, 0);
25165 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25166 written |= (1 << 20);
25167 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25168 }
25169 frvbf_media_overflow (current_cpu, 1);
25170 }
25171 } else {
25172 {
25173 UDI opval = tmp_tmp;
25174 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25175 written |= (1 << 20);
25176 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25177 }
25178 }
25179 }
25180 }
25181 }
25182 }
25183 }
25184 }
25185
25186 abuf->written = written;
25187 return vpc;
25188 #undef FLD
25189 }
25190
25191 /* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25192
25193 static SEM_PC
25194 SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25195 {
25196 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25198 int UNUSED written = 0;
25199 IADDR UNUSED pc = abuf->addr;
25200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25201
25202 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25203 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25204 frvbf_media_acc_not_aligned (current_cpu);
25205 } else {
25206 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25207 frvbf_media_register_not_aligned (current_cpu);
25208 } else {
25209 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25210 {
25211 HI tmp_argihi;
25212 HI tmp_argilo;
25213 HI tmp_argjhi;
25214 HI tmp_argjlo;
25215 {
25216 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25217 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25218 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25219 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25220 }
25221 {
25222 DI tmp_tmp;
25223 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25224 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25225 {
25226 {
25227 DI opval = MAKEDI (127, 0xffffffff);
25228 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25229 written |= (1 << 19);
25230 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25231 }
25232 frvbf_media_overflow (current_cpu, 8);
25233 }
25234 } else {
25235 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25236 {
25237 {
25238 DI opval = MAKEDI (0xffffff80, 0);
25239 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25240 written |= (1 << 19);
25241 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25242 }
25243 frvbf_media_overflow (current_cpu, 8);
25244 }
25245 } else {
25246 {
25247 DI opval = tmp_tmp;
25248 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25249 written |= (1 << 19);
25250 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25251 }
25252 }
25253 }
25254 }
25255 {
25256 DI tmp_tmp;
25257 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25258 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25259 {
25260 {
25261 DI opval = MAKEDI (127, 0xffffffff);
25262 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25263 written |= (1 << 20);
25264 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25265 }
25266 frvbf_media_overflow (current_cpu, 4);
25267 }
25268 } else {
25269 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25270 {
25271 {
25272 DI opval = MAKEDI (0xffffff80, 0);
25273 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25274 written |= (1 << 20);
25275 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25276 }
25277 frvbf_media_overflow (current_cpu, 4);
25278 }
25279 } else {
25280 {
25281 DI opval = tmp_tmp;
25282 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25283 written |= (1 << 20);
25284 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25285 }
25286 }
25287 }
25288 }
25289 {
25290 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25291 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25292 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25293 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25294 }
25295 {
25296 DI tmp_tmp;
25297 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25298 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25299 {
25300 {
25301 DI opval = MAKEDI (127, 0xffffffff);
25302 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25303 written |= (1 << 21);
25304 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25305 }
25306 frvbf_media_overflow (current_cpu, 2);
25307 }
25308 } else {
25309 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25310 {
25311 {
25312 DI opval = MAKEDI (0xffffff80, 0);
25313 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25314 written |= (1 << 21);
25315 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25316 }
25317 frvbf_media_overflow (current_cpu, 2);
25318 }
25319 } else {
25320 {
25321 DI opval = tmp_tmp;
25322 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25323 written |= (1 << 21);
25324 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25325 }
25326 }
25327 }
25328 }
25329 {
25330 DI tmp_tmp;
25331 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25332 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25333 {
25334 {
25335 DI opval = MAKEDI (127, 0xffffffff);
25336 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25337 written |= (1 << 22);
25338 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25339 }
25340 frvbf_media_overflow (current_cpu, 1);
25341 }
25342 } else {
25343 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25344 {
25345 {
25346 DI opval = MAKEDI (0xffffff80, 0);
25347 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25348 written |= (1 << 22);
25349 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25350 }
25351 frvbf_media_overflow (current_cpu, 1);
25352 }
25353 } else {
25354 {
25355 DI opval = tmp_tmp;
25356 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25357 written |= (1 << 22);
25358 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25359 }
25360 }
25361 }
25362 }
25363 }
25364 }
25365 }
25366 }
25367 }
25368
25369 abuf->written = written;
25370 return vpc;
25371 #undef FLD
25372 }
25373
25374 /* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25375
25376 static SEM_PC
25377 SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25378 {
25379 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25381 int UNUSED written = 0;
25382 IADDR UNUSED pc = abuf->addr;
25383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25384
25385 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25386 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25387 frvbf_media_acc_not_aligned (current_cpu);
25388 } else {
25389 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25390 frvbf_media_register_not_aligned (current_cpu);
25391 } else {
25392 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25393 {
25394 UHI tmp_argihi;
25395 UHI tmp_argilo;
25396 UHI tmp_argjhi;
25397 UHI tmp_argjlo;
25398 {
25399 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25400 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25401 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25402 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25403 }
25404 {
25405 DI tmp_tmp;
25406 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25407 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25408 {
25409 {
25410 UDI opval = MAKEDI (255, 0xffffffff);
25411 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25412 written |= (1 << 19);
25413 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25414 }
25415 frvbf_media_overflow (current_cpu, 8);
25416 }
25417 } else {
25418 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25419 {
25420 {
25421 UDI opval = MAKEDI (0, 0);
25422 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25423 written |= (1 << 19);
25424 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25425 }
25426 frvbf_media_overflow (current_cpu, 8);
25427 }
25428 } else {
25429 {
25430 UDI opval = tmp_tmp;
25431 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25432 written |= (1 << 19);
25433 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25434 }
25435 }
25436 }
25437 }
25438 {
25439 DI tmp_tmp;
25440 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25441 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25442 {
25443 {
25444 UDI opval = MAKEDI (255, 0xffffffff);
25445 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25446 written |= (1 << 20);
25447 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25448 }
25449 frvbf_media_overflow (current_cpu, 4);
25450 }
25451 } else {
25452 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25453 {
25454 {
25455 UDI opval = MAKEDI (0, 0);
25456 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25457 written |= (1 << 20);
25458 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25459 }
25460 frvbf_media_overflow (current_cpu, 4);
25461 }
25462 } else {
25463 {
25464 UDI opval = tmp_tmp;
25465 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25466 written |= (1 << 20);
25467 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25468 }
25469 }
25470 }
25471 }
25472 {
25473 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25474 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25475 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25476 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25477 }
25478 {
25479 DI tmp_tmp;
25480 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25481 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25482 {
25483 {
25484 UDI opval = MAKEDI (255, 0xffffffff);
25485 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25486 written |= (1 << 21);
25487 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25488 }
25489 frvbf_media_overflow (current_cpu, 2);
25490 }
25491 } else {
25492 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25493 {
25494 {
25495 UDI opval = MAKEDI (0, 0);
25496 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25497 written |= (1 << 21);
25498 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25499 }
25500 frvbf_media_overflow (current_cpu, 2);
25501 }
25502 } else {
25503 {
25504 UDI opval = tmp_tmp;
25505 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25506 written |= (1 << 21);
25507 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25508 }
25509 }
25510 }
25511 }
25512 {
25513 DI tmp_tmp;
25514 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25515 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25516 {
25517 {
25518 UDI opval = MAKEDI (255, 0xffffffff);
25519 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25520 written |= (1 << 22);
25521 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25522 }
25523 frvbf_media_overflow (current_cpu, 1);
25524 }
25525 } else {
25526 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25527 {
25528 {
25529 UDI opval = MAKEDI (0, 0);
25530 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25531 written |= (1 << 22);
25532 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25533 }
25534 frvbf_media_overflow (current_cpu, 1);
25535 }
25536 } else {
25537 {
25538 UDI opval = tmp_tmp;
25539 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25540 written |= (1 << 22);
25541 TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25542 }
25543 }
25544 }
25545 }
25546 }
25547 }
25548 }
25549 }
25550 }
25551
25552 abuf->written = written;
25553 return vpc;
25554 #undef FLD
25555 }
25556
25557 /* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25558
25559 static SEM_PC
25560 SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25561 {
25562 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25564 int UNUSED written = 0;
25565 IADDR UNUSED pc = abuf->addr;
25566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25567
25568 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25569 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25570 frvbf_media_acc_not_aligned (current_cpu);
25571 } else {
25572 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25573 frvbf_media_register_not_aligned (current_cpu);
25574 } else {
25575 {
25576 HI tmp_argihi;
25577 HI tmp_argilo;
25578 HI tmp_argjhi;
25579 HI tmp_argjlo;
25580 {
25581 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25582 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25583 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25584 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25585 }
25586 {
25587 DI tmp_tmp;
25588 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25589 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25590 {
25591 {
25592 DI opval = MAKEDI (127, 0xffffffff);
25593 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25594 written |= (1 << 19);
25595 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25596 }
25597 frvbf_media_overflow (current_cpu, 2);
25598 }
25599 } else {
25600 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25601 {
25602 {
25603 DI opval = MAKEDI (0xffffff80, 0);
25604 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25605 written |= (1 << 19);
25606 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25607 }
25608 frvbf_media_overflow (current_cpu, 2);
25609 }
25610 } else {
25611 {
25612 DI opval = tmp_tmp;
25613 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25614 written |= (1 << 19);
25615 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25616 }
25617 }
25618 }
25619 }
25620 {
25621 DI tmp_tmp;
25622 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25623 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25624 {
25625 {
25626 DI opval = MAKEDI (127, 0xffffffff);
25627 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25628 written |= (1 << 20);
25629 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25630 }
25631 frvbf_media_overflow (current_cpu, 1);
25632 }
25633 } else {
25634 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25635 {
25636 {
25637 DI opval = MAKEDI (0xffffff80, 0);
25638 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25639 written |= (1 << 20);
25640 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25641 }
25642 frvbf_media_overflow (current_cpu, 1);
25643 }
25644 } else {
25645 {
25646 DI opval = tmp_tmp;
25647 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25648 written |= (1 << 20);
25649 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25650 }
25651 }
25652 }
25653 }
25654 {
25655 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25656 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25657 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25658 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25659 }
25660 {
25661 DI tmp_tmp;
25662 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25663 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25664 {
25665 {
25666 DI opval = MAKEDI (127, 0xffffffff);
25667 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25668 written |= (1 << 17);
25669 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25670 }
25671 frvbf_media_overflow (current_cpu, 8);
25672 }
25673 } else {
25674 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25675 {
25676 {
25677 DI opval = MAKEDI (0xffffff80, 0);
25678 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25679 written |= (1 << 17);
25680 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25681 }
25682 frvbf_media_overflow (current_cpu, 8);
25683 }
25684 } else {
25685 {
25686 DI opval = tmp_tmp;
25687 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25688 written |= (1 << 17);
25689 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25690 }
25691 }
25692 }
25693 }
25694 {
25695 DI tmp_tmp;
25696 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25697 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25698 {
25699 {
25700 DI opval = MAKEDI (127, 0xffffffff);
25701 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25702 written |= (1 << 18);
25703 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25704 }
25705 frvbf_media_overflow (current_cpu, 4);
25706 }
25707 } else {
25708 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25709 {
25710 {
25711 DI opval = MAKEDI (0xffffff80, 0);
25712 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25713 written |= (1 << 18);
25714 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25715 }
25716 frvbf_media_overflow (current_cpu, 4);
25717 }
25718 } else {
25719 {
25720 DI opval = tmp_tmp;
25721 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25722 written |= (1 << 18);
25723 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25724 }
25725 }
25726 }
25727 }
25728 }
25729 }
25730 }
25731 }
25732
25733 abuf->written = written;
25734 return vpc;
25735 #undef FLD
25736 }
25737
25738 /* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25739
25740 static SEM_PC
25741 SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25742 {
25743 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25745 int UNUSED written = 0;
25746 IADDR UNUSED pc = abuf->addr;
25747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25748
25749 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25750 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25751 frvbf_media_acc_not_aligned (current_cpu);
25752 } else {
25753 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25754 frvbf_media_register_not_aligned (current_cpu);
25755 } else {
25756 {
25757 HI tmp_argihi;
25758 HI tmp_argilo;
25759 HI tmp_argjhi;
25760 HI tmp_argjlo;
25761 {
25762 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25763 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25764 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25765 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25766 }
25767 {
25768 DI tmp_tmp;
25769 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25770 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25771 {
25772 {
25773 DI opval = MAKEDI (127, 0xffffffff);
25774 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25775 written |= (1 << 19);
25776 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25777 }
25778 frvbf_media_overflow (current_cpu, 2);
25779 }
25780 } else {
25781 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25782 {
25783 {
25784 DI opval = MAKEDI (0xffffff80, 0);
25785 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25786 written |= (1 << 19);
25787 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25788 }
25789 frvbf_media_overflow (current_cpu, 2);
25790 }
25791 } else {
25792 {
25793 DI opval = tmp_tmp;
25794 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25795 written |= (1 << 19);
25796 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25797 }
25798 }
25799 }
25800 }
25801 {
25802 DI tmp_tmp;
25803 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25804 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25805 {
25806 {
25807 DI opval = MAKEDI (127, 0xffffffff);
25808 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25809 written |= (1 << 20);
25810 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25811 }
25812 frvbf_media_overflow (current_cpu, 1);
25813 }
25814 } else {
25815 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25816 {
25817 {
25818 DI opval = MAKEDI (0xffffff80, 0);
25819 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25820 written |= (1 << 20);
25821 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25822 }
25823 frvbf_media_overflow (current_cpu, 1);
25824 }
25825 } else {
25826 {
25827 DI opval = tmp_tmp;
25828 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25829 written |= (1 << 20);
25830 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25831 }
25832 }
25833 }
25834 }
25835 {
25836 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25837 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25838 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25839 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25840 }
25841 {
25842 DI tmp_tmp;
25843 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25844 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25845 {
25846 {
25847 DI opval = MAKEDI (127, 0xffffffff);
25848 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25849 written |= (1 << 17);
25850 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25851 }
25852 frvbf_media_overflow (current_cpu, 8);
25853 }
25854 } else {
25855 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25856 {
25857 {
25858 DI opval = MAKEDI (0xffffff80, 0);
25859 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25860 written |= (1 << 17);
25861 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25862 }
25863 frvbf_media_overflow (current_cpu, 8);
25864 }
25865 } else {
25866 {
25867 DI opval = tmp_tmp;
25868 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25869 written |= (1 << 17);
25870 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25871 }
25872 }
25873 }
25874 }
25875 {
25876 DI tmp_tmp;
25877 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25878 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25879 {
25880 {
25881 DI opval = MAKEDI (127, 0xffffffff);
25882 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25883 written |= (1 << 18);
25884 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25885 }
25886 frvbf_media_overflow (current_cpu, 4);
25887 }
25888 } else {
25889 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25890 {
25891 {
25892 DI opval = MAKEDI (0xffffff80, 0);
25893 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25894 written |= (1 << 18);
25895 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25896 }
25897 frvbf_media_overflow (current_cpu, 4);
25898 }
25899 } else {
25900 {
25901 DI opval = tmp_tmp;
25902 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25903 written |= (1 << 18);
25904 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25905 }
25906 }
25907 }
25908 }
25909 }
25910 }
25911 }
25912 }
25913
25914 abuf->written = written;
25915 return vpc;
25916 #undef FLD
25917 }
25918
25919 /* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25920
25921 static SEM_PC
25922 SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25923 {
25924 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25925 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25926 int UNUSED written = 0;
25927 IADDR UNUSED pc = abuf->addr;
25928 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25929
25930 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25931 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25932 frvbf_media_acc_not_aligned (current_cpu);
25933 } else {
25934 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25935 frvbf_media_register_not_aligned (current_cpu);
25936 } else {
25937 {
25938 HI tmp_argihi;
25939 HI tmp_argilo;
25940 HI tmp_argjhi;
25941 HI tmp_argjlo;
25942 {
25943 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25944 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25945 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25946 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25947 }
25948 {
25949 DI tmp_tmp;
25950 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25951 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25952 {
25953 {
25954 DI opval = MAKEDI (127, 0xffffffff);
25955 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25956 written |= (1 << 17);
25957 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25958 }
25959 frvbf_media_overflow (current_cpu, 8);
25960 }
25961 } else {
25962 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25963 {
25964 {
25965 DI opval = MAKEDI (0xffffff80, 0);
25966 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25967 written |= (1 << 17);
25968 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25969 }
25970 frvbf_media_overflow (current_cpu, 8);
25971 }
25972 } else {
25973 {
25974 DI opval = tmp_tmp;
25975 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25976 written |= (1 << 17);
25977 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25978 }
25979 }
25980 }
25981 }
25982 {
25983 DI tmp_tmp;
25984 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25985 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25986 {
25987 {
25988 DI opval = MAKEDI (127, 0xffffffff);
25989 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25990 written |= (1 << 18);
25991 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25992 }
25993 frvbf_media_overflow (current_cpu, 4);
25994 }
25995 } else {
25996 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25997 {
25998 {
25999 DI opval = MAKEDI (0xffffff80, 0);
26000 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26001 written |= (1 << 18);
26002 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26003 }
26004 frvbf_media_overflow (current_cpu, 4);
26005 }
26006 } else {
26007 {
26008 DI opval = tmp_tmp;
26009 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26010 written |= (1 << 18);
26011 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26012 }
26013 }
26014 }
26015 }
26016 {
26017 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26018 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26019 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26020 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26021 }
26022 {
26023 DI tmp_tmp;
26024 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
26025 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26026 {
26027 {
26028 DI opval = MAKEDI (127, 0xffffffff);
26029 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26030 written |= (1 << 19);
26031 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26032 }
26033 frvbf_media_overflow (current_cpu, 2);
26034 }
26035 } else {
26036 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26037 {
26038 {
26039 DI opval = MAKEDI (0xffffff80, 0);
26040 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26041 written |= (1 << 19);
26042 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26043 }
26044 frvbf_media_overflow (current_cpu, 2);
26045 }
26046 } else {
26047 {
26048 DI opval = tmp_tmp;
26049 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26050 written |= (1 << 19);
26051 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26052 }
26053 }
26054 }
26055 }
26056 {
26057 DI tmp_tmp;
26058 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
26059 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26060 {
26061 {
26062 DI opval = MAKEDI (127, 0xffffffff);
26063 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26064 written |= (1 << 20);
26065 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26066 }
26067 frvbf_media_overflow (current_cpu, 1);
26068 }
26069 } else {
26070 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26071 {
26072 {
26073 DI opval = MAKEDI (0xffffff80, 0);
26074 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26075 written |= (1 << 20);
26076 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26077 }
26078 frvbf_media_overflow (current_cpu, 1);
26079 }
26080 } else {
26081 {
26082 DI opval = tmp_tmp;
26083 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26084 written |= (1 << 20);
26085 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26086 }
26087 }
26088 }
26089 }
26090 }
26091 }
26092 }
26093 }
26094
26095 abuf->written = written;
26096 return vpc;
26097 #undef FLD
26098 }
26099
26100 /* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26101
26102 static SEM_PC
26103 SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26104 {
26105 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26106 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26107 int UNUSED written = 0;
26108 IADDR UNUSED pc = abuf->addr;
26109 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26110
26111 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26112 {
26113 HI tmp_argihi;
26114 HI tmp_argilo;
26115 HI tmp_argjhi;
26116 HI tmp_argjlo;
26117 {
26118 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26119 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26120 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26121 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26122 }
26123 {
26124 DI tmp_tmp1;
26125 DI tmp_tmp2;
26126 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26127 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26128 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26129 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26130 {
26131 {
26132 DI opval = MAKEDI (127, 0xffffffff);
26133 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26134 written |= (1 << 9);
26135 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26136 }
26137 frvbf_media_overflow (current_cpu, 8);
26138 }
26139 } else {
26140 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26141 {
26142 {
26143 DI opval = MAKEDI (0xffffff80, 0);
26144 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26145 written |= (1 << 9);
26146 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26147 }
26148 frvbf_media_overflow (current_cpu, 8);
26149 }
26150 } else {
26151 {
26152 DI opval = tmp_tmp1;
26153 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26154 written |= (1 << 9);
26155 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26156 }
26157 }
26158 }
26159 }
26160 }
26161 }
26162
26163 abuf->written = written;
26164 return vpc;
26165 #undef FLD
26166 }
26167
26168 /* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26169
26170 static SEM_PC
26171 SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26172 {
26173 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26175 int UNUSED written = 0;
26176 IADDR UNUSED pc = abuf->addr;
26177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26178
26179 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26180 {
26181 UHI tmp_argihi;
26182 UHI tmp_argilo;
26183 UHI tmp_argjhi;
26184 UHI tmp_argjlo;
26185 {
26186 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26187 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26188 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26189 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26190 }
26191 {
26192 DI tmp_tmp1;
26193 DI tmp_tmp2;
26194 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26195 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26196 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26197 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26198 {
26199 {
26200 DI opval = MAKEDI (255, 0xffffffff);
26201 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26202 written |= (1 << 9);
26203 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26204 }
26205 frvbf_media_overflow (current_cpu, 8);
26206 }
26207 } else {
26208 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26209 {
26210 {
26211 DI opval = MAKEDI (0, 0);
26212 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26213 written |= (1 << 9);
26214 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26215 }
26216 frvbf_media_overflow (current_cpu, 8);
26217 }
26218 } else {
26219 {
26220 DI opval = tmp_tmp1;
26221 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26222 written |= (1 << 9);
26223 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26224 }
26225 }
26226 }
26227 }
26228 }
26229 }
26230
26231 abuf->written = written;
26232 return vpc;
26233 #undef FLD
26234 }
26235
26236 /* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26237
26238 static SEM_PC
26239 SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26240 {
26241 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26243 int UNUSED written = 0;
26244 IADDR UNUSED pc = abuf->addr;
26245 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26246
26247 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26248 {
26249 HI tmp_argihi;
26250 HI tmp_argilo;
26251 HI tmp_argjhi;
26252 HI tmp_argjlo;
26253 {
26254 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26255 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26256 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26257 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26258 }
26259 {
26260 DI tmp_tmp1;
26261 DI tmp_tmp2;
26262 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26263 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26264 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26265 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26266 {
26267 {
26268 DI opval = MAKEDI (127, 0xffffffff);
26269 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26270 written |= (1 << 9);
26271 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26272 }
26273 frvbf_media_overflow (current_cpu, 8);
26274 }
26275 } else {
26276 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26277 {
26278 {
26279 DI opval = MAKEDI (0xffffff80, 0);
26280 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26281 written |= (1 << 9);
26282 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26283 }
26284 frvbf_media_overflow (current_cpu, 8);
26285 }
26286 } else {
26287 {
26288 DI opval = tmp_tmp1;
26289 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26290 written |= (1 << 9);
26291 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26292 }
26293 }
26294 }
26295 }
26296 }
26297 }
26298
26299 abuf->written = written;
26300 return vpc;
26301 #undef FLD
26302 }
26303
26304 /* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26305
26306 static SEM_PC
26307 SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26308 {
26309 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26310 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26311 int UNUSED written = 0;
26312 IADDR UNUSED pc = abuf->addr;
26313 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26314
26315 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26316 {
26317 UHI tmp_argihi;
26318 UHI tmp_argilo;
26319 UHI tmp_argjhi;
26320 UHI tmp_argjlo;
26321 {
26322 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26323 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26324 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26325 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26326 }
26327 {
26328 DI tmp_tmp1;
26329 DI tmp_tmp2;
26330 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26331 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26332 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26333 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26334 {
26335 {
26336 DI opval = MAKEDI (255, 0xffffffff);
26337 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26338 written |= (1 << 9);
26339 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26340 }
26341 frvbf_media_overflow (current_cpu, 8);
26342 }
26343 } else {
26344 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26345 {
26346 {
26347 DI opval = MAKEDI (0, 0);
26348 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26349 written |= (1 << 9);
26350 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26351 }
26352 frvbf_media_overflow (current_cpu, 8);
26353 }
26354 } else {
26355 {
26356 DI opval = tmp_tmp1;
26357 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26358 written |= (1 << 9);
26359 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26360 }
26361 }
26362 }
26363 }
26364 }
26365 }
26366
26367 abuf->written = written;
26368 return vpc;
26369 #undef FLD
26370 }
26371
26372 /* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26373
26374 static SEM_PC
26375 SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26376 {
26377 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26379 int UNUSED written = 0;
26380 IADDR UNUSED pc = abuf->addr;
26381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26382
26383 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26384 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26385 {
26386 HI tmp_argihi;
26387 HI tmp_argilo;
26388 HI tmp_argjhi;
26389 HI tmp_argjlo;
26390 {
26391 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26392 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26393 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26394 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26395 }
26396 {
26397 DI tmp_tmp1;
26398 DI tmp_tmp2;
26399 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26400 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26401 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26402 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26403 {
26404 {
26405 DI opval = MAKEDI (127, 0xffffffff);
26406 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26407 written |= (1 << 11);
26408 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26409 }
26410 frvbf_media_overflow (current_cpu, 8);
26411 }
26412 } else {
26413 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26414 {
26415 {
26416 DI opval = MAKEDI (0xffffff80, 0);
26417 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26418 written |= (1 << 11);
26419 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26420 }
26421 frvbf_media_overflow (current_cpu, 8);
26422 }
26423 } else {
26424 {
26425 DI opval = tmp_tmp1;
26426 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26427 written |= (1 << 11);
26428 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26429 }
26430 }
26431 }
26432 }
26433 }
26434 }
26435 }
26436
26437 abuf->written = written;
26438 return vpc;
26439 #undef FLD
26440 }
26441
26442 /* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26443
26444 static SEM_PC
26445 SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26446 {
26447 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26448 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26449 int UNUSED written = 0;
26450 IADDR UNUSED pc = abuf->addr;
26451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26452
26453 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26454 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26455 {
26456 UHI tmp_argihi;
26457 UHI tmp_argilo;
26458 UHI tmp_argjhi;
26459 UHI tmp_argjlo;
26460 {
26461 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26462 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26463 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26464 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26465 }
26466 {
26467 DI tmp_tmp1;
26468 DI tmp_tmp2;
26469 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26470 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26471 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26472 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26473 {
26474 {
26475 DI opval = MAKEDI (255, 0xffffffff);
26476 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26477 written |= (1 << 11);
26478 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26479 }
26480 frvbf_media_overflow (current_cpu, 8);
26481 }
26482 } else {
26483 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26484 {
26485 {
26486 DI opval = MAKEDI (0, 0);
26487 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26488 written |= (1 << 11);
26489 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26490 }
26491 frvbf_media_overflow (current_cpu, 8);
26492 }
26493 } else {
26494 {
26495 DI opval = tmp_tmp1;
26496 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26497 written |= (1 << 11);
26498 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26499 }
26500 }
26501 }
26502 }
26503 }
26504 }
26505 }
26506
26507 abuf->written = written;
26508 return vpc;
26509 #undef FLD
26510 }
26511
26512 /* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26513
26514 static SEM_PC
26515 SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26516 {
26517 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26519 int UNUSED written = 0;
26520 IADDR UNUSED pc = abuf->addr;
26521 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26522
26523 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26524 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26525 {
26526 HI tmp_argihi;
26527 HI tmp_argilo;
26528 HI tmp_argjhi;
26529 HI tmp_argjlo;
26530 {
26531 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26532 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26533 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26534 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26535 }
26536 {
26537 DI tmp_tmp1;
26538 DI tmp_tmp2;
26539 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26540 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26541 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26542 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26543 {
26544 {
26545 DI opval = MAKEDI (127, 0xffffffff);
26546 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26547 written |= (1 << 11);
26548 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26549 }
26550 frvbf_media_overflow (current_cpu, 8);
26551 }
26552 } else {
26553 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26554 {
26555 {
26556 DI opval = MAKEDI (0xffffff80, 0);
26557 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26558 written |= (1 << 11);
26559 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26560 }
26561 frvbf_media_overflow (current_cpu, 8);
26562 }
26563 } else {
26564 {
26565 DI opval = tmp_tmp1;
26566 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26567 written |= (1 << 11);
26568 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26569 }
26570 }
26571 }
26572 }
26573 }
26574 }
26575 }
26576
26577 abuf->written = written;
26578 return vpc;
26579 #undef FLD
26580 }
26581
26582 /* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26583
26584 static SEM_PC
26585 SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26586 {
26587 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26589 int UNUSED written = 0;
26590 IADDR UNUSED pc = abuf->addr;
26591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26592
26593 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26594 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26595 {
26596 UHI tmp_argihi;
26597 UHI tmp_argilo;
26598 UHI tmp_argjhi;
26599 UHI tmp_argjlo;
26600 {
26601 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26602 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26603 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26604 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26605 }
26606 {
26607 DI tmp_tmp1;
26608 DI tmp_tmp2;
26609 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26610 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26611 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26612 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26613 {
26614 {
26615 DI opval = MAKEDI (255, 0xffffffff);
26616 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26617 written |= (1 << 11);
26618 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26619 }
26620 frvbf_media_overflow (current_cpu, 8);
26621 }
26622 } else {
26623 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26624 {
26625 {
26626 DI opval = MAKEDI (0, 0);
26627 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26628 written |= (1 << 11);
26629 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26630 }
26631 frvbf_media_overflow (current_cpu, 8);
26632 }
26633 } else {
26634 {
26635 DI opval = tmp_tmp1;
26636 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26637 written |= (1 << 11);
26638 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26639 }
26640 }
26641 }
26642 }
26643 }
26644 }
26645 }
26646
26647 abuf->written = written;
26648 return vpc;
26649 #undef FLD
26650 }
26651
26652 /* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26653
26654 static SEM_PC
26655 SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26656 {
26657 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26659 int UNUSED written = 0;
26660 IADDR UNUSED pc = abuf->addr;
26661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26662
26663 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26664 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26665 frvbf_media_acc_not_aligned (current_cpu);
26666 } else {
26667 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26668 frvbf_media_register_not_aligned (current_cpu);
26669 } else {
26670 {
26671 HI tmp_argihi;
26672 HI tmp_argilo;
26673 HI tmp_argjhi;
26674 HI tmp_argjlo;
26675 {
26676 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26677 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26678 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26679 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26680 }
26681 {
26682 DI tmp_tmp1;
26683 DI tmp_tmp2;
26684 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26685 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26686 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26687 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26688 {
26689 {
26690 DI opval = MAKEDI (127, 0xffffffff);
26691 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26692 written |= (1 << 13);
26693 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26694 }
26695 frvbf_media_overflow (current_cpu, 8);
26696 }
26697 } else {
26698 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26699 {
26700 {
26701 DI opval = MAKEDI (0xffffff80, 0);
26702 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26703 written |= (1 << 13);
26704 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26705 }
26706 frvbf_media_overflow (current_cpu, 8);
26707 }
26708 } else {
26709 {
26710 DI opval = tmp_tmp1;
26711 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26712 written |= (1 << 13);
26713 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26714 }
26715 }
26716 }
26717 }
26718 {
26719 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26720 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26721 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26722 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26723 }
26724 {
26725 DI tmp_tmp1;
26726 DI tmp_tmp2;
26727 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26728 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26729 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26730 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26731 {
26732 {
26733 DI opval = MAKEDI (127, 0xffffffff);
26734 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26735 written |= (1 << 14);
26736 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26737 }
26738 frvbf_media_overflow (current_cpu, 4);
26739 }
26740 } else {
26741 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26742 {
26743 {
26744 DI opval = MAKEDI (0xffffff80, 0);
26745 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26746 written |= (1 << 14);
26747 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26748 }
26749 frvbf_media_overflow (current_cpu, 4);
26750 }
26751 } else {
26752 {
26753 DI opval = tmp_tmp1;
26754 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26755 written |= (1 << 14);
26756 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26757 }
26758 }
26759 }
26760 }
26761 }
26762 }
26763 }
26764 }
26765
26766 abuf->written = written;
26767 return vpc;
26768 #undef FLD
26769 }
26770
26771 /* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26772
26773 static SEM_PC
26774 SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26775 {
26776 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26778 int UNUSED written = 0;
26779 IADDR UNUSED pc = abuf->addr;
26780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26781
26782 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26783 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26784 frvbf_media_acc_not_aligned (current_cpu);
26785 } else {
26786 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26787 frvbf_media_register_not_aligned (current_cpu);
26788 } else {
26789 {
26790 UHI tmp_argihi;
26791 UHI tmp_argilo;
26792 UHI tmp_argjhi;
26793 UHI tmp_argjlo;
26794 {
26795 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26796 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26797 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26798 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26799 }
26800 {
26801 DI tmp_tmp1;
26802 DI tmp_tmp2;
26803 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26804 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26805 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26806 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26807 {
26808 {
26809 DI opval = MAKEDI (255, 0xffffffff);
26810 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26811 written |= (1 << 13);
26812 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26813 }
26814 frvbf_media_overflow (current_cpu, 8);
26815 }
26816 } else {
26817 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26818 {
26819 {
26820 DI opval = MAKEDI (0, 0);
26821 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26822 written |= (1 << 13);
26823 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26824 }
26825 frvbf_media_overflow (current_cpu, 8);
26826 }
26827 } else {
26828 {
26829 DI opval = tmp_tmp1;
26830 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26831 written |= (1 << 13);
26832 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26833 }
26834 }
26835 }
26836 }
26837 {
26838 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26839 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26840 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26841 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26842 }
26843 {
26844 DI tmp_tmp1;
26845 DI tmp_tmp2;
26846 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26847 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26848 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26849 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26850 {
26851 {
26852 DI opval = MAKEDI (255, 0xffffffff);
26853 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26854 written |= (1 << 14);
26855 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26856 }
26857 frvbf_media_overflow (current_cpu, 4);
26858 }
26859 } else {
26860 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26861 {
26862 {
26863 DI opval = MAKEDI (0, 0);
26864 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26865 written |= (1 << 14);
26866 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26867 }
26868 frvbf_media_overflow (current_cpu, 4);
26869 }
26870 } else {
26871 {
26872 DI opval = tmp_tmp1;
26873 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26874 written |= (1 << 14);
26875 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26876 }
26877 }
26878 }
26879 }
26880 }
26881 }
26882 }
26883 }
26884
26885 abuf->written = written;
26886 return vpc;
26887 #undef FLD
26888 }
26889
26890 /* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26891
26892 static SEM_PC
26893 SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26894 {
26895 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26897 int UNUSED written = 0;
26898 IADDR UNUSED pc = abuf->addr;
26899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26900
26901 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26902 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26903 frvbf_media_acc_not_aligned (current_cpu);
26904 } else {
26905 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26906 frvbf_media_register_not_aligned (current_cpu);
26907 } else {
26908 {
26909 HI tmp_argihi;
26910 HI tmp_argilo;
26911 HI tmp_argjhi;
26912 HI tmp_argjlo;
26913 {
26914 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26915 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26916 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26917 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26918 }
26919 {
26920 DI tmp_tmp1;
26921 DI tmp_tmp2;
26922 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26923 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26924 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26925 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26926 {
26927 {
26928 DI opval = MAKEDI (127, 0xffffffff);
26929 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26930 written |= (1 << 13);
26931 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26932 }
26933 frvbf_media_overflow (current_cpu, 8);
26934 }
26935 } else {
26936 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26937 {
26938 {
26939 DI opval = MAKEDI (0xffffff80, 0);
26940 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26941 written |= (1 << 13);
26942 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26943 }
26944 frvbf_media_overflow (current_cpu, 8);
26945 }
26946 } else {
26947 {
26948 DI opval = tmp_tmp1;
26949 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26950 written |= (1 << 13);
26951 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26952 }
26953 }
26954 }
26955 }
26956 {
26957 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26958 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26959 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26960 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26961 }
26962 {
26963 DI tmp_tmp1;
26964 DI tmp_tmp2;
26965 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26966 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26967 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26968 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26969 {
26970 {
26971 DI opval = MAKEDI (127, 0xffffffff);
26972 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26973 written |= (1 << 14);
26974 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26975 }
26976 frvbf_media_overflow (current_cpu, 4);
26977 }
26978 } else {
26979 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26980 {
26981 {
26982 DI opval = MAKEDI (0xffffff80, 0);
26983 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26984 written |= (1 << 14);
26985 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26986 }
26987 frvbf_media_overflow (current_cpu, 4);
26988 }
26989 } else {
26990 {
26991 DI opval = tmp_tmp1;
26992 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26993 written |= (1 << 14);
26994 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26995 }
26996 }
26997 }
26998 }
26999 }
27000 }
27001 }
27002 }
27003
27004 abuf->written = written;
27005 return vpc;
27006 #undef FLD
27007 }
27008
27009 /* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
27010
27011 static SEM_PC
27012 SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27013 {
27014 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
27015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27016 int UNUSED written = 0;
27017 IADDR UNUSED pc = abuf->addr;
27018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27019
27020 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
27021 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
27022 frvbf_media_acc_not_aligned (current_cpu);
27023 } else {
27024 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
27025 frvbf_media_register_not_aligned (current_cpu);
27026 } else {
27027 {
27028 UHI tmp_argihi;
27029 UHI tmp_argilo;
27030 UHI tmp_argjhi;
27031 UHI tmp_argjlo;
27032 {
27033 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27034 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27035 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27036 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27037 }
27038 {
27039 DI tmp_tmp1;
27040 DI tmp_tmp2;
27041 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27042 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27043 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27044 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27045 {
27046 {
27047 DI opval = MAKEDI (255, 0xffffffff);
27048 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27049 written |= (1 << 13);
27050 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27051 }
27052 frvbf_media_overflow (current_cpu, 8);
27053 }
27054 } else {
27055 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27056 {
27057 {
27058 DI opval = MAKEDI (0, 0);
27059 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27060 written |= (1 << 13);
27061 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27062 }
27063 frvbf_media_overflow (current_cpu, 8);
27064 }
27065 } else {
27066 {
27067 DI opval = tmp_tmp1;
27068 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27069 written |= (1 << 13);
27070 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27071 }
27072 }
27073 }
27074 }
27075 {
27076 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27077 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27078 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27079 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27080 }
27081 {
27082 DI tmp_tmp1;
27083 DI tmp_tmp2;
27084 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27085 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27086 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27087 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27088 {
27089 {
27090 DI opval = MAKEDI (255, 0xffffffff);
27091 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27092 written |= (1 << 14);
27093 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27094 }
27095 frvbf_media_overflow (current_cpu, 4);
27096 }
27097 } else {
27098 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27099 {
27100 {
27101 DI opval = MAKEDI (0, 0);
27102 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27103 written |= (1 << 14);
27104 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27105 }
27106 frvbf_media_overflow (current_cpu, 4);
27107 }
27108 } else {
27109 {
27110 DI opval = tmp_tmp1;
27111 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27112 written |= (1 << 14);
27113 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27114 }
27115 }
27116 }
27117 }
27118 }
27119 }
27120 }
27121 }
27122
27123 abuf->written = written;
27124 return vpc;
27125 #undef FLD
27126 }
27127
27128 /* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27129
27130 static SEM_PC
27131 SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27132 {
27133 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27135 int UNUSED written = 0;
27136 IADDR UNUSED pc = abuf->addr;
27137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27138
27139 {
27140 UHI tmp_tmp;
27141 if (ANDSI (FLD (f_u6), 1)) {
27142 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27143 } else {
27144 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27145 }
27146 {
27147 UHI opval = tmp_tmp;
27148 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27149 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27150 }
27151 {
27152 UHI opval = tmp_tmp;
27153 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27154 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27155 }
27156 }
27157
27158 return vpc;
27159 #undef FLD
27160 }
27161
27162 /* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27163
27164 static SEM_PC
27165 SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27166 {
27167 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27168 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27169 int UNUSED written = 0;
27170 IADDR UNUSED pc = abuf->addr;
27171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27172
27173 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27174 {
27175 UHI tmp_tmp;
27176 if (ANDSI (FLD (f_u6), 1)) {
27177 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27178 } else {
27179 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27180 }
27181 {
27182 UHI opval = tmp_tmp;
27183 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27184 written |= (1 << 7);
27185 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27186 }
27187 {
27188 UHI opval = tmp_tmp;
27189 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27190 written |= (1 << 8);
27191 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27192 }
27193 }
27194 }
27195
27196 abuf->written = written;
27197 return vpc;
27198 #undef FLD
27199 }
27200
27201 /* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27202
27203 static SEM_PC
27204 SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27205 {
27206 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27207 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27208 int UNUSED written = 0;
27209 IADDR UNUSED pc = abuf->addr;
27210 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27211
27212 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27213 frvbf_media_register_not_aligned (current_cpu);
27214 } else {
27215 {
27216 UHI tmp_tmp;
27217 {
27218 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27219 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27220 written |= (1 << 6);
27221 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27222 }
27223 if (ANDSI (FLD (f_u6), 1)) {
27224 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27225 } else {
27226 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27227 }
27228 {
27229 UHI opval = tmp_tmp;
27230 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27231 written |= (1 << 7);
27232 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27233 }
27234 {
27235 UHI opval = tmp_tmp;
27236 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27237 written |= (1 << 9);
27238 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27239 }
27240 {
27241 UHI opval = tmp_tmp;
27242 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27243 written |= (1 << 8);
27244 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27245 }
27246 {
27247 UHI opval = tmp_tmp;
27248 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27249 written |= (1 << 10);
27250 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27251 }
27252 }
27253 }
27254
27255 abuf->written = written;
27256 return vpc;
27257 #undef FLD
27258 }
27259
27260 /* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27261
27262 static SEM_PC
27263 SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27264 {
27265 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27267 int UNUSED written = 0;
27268 IADDR UNUSED pc = abuf->addr;
27269 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27270
27271 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27272 frvbf_media_register_not_aligned (current_cpu);
27273 } else {
27274 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27275 {
27276 UHI tmp_tmp;
27277 {
27278 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27279 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27280 written |= (1 << 8);
27281 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27282 }
27283 if (ANDSI (FLD (f_u6), 1)) {
27284 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27285 } else {
27286 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27287 }
27288 {
27289 UHI opval = tmp_tmp;
27290 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27291 written |= (1 << 9);
27292 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27293 }
27294 {
27295 UHI opval = tmp_tmp;
27296 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27297 written |= (1 << 11);
27298 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27299 }
27300 {
27301 UHI opval = tmp_tmp;
27302 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27303 written |= (1 << 10);
27304 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27305 }
27306 {
27307 UHI opval = tmp_tmp;
27308 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27309 written |= (1 << 12);
27310 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27311 }
27312 }
27313 }
27314 }
27315
27316 abuf->written = written;
27317 return vpc;
27318 #undef FLD
27319 }
27320
27321 /* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27322
27323 static SEM_PC
27324 SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27325 {
27326 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
27327 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27328 int UNUSED written = 0;
27329 IADDR UNUSED pc = abuf->addr;
27330 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27331
27332 {
27333 {
27334 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27335 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27336 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27337 }
27338 {
27339 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27340 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27341 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27342 }
27343 }
27344
27345 return vpc;
27346 #undef FLD
27347 }
27348
27349 /* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27350
27351 static SEM_PC
27352 SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27353 {
27354 #define FLD(f) abuf->fields.sfmt_mdpackh.f
27355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27356 int UNUSED written = 0;
27357 IADDR UNUSED pc = abuf->addr;
27358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27359
27360 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27361 frvbf_media_register_not_aligned (current_cpu);
27362 } else {
27363 {
27364 {
27365 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27366 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27367 written |= (1 << 10);
27368 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27369 }
27370 {
27371 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27372 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27373 written |= (1 << 11);
27374 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27375 }
27376 {
27377 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27378 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27379 written |= (1 << 12);
27380 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27381 }
27382 {
27383 {
27384 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27385 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27386 written |= (1 << 13);
27387 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27388 }
27389 {
27390 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27391 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27392 written |= (1 << 15);
27393 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27394 }
27395 }
27396 {
27397 {
27398 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27399 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27400 written |= (1 << 14);
27401 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27402 }
27403 {
27404 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27405 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27406 written |= (1 << 16);
27407 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27408 }
27409 }
27410 }
27411 }
27412
27413 abuf->written = written;
27414 return vpc;
27415 #undef FLD
27416 }
27417
27418 /* munpackh: munpackh$pack $FRinti,$FRintkeven */
27419
27420 static SEM_PC
27421 SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27422 {
27423 #define FLD(f) abuf->fields.sfmt_munpackh.f
27424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27425 int UNUSED written = 0;
27426 IADDR UNUSED pc = abuf->addr;
27427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27428
27429 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27430 frvbf_media_register_not_aligned (current_cpu);
27431 } else {
27432 {
27433 {
27434 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27435 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27436 written |= (1 << 6);
27437 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27438 }
27439 {
27440 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27441 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27442 written |= (1 << 7);
27443 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27444 }
27445 {
27446 {
27447 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27448 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27449 written |= (1 << 8);
27450 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27451 }
27452 {
27453 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27454 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27455 written |= (1 << 10);
27456 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27457 }
27458 {
27459 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27460 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27461 written |= (1 << 9);
27462 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27463 }
27464 {
27465 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27466 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27467 written |= (1 << 11);
27468 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27469 }
27470 }
27471 }
27472 }
27473
27474 abuf->written = written;
27475 return vpc;
27476 #undef FLD
27477 }
27478
27479 /* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27480
27481 static SEM_PC
27482 SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27483 {
27484 #define FLD(f) abuf->fields.sfmt_mdunpackh.f
27485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27486 int UNUSED written = 0;
27487 IADDR UNUSED pc = abuf->addr;
27488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27489
27490 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27491 frvbf_media_register_not_aligned (current_cpu);
27492 } else {
27493 {
27494 {
27495 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27496 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27497 written |= (1 << 8);
27498 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27499 }
27500 {
27501 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27502 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27503 written |= (1 << 9);
27504 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27505 }
27506 {
27507 {
27508 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27509 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27510 written |= (1 << 10);
27511 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27512 }
27513 {
27514 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27515 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27516 written |= (1 << 14);
27517 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27518 }
27519 {
27520 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27521 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27522 written |= (1 << 12);
27523 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27524 }
27525 {
27526 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27527 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27528 written |= (1 << 16);
27529 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27530 }
27531 }
27532 {
27533 {
27534 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27535 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27536 written |= (1 << 11);
27537 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27538 }
27539 {
27540 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27541 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27542 written |= (1 << 15);
27543 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27544 }
27545 {
27546 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27547 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
27548 written |= (1 << 13);
27549 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27550 }
27551 {
27552 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27553 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
27554 written |= (1 << 17);
27555 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27556 }
27557 }
27558 }
27559 }
27560
27561 abuf->written = written;
27562 return vpc;
27563 #undef FLD
27564 }
27565
27566 /* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27567
27568 static SEM_PC
27569 SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27570 {
27571 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27573 int UNUSED written = 0;
27574 IADDR UNUSED pc = abuf->addr;
27575 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27576
27577 {
27578 {
27579 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27580 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27581 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27582 }
27583 {
27584 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27585 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27586 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27587 }
27588 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27589 frvbf_media_register_not_aligned (current_cpu);
27590 } else {
27591 {
27592 {
27593 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27594 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27595 written |= (1 << 10);
27596 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27597 }
27598 {
27599 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27600 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27601 written |= (1 << 12);
27602 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27603 }
27604 {
27605 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27606 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27607 written |= (1 << 11);
27608 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27609 }
27610 {
27611 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27612 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27613 written |= (1 << 13);
27614 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27615 }
27616 }
27617 }
27618 }
27619
27620 abuf->written = written;
27621 return vpc;
27622 #undef FLD
27623 }
27624
27625 /* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27626
27627 static SEM_PC
27628 SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27629 {
27630 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27632 int UNUSED written = 0;
27633 IADDR UNUSED pc = abuf->addr;
27634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27635
27636 {
27637 {
27638 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27639 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27640 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27641 }
27642 {
27643 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27644 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27645 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27646 }
27647 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27648 frvbf_media_register_not_aligned (current_cpu);
27649 } else {
27650 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27651 {
27652 {
27653 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27654 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27655 written |= (1 << 12);
27656 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27657 }
27658 {
27659 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27660 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27661 written |= (1 << 14);
27662 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27663 }
27664 {
27665 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27666 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27667 written |= (1 << 13);
27668 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27669 }
27670 {
27671 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27672 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27673 written |= (1 << 15);
27674 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27675 }
27676 }
27677 }
27678 }
27679 }
27680
27681 abuf->written = written;
27682 return vpc;
27683 #undef FLD
27684 }
27685
27686 /* mhtob: mhtob$pack $FRintjeven,$FRintk */
27687
27688 static SEM_PC
27689 SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27690 {
27691 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27692 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27693 int UNUSED written = 0;
27694 IADDR UNUSED pc = abuf->addr;
27695 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27696
27697 {
27698 {
27699 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27700 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27701 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27702 }
27703 {
27704 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27705 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27706 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27707 }
27708 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27709 frvbf_media_register_not_aligned (current_cpu);
27710 } else {
27711 {
27712 {
27713 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27714 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
27715 written |= (1 << 13);
27716 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27717 }
27718 {
27719 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27720 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
27721 written |= (1 << 12);
27722 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27723 }
27724 {
27725 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27726 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
27727 written |= (1 << 11);
27728 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27729 }
27730 {
27731 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27732 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
27733 written |= (1 << 10);
27734 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27735 }
27736 }
27737 }
27738 }
27739
27740 abuf->written = written;
27741 return vpc;
27742 #undef FLD
27743 }
27744
27745 /* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27746
27747 static SEM_PC
27748 SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27749 {
27750 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27752 int UNUSED written = 0;
27753 IADDR UNUSED pc = abuf->addr;
27754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27755
27756 {
27757 {
27758 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27759 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27760 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27761 }
27762 {
27763 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27764 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27765 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27766 }
27767 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27768 frvbf_media_register_not_aligned (current_cpu);
27769 } else {
27770 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27771 {
27772 {
27773 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27774 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
27775 written |= (1 << 15);
27776 TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27777 }
27778 {
27779 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27780 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
27781 written |= (1 << 14);
27782 TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27783 }
27784 {
27785 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27786 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
27787 written |= (1 << 13);
27788 TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27789 }
27790 {
27791 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27792 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
27793 written |= (1 << 12);
27794 TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27795 }
27796 }
27797 }
27798 }
27799 }
27800
27801 abuf->written = written;
27802 return vpc;
27803 #undef FLD
27804 }
27805
27806 /* mbtohe: mbtohe$pack $FRintj,$FRintk */
27807
27808 static SEM_PC
27809 SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27810 {
27811 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27813 int UNUSED written = 0;
27814 IADDR UNUSED pc = abuf->addr;
27815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27816
27817 {
27818 {
27819 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27820 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27821 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27822 }
27823 {
27824 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27825 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27826 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27827 }
27828 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27829 frvbf_media_register_not_aligned (current_cpu);
27830 } else {
27831 {
27832 {
27833 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27834 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27835 written |= (1 << 10);
27836 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27837 }
27838 {
27839 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27840 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27841 written |= (1 << 14);
27842 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27843 }
27844 {
27845 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27846 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27847 written |= (1 << 11);
27848 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27849 }
27850 {
27851 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27852 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27853 written |= (1 << 15);
27854 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27855 }
27856 {
27857 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27858 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27859 written |= (1 << 12);
27860 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27861 }
27862 {
27863 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27864 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27865 written |= (1 << 16);
27866 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27867 }
27868 {
27869 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27870 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
27871 written |= (1 << 13);
27872 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27873 }
27874 {
27875 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27876 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
27877 written |= (1 << 17);
27878 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27879 }
27880 }
27881 }
27882 }
27883
27884 abuf->written = written;
27885 return vpc;
27886 #undef FLD
27887 }
27888
27889 /* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27890
27891 static SEM_PC
27892 SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27893 {
27894 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27896 int UNUSED written = 0;
27897 IADDR UNUSED pc = abuf->addr;
27898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27899
27900 {
27901 {
27902 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27903 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27904 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27905 }
27906 {
27907 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27908 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27909 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27910 }
27911 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27912 frvbf_media_register_not_aligned (current_cpu);
27913 } else {
27914 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27915 {
27916 {
27917 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27918 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27919 written |= (1 << 12);
27920 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27921 }
27922 {
27923 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27924 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27925 written |= (1 << 16);
27926 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27927 }
27928 {
27929 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27930 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27931 written |= (1 << 13);
27932 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27933 }
27934 {
27935 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27936 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27937 written |= (1 << 17);
27938 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27939 }
27940 {
27941 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27942 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27943 written |= (1 << 14);
27944 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27945 }
27946 {
27947 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27948 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27949 written |= (1 << 18);
27950 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27951 }
27952 {
27953 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27954 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
27955 written |= (1 << 15);
27956 TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27957 }
27958 {
27959 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27960 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
27961 written |= (1 << 19);
27962 TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27963 }
27964 }
27965 }
27966 }
27967 }
27968
27969 abuf->written = written;
27970 return vpc;
27971 #undef FLD
27972 }
27973
27974 /* mnop: mnop$pack */
27975
27976 static SEM_PC
27977 SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27978 {
27979 #define FLD(f) abuf->fields.sfmt_empty.f
27980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27981 int UNUSED written = 0;
27982 IADDR UNUSED pc = abuf->addr;
27983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27984
27985 ((void) 0); /*nop*/
27986
27987 return vpc;
27988 #undef FLD
27989 }
27990
27991 /* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27992
27993 static SEM_PC
27994 SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27995 {
27996 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
27997 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27998 int UNUSED written = 0;
27999 IADDR UNUSED pc = abuf->addr;
28000 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28001
28002 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
28003
28004 return vpc;
28005 #undef FLD
28006 }
28007
28008 /* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
28009
28010 static SEM_PC
28011 SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28012 {
28013 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
28014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28015 int UNUSED written = 0;
28016 IADDR UNUSED pc = abuf->addr;
28017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28018
28019 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
28020
28021 return vpc;
28022 #undef FLD
28023 }
28024
28025 /* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
28026
28027 static SEM_PC
28028 SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28029 {
28030 #define FLD(f) abuf->fields.sfmt_mcuti.f
28031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28032 int UNUSED written = 0;
28033 IADDR UNUSED pc = abuf->addr;
28034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28035
28036 {
28037 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
28038 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28039 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28040 }
28041
28042 return vpc;
28043 #undef FLD
28044 }
28045
28046 /* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
28047
28048 static SEM_PC
28049 SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28050 {
28051 #define FLD(f) abuf->fields.sfmt_mrdaccg.f
28052 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28053 int UNUSED written = 0;
28054 IADDR UNUSED pc = abuf->addr;
28055 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28056
28057 {
28058 SI opval = GET_H_ACCG (FLD (f_ACCGi));
28059 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28060 TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28061 }
28062
28063 return vpc;
28064 #undef FLD
28065 }
28066
28067 /* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
28068
28069 static SEM_PC
28070 SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28071 {
28072 #define FLD(f) abuf->fields.sfmt_cmmachs.f
28073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28074 int UNUSED written = 0;
28075 IADDR UNUSED pc = abuf->addr;
28076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28077
28078 {
28079 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
28080 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
28081 TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28082 }
28083
28084 return vpc;
28085 #undef FLD
28086 }
28087
28088 /* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28089
28090 static SEM_PC
28091 SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28092 {
28093 #define FLD(f) abuf->fields.sfmt_mwtaccg.f
28094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28095 int UNUSED written = 0;
28096 IADDR UNUSED pc = abuf->addr;
28097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28098
28099 {
28100 frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
28101 {
28102 USI opval = GET_H_FR_INT (FLD (f_FRi));
28103 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28104 TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28105 }
28106 }
28107
28108 return vpc;
28109 #undef FLD
28110 }
28111
28112 /* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28113
28114 static SEM_PC
28115 SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28116 {
28117 #define FLD(f) abuf->fields.sfmt_empty.f
28118 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28119 int UNUSED written = 0;
28120 IADDR UNUSED pc = abuf->addr;
28121 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28122
28123 frvbf_media_cop (current_cpu, 1);
28124
28125 return vpc;
28126 #undef FLD
28127 }
28128
28129 /* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28130
28131 static SEM_PC
28132 SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28133 {
28134 #define FLD(f) abuf->fields.sfmt_empty.f
28135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28136 int UNUSED written = 0;
28137 IADDR UNUSED pc = abuf->addr;
28138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28139
28140 frvbf_media_cop (current_cpu, 2);
28141
28142 return vpc;
28143 #undef FLD
28144 }
28145
28146 /* fnop: fnop$pack */
28147
28148 static SEM_PC
28149 SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28150 {
28151 #define FLD(f) abuf->fields.sfmt_empty.f
28152 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28153 int UNUSED written = 0;
28154 IADDR UNUSED pc = abuf->addr;
28155 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28156
28157 ((void) 0); /*nop*/
28158
28159 return vpc;
28160 #undef FLD
28161 }
28162
28163 /* Table of all semantic fns. */
28164
28165 static const struct sem_fn_desc sem_fns[] = {
28166 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28167 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28168 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28169 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28170 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28171 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28172 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28173 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28174 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28175 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28176 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28177 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28178 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28179 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28180 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28181 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28182 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28183 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
28184 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28185 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28186 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
28187 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28188 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28189 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
28190 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28191 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
28192 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28193 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28194 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28195 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28196 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28197 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28198 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28199 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28200 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28201 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28202 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28203 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28204 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28205 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28206 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28207 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28208 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28209 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28210 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28211 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28212 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28213 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28214 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28215 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28216 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28217 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28218 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28219 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28220 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28221 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28222 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28223 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28224 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28225 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28226 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28227 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28228 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
28229 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28230 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
28231 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28232 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28233 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28234 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28235 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28236 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28237 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28238 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28239 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28240 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28241 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28242 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28243 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28244 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28245 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28246 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28247 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28248 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28249 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28250 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28251 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28252 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28253 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28254 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28255 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28256 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28257 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28258 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28259 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28260 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28261 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28262 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28263 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28264 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28265 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28266 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28267 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28268 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28269 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28270 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28271 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28272 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28273 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28274 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28275 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28276 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28277 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28278 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28279 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28280 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28281 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28282 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28283 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28284 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28285 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28286 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28287 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28288 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28289 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28290 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28291 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28292 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28293 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28294 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28295 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28296 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28297 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28298 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28299 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28300 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28301 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28302 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28303 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28304 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28305 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28306 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28307 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28308 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28309 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28310 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28311 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28312 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28313 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28314 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28315 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28316 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28317 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28318 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28319 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28320 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28321 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28322 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28323 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28324 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28325 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28326 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28327 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28328 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28329 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28330 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28331 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28332 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28333 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28334 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28335 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28336 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28337 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28338 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28339 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28340 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
28341 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28342 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28343 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28344 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28345 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28346 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28347 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28348 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
28349 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28350 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28351 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
28352 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28353 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28354 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
28355 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28356 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28357 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28358 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28359 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28360 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28361 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28362 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28363 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28364 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28365 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28366 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28367 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28368 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28369 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28370 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28371 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28372 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28373 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28374 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28375 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28376 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28377 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28378 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28379 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28380 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28381 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28382 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28383 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28384 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28385 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28386 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28387 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28388 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28389 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28390 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28391 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28392 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28393 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28394 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28395 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28396 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28397 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28398 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28399 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28400 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28401 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28402 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28403 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28404 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28405 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28406 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28407 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28408 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28409 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28410 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28411 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28412 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28413 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28414 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28415 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28416 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28417 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28418 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28419 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28420 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28421 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28422 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28423 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28424 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28425 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28426 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28427 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28428 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28429 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28430 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28431 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28432 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28433 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28434 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28435 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28436 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28437 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28438 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28439 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28440 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28441 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28442 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28443 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28444 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28445 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28446 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28447 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28448 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28449 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28450 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28451 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28452 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28453 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28454 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28455 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28456 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28457 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28458 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28459 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28460 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28461 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28462 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28463 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28464 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28465 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28466 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28467 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28468 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28469 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28470 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28471 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28472 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28473 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28474 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28475 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28476 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28477 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28478 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28479 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28480 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28481 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28482 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28483 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28484 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28485 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28486 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28487 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28488 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28489 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28490 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28491 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28492 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28493 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28494 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28495 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28496 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28497 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28498 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28499 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28500 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28501 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28502 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28503 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28504 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28505 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28506 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28507 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28508 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28509 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28510 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28511 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28512 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28513 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28514 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28515 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28516 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28517 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28518 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28519 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28520 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28521 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28522 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28523 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28524 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28525 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28526 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28527 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28528 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28529 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28530 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28531 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28532 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28533 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28534 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28535 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28536 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28537 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28538 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28539 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28540 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28541 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28542 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28543 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28544 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28545 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28546 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28547 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28548 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28549 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28550 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28551 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28552 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28553 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28554 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28555 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28556 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28557 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28558 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28559 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28560 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28561 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28562 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28563 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28564 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28565 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28566 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28567 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28568 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28569 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28570 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28571 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28572 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28573 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28574 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28575 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28576 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28577 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28578 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28579 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28580 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28581 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28582 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28583 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28584 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28585 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28586 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28587 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28588 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28589 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28590 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28591 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28592 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28593 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28594 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28595 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28596 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28597 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28598 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28599 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28600 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28601 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28602 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28603 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28604 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28605 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28606 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28607 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28608 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28609 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28610 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28611 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28612 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28613 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28614 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28615 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28616 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28617 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28618 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28619 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28620 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28621 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28622 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28623 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28624 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28625 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28626 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28627 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28628 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28629 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28630 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28631 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28632 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28633 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28634 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28635 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28636 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28637 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28638 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28639 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28640 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28641 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28642 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28643 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28644 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28645 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28646 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28647 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28648 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28649 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28650 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28651 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28652 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28653 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28654 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28655 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28656 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28657 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28658 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28659 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28660 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28661 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28662 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28663 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28664 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28665 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28666 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28667 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28668 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28669 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28670 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28671 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28672 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28673 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28674 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28675 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28676 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28677 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28678 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28679 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28680 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28681 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28682 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28683 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28684 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28685 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28686 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28687 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28688 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28689 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28690 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28691 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28692 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28693 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
28694 { FRVBF_INSN_LRAI, SEM_FN_NAME (frvbf,lrai) },
28695 { FRVBF_INSN_LRAD, SEM_FN_NAME (frvbf,lrad) },
28696 { FRVBF_INSN_TLBPR, SEM_FN_NAME (frvbf,tlbpr) },
28697 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28698 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28699 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28700 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28701 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28702 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28703 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28704 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28705 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28706 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28707 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28708 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28709 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28710 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28711 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28712 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28713 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28714 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28715 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28716 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28717 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28718 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28719 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28720 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28721 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28722 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28723 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28724 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28725 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28726 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28727 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28728 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28729 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28730 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28731 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28732 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28733 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28734 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28735 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28736 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28737 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28738 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28739 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28740 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28741 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28742 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28743 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28744 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28745 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28746 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28747 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28748 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28749 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28750 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28751 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28752 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28753 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28754 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28755 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28756 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28757 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28758 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28759 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28760 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28761 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28762 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28763 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28764 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28765 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28766 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28767 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28768 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28769 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28770 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28771 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28772 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28773 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28774 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28775 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28776 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28777 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28778 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28779 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28780 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28781 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28782 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28783 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28784 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28785 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28786 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28787 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28788 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28789 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28790 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28791 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28792 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28793 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28794 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28795 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28796 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28797 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28798 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28799 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28800 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28801 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28802 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28803 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28804 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28805 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28806 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28807 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28808 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28809 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28810 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28811 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28812 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28813 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28814 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28815 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28816 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28817 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28818 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28819 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28820 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28821 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28822 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28823 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28824 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28825 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28826 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28827 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28828 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28829 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28830 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28831 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28832 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28833 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28834 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28835 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28836 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28837 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28838 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28839 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28840 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28841 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28842 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28843 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
28844 { FRVBF_INSN_MQLCLRHS, SEM_FN_NAME (frvbf,mqlclrhs) },
28845 { FRVBF_INSN_MQLMTHS, SEM_FN_NAME (frvbf,mqlmths) },
28846 { FRVBF_INSN_MQSLLHI, SEM_FN_NAME (frvbf,mqsllhi) },
28847 { FRVBF_INSN_MQSRAHI, SEM_FN_NAME (frvbf,mqsrahi) },
28848 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28849 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28850 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28851 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28852 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28853 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28854 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28855 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28856 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28857 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28858 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28859 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28860 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28861 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28862 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28863 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28864 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28865 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28866 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28867 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28868 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28869 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28870 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28871 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28872 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28873 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28874 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28875 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28876 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28877 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28878 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28879 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28880 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28881 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28882 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28883 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28884 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28885 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28886 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28887 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28888 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28889 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28890 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28891 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28892 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28893 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28894 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28895 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28896 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28897 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28898 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28899 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28900 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28901 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28902 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28903 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28904 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
28905 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28906 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28907 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
28908 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28909 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28910 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28911 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28912 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28913 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28914 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28915 { 0, 0 }
28916 };
28917
28918 /* Add the semantic fns to IDESC_TABLE. */
28919
28920 void
28921 SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28922 {
28923 IDESC *idesc_table = CPU_IDESC (current_cpu);
28924 const struct sem_fn_desc *sf;
28925 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28926
28927 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28928 {
28929 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28930 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28931 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28932 #if FAST_P
28933 if (valid_p)
28934 idesc_table[sf->index].sem_fast = sf->fn;
28935 else
28936 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28937 #else
28938 if (valid_p)
28939 idesc_table[sf->index].sem_full = sf->fn;
28940 else
28941 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28942 #endif
28943 }
28944 }
28945